Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   μπορεί να γίνει κατι τέτοιο με access (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/787-mporei-na-ginei-kati-tetoio-me-access.html)

sakis 18-10-10 23:15

μπορεί να γίνει κατι τέτοιο με access
 
εχω αυτο το προγραματακι που μου κανει την δουλεια μου.το θεμα ειναι οτι εγω τις διαστασεις
τις βγαζω απο προγραμμα της access και μετα πρεπει να τις περασω σε αυτο το προγραμα
για να βγαλω ποσες βεργες πρεπει να εχω και πως πρεπει να τις κοψω.ξερει κανεις πως δουλευει
αυτο το προγραμα,και αν ειναι δυνατον να γινει κατι τετοιο με access και πως.αν μπορει καποιος
να με βοηθησει πολυ θα το εκτιμουσα.ευχαριστο σακης.

Tasos 19-10-10 01:44

Σάκη καλημέρα!

Για να σε βοηθήσουμε, να πραγματοποιήσεις αυτό που επιθυμείς, θα πρέπει να ανεβάσεις ένα Access παράδειγμα.

Περιμένουμε να σε διαβάσουμε.

Φιλικά

Τάσος

ΥΓ.

Το συνημμένο σου διαγράφηκε γιατί το περιεχόμενο του δεν ταιριάζει στο χαραχτήρα του φόρουμ.
Στους
Κανόνες του Forum και στην ενότητα: "Πριν ζητήσετε / ρωτήσετε κάτι ακολουθήστε τους παρακάτω απλούς κανόνες" αναφέρεται το εξής:
....Οποιοδήποτε μήνυμα σχετικά με παράνομο λογισμικό ή μεθόδους εξουδετέρωσης της προστασίας λογισμικού ( ... ) καθώς και συνδέσμους (links) για ιστοσελίδες με τέτοιο περιεχόμενο....

sakis 19-10-10 17:15

εχω εναν πινακα με διαφορες διαστασεις ,που αντιστιχουν σε κοματια που πρεπει να κοπουν απο βεργες 6 μετρων. πως μπορει να κοπουν με την λιγοτερη φυρα.θελω δηλαδη μια ρουτινα πουνα τρεχει τις διαστασεις που θελω να κοψω και οταν βρησκει αυτες που"χωρανε"πιο καλα στην βεργα
να συνεχιζει με αλλα κοματια και την επομενη βεργα. ευχαριστο πολυ για την απαντηση.δεν μπορω να το στειλω σε access γιατι δεν το εχω κανει.εστειλα το προγραματακι αυτο για να καταλαβεται
τι θελω να κανω.

Meteora 19-10-10 19:11

Καλησπέρα
Αγαπητέ Σάκη, από τα γραφόμενά σου προκύπτει οτι θέλεις μια ολάκερη εφαρμογή ! Τα μέλη του Forum μπορούν να βοηθήσουν ώστε να επιλυθεί μια δυσκολία που συναντά κάποιος καθώς αναπτύσει μια εργασία.
Η ερώτησή σου είναι πολύ γενική, δεν νομίζω να πάρεις απάντηση από κάποιο μέλος. Η πρότασή μου είναι να έλθεις σε επικοινωνία με την ομάδα που διαχειρίζεται το ms-office.gr και να κάνεις μια συζήτηση μαζί τους.
Ελπίζω να βοήθησα / Νίκος Δ.

nisgia 20-10-10 02:03

Καλησπέρα Σάκη!

Αν το ερώτημά σου είναι: "Γίνεται βελτιστοποίηση κοπής στην Access;"
Η απάντηση είναι: Ναι, γίνεται!

Επειδή όμως ως θέμα είναι προκλητικά ενδιαφέρον, και επειδή ως μάστορας οφείλω να είμαι αλληλέγγυος σε μάστορα,
σου ετοίμασα μια διαδικασία (έτσι για αρχή) η οποία βασικά δεν ξέρω αν κάνει όσα υπόσχεται
αλλά τουλάχιστο για αρχή θα μας δώσει κάπως το έναυσμα για παραπέρα ανάπτυξη, έρευνα και εξέλιξη.

Σίγουρα εκεί έξω υπάρχουν άπειρες έτοιμες εφαρμογές για να κάνεις τη δουλειά σου όμως
όταν κάτι το κάνεις μόνο σου... έχει διαφορά! :001_smile:

Για να δουλέψει θα πρέπει να της δώσεις τα εξής στοιχεία:
  • Το τυποποιημένο μήκος της ράβδου σε μέτρα (όρισμα sngBarLenght).
  • Έναν πίνακα με τα μήκη των κομματιών που πρόκειται να κοπούν σε φθίνουσα σειρά (όρισμα asngPiecesLength()).
Εκείνη θα σου επιστρέψει:
  • Τον αριθμό των απαιτούμενων ράβδων (επιστρεφόμενη τιμή).
  • Έναν πίνακα με τα μήκη των κομματιών ομαδοποιημένα στις αντίστοιχες ράβδους (όρισμα asngBarPieces())
  • και αν θέλεις και το αναμενόμενο υπόλοιπο (φύρα) της κοπής σε μέτρα (προαιρετικό και ..πλεονάζον όρισμα sngWaste)

Ο κώδικάς της φαίνεται παρακάτω ενώ η διαδικασία TestCutting είναι ένα παράδειγμα κλήσης της.
Η διαδικασία εκτυπώνει τα αποτελέσματα και στο παράθυρο Immediate οπότε μπορείς για την ώρα
να βλέπεις από εκεί τα αποτελέσματα κάνοντας δοκιμές αλλάζοντας τις τιμές και το πλήθος των ζητούμενων τιμών.

Αν βρεις τα αποτελέσματα σωστά και χρήσιμα, μπορούμε στη συνέχεια να την κάνουμε
να δουλεύει και με σύνολα εγγραφών ώστε να είναι χρήσιμη στο περιβάλλον της Access.

Καλές κοπές σου εύχομαι λοιπόν και καλή συνέχεια!

Function BestCuttingBars(ByVal sngBarLenght As Single, _
asngPiecesLength() As Single, asngBarPieces() As Single, _
Optional ByRef sngWaste As Single) As Integer

'***Cutting optimization***
'By nisgia for ms-office.gr
'19-Okt-2010

Dim sngTemp As Single
Dim sngPiece As Single
Dim sngSum As Single
Dim intPos As Integer
Dim intLB As Integer
Dim intUB As Integer
Dim intBars As Integer
Dim intWastePcs As Integer
Dim i As Integer

intUB = UBound(asngPiecesLength())
intLB = LBound(asngPiecesLength())
ReDim asngBarPieces(intLB To intUB, 0 To 2)

Debug.Print "---Best---8<---Cutting----"; Now
Debug.Print
Debug.Print "Table ------------------------------"
Debug.Print vbTab; vbTab; "Item"; " Bar "; "Length(m)"; " Waste(m)"
Debug.Print vbTab; vbTab; "------------------------------"

For intPos = intLB To intUB
sngTemp = Round(asngPiecesLength(intPos), 3)

If sngTemp > 0 And sngTemp <= sngBarLenght Then
sngSum = sngSum + sngTemp
intBars = intBars + 1
asngBarPieces(intPos, 0) = intBars
asngBarPieces(intPos, 1) = sngTemp

For i = intPos + 1 To intUB
sngPiece = Round(asngPiecesLength(i), 3)
If sngPiece > 0 Then
If sngPiece > Round(sngBarLenght - sngTemp, 3) Then
'
Else
asngBarPieces(i, 0) = intBars
asngBarPieces(i, 1) = sngPiece
sngTemp = sngTemp + sngPiece
sngSum = sngSum + sngPiece
asngPiecesLength(i) = 0
End If
End If
Next i
asngBarPieces(intPos, 2) = Round(sngBarLenght - sngTemp, 3)
If asngBarPieces(intPos, 2) > 0 Then intWastePcs = intWastePcs + 1
End If
Debug.Print vbTab; vbTab; intPos + 1; _
" | " & asngBarPieces(intPos, 0); _
" | " & asngBarPieces(intPos, 1); _
Space(5 - Len(CStr(asngBarPieces(intPos, 1)))); _
" | " & asngBarPieces(intPos, 2)
Next intPos

sngWaste = Round((sngBarLenght * intBars) - sngSum, 3)
BestCuttingBars = intBars

Debug.Print vbTab; vbTab; "------------------------------"
Debug.Print "Total: "; intUB + 1; " | " & intBars; _
" | " & sngSum; " | "; sngWaste & "(" & intWastePcs & " pcs)"
End Function

Sub TestCutting()
Dim asngPieces(5) As Single 'Ο πίνακας με τα κομμάτια προς κοπή
Dim asngBarPieces() As Single 'Ο πίνακας με τα κομμάτια αντιστοιχισμένα στις βέργες
Dim intBarsNeeded As Integer 'Οι ελάχιστες απαιτητές ράβδοι
Dim sngWaste As Single 'Η ελάχιστη υπολογιζόμενη φύρα

asngPieces(0) = 5 'Πρώτο κομμάτι: 5 μέτρα
asngPieces(1) = 4.55 '...
asngPieces(2) = 4.55 '...
asngPieces(3) = 2 '...
asngPieces(4) = 1.45 '...
asngPieces(5) = 1 '...

intBarsNeeded = BestCuttingBars(6, asngPieces(), asngBarPieces(), sngWaste)
'Τώρα ο πίνακας asngBarPieces περιέχει ομαδοποιημένα τα κομμάτια στις ράβδους
'η μεταβλητή intBarsNeeded έχει τον αριθμό των απαιτούμενων ράβδων
'ενώ η μεταβλητή sngWaste το υπόλοιπο (φύρα) της κοπής
End Sub

kapetang 20-10-10 16:40

Καλησπέρα στην παρέα
Κάνοντας μία δοκιμή στον κώδικα του Γιάννη προέκυψε το αποτέλεσμα
1. Λύση
Κώδικας:

Table  ------------------------------
        Item  Bar  Length(m) Waste(m)
        ------------------------------
        1  |  1 |  3,5  |  0,5
        2  |  2 |  2,55  |  0,9
        3  |  2 |  2,55  |  0
        4  |  1 |  2    |  0
        5  |  3 |  1,45  |  3,55
        6  |  3 |  1    |  0
        ------------------------------
Total:  6  |  3 |  13,05 |  4,95(3 pcs)

Εύκολα διαπίστωσα ότι η κοπή των ράβδων θα μπορούσε να γίνει σύμφωνα και με τον ακόλουθο πίνακα.
2.Λύση
Κώδικας:

Table  ------------------------------
        Item  Bar  Length(m) Waste(m)
        ------------------------------
        1  |  2 |  3,5  |  1,5
        2  |  1 |  2,55  |  0
        3  |  3 |  2,55  |  3,45
        4  |  1 |  2    |  0
        5  |  1 |  1,45  |  0
        6  |  2 |  1    |  0
        ------------------------------
Total:  6  |  3 |  13,05 |  4,95(3 pcs)

Στο ερώτημα ποια λύση είναι καλύτερη, αφού και οι δύο χρησιμοποιούν 3 ράβδους και δίνουν ίδια φύρα 3,95 μ, χωρίς να ξέρω τη γνώμη του Σάκη, θα απαντούσα η δεύτερη που συγκεντρώνει τη φύρα σε δύο κομμάτια, αν φυσικά δεν πετιέται η φύρα.
Έτσι πιστεύω ότι ο αλγόριθμος για την επίλυση του ενδιαφέροντος και δύσκολου προβλήματος που έθεσε ο Σάκης χρειάζεται βελτίωση.

Φιλικά/Γιώργος

sakis 20-10-10 17:41

1 Συνημμένο(α)
ευχαριστω πολυ για τις απαντησεις σας.ειναι οντως αυτο που θελω να κανω.επειδη δεν γνωριζω και πολλα απο προγραμματισμο θα ηθελα αν μπορει καποιος να μου πει που θα βαλω των κωδικα στο συννημενο που θα στειλω.πρεπει να κανω καποιον πινακα η καποια φορμα;;;;;

sakis 20-10-10 17:59

θελω να αναφερω οτι εφαρμογες του εμποριου εχω αγορασει ηδη το profil αποτην εταιρια themelio και εχω και το thyrae που το δινουν δωρεαν για τρεις μηνες τα εμπορικα των προφιλ.θεωρω ομως οτι το προγραμμα που εχω φτιαξει εγω στην access ειναι (για μενα)πολυ καλυτερο γιατι ειναι ανοιχτο και μπορω να προσθεσω λειτουργειες οποτε χρειαστει.κανω εκθεσεις οπως με βολευει,κανω προσφορες πολυ πιο ομορφες ,εχω βαλει εκτος απο το κουφωμα και ρολα , σιτες,τζαμια και γενικος οποτε χρειαστει το φτιαχνω οπως θελω(με την βοηθεια και των ανθρωπων του forum). μεχρι στιγμης δουλευω τα παντα απο το δικο μου προγραμμα και αναγκαζομε να ξαναγραφω τις διαστασεις στο thyrae η στο profil για να κανω βελτιστοποιηση.τωρα με την βοηθεια σας πιστευω οτι θα το φτιαξουμε και αυτο.

kapetang 21-10-10 20:48

1 Συνημμένο(α)
Σάκη επισυνάπτω το αρχείο. Άνοιξέ το στην access

sakis 21-10-10 21:16

γιωργο ευχαριστο πολυ.ως προεπιλογη μου ειχε ανοιχτο το watch window και ως ασχετος με vb ειχα την εντυπωση οτι πρεπει να καλεσω τον κωδικα απο καποια φορμα.στο προηγουμενο μυνημα σου κανεις μια σωστη διαπιστοση για την φυρα.για να βγαλεις αυτα τα αποτελεσματα που θεωρω πιο σωστα απο αυτα του γιαννη εκανες καποια αλλαγη στον κωδικα?? (χωρις φυσικα να θελω να μειωσω τον γιαννη που αντιθετος τον ευχαριστο πολυ που ασχοληθηκε με το προβλημα μου). το μεγαλο μου ερωτημα ειναι πως θα κανω αυτον η εναν βελτιωμενο κωδικα να δουλεψει σε access???

Tasos 21-10-10 22:01

Καλησπέρα σε όλους!

Επιτρέψτε μου κάποιες παρατηρήσεις όχι προς τους κώδικες αλλά το πρακτικό αποτέλεσμα τους.

Δεν γίνονται οι κοπές με Laser :027: αλλά με δίσκους, σέγες, κορδέλες κτλ. που έχουν κάποιο πάχος πχ. 3 ή 4 χιλιοστά.
Σύμφωνα με τους κώδικες που παρουσιάστηκαν μια ράβδος 5 μέτρων μας δίνει 5 κομμάτια του ενός μέτρου. Στην πράξη όμως, μας δίνει 4 κομμάτια γιατί από το πέμπτο λείπουν 4 x 3χιλιοστά του δίσκου (4 κοπές για τα 5 κομμάτια).


Φανταστείτε ότι πρέπει να κόψετε κομμάτια αλουμινίου 50 διαφορετικών διαστάσεων που δεν έχουν συνήθως το ίδιο πλήθος.

Ο κώδικας θα πρέπει να λάβει υπόψη του όλες αυτές τις διαφορετικές παραμέτρους για να επιστρέψει το βέλτιστο αποτέλεσμα.

Όπως καταλαβαίνετε, το θέμα είναι αρκετά πολύπλοκο και αν θέλετε "κρίσιμο" αφού
ένα λογικό λάθος μπορεί να προκαλέσει μεγάλη ζημιά σε κάποιον που θα χρειαστεί να κόψει κάποια χιλιόμετρα ξύλου, αλουμινίου ή οτιδήποτε άλλου υλικού.

Το πώς και με ποια σειρά και με ποιους συνδυασμούς θα κοπούν τα κομμάτια εξαρτάται από το μήκος φυσικά αλλά και από την ποσότητα των κομματιών που αντιπροσωπεύουν ένα συγκεκριμένο μήκος.

Αν θέλετε τη γνώμη μου, βγάλτε το πρώτα σε Excel :icon_idea: όπου η επίλυση του προβλήματος θα είναι απλότερη, και στη συνέχεια το μετατρέπετε σε VB (αυτό θα έκανα εγώ αν είχα το χρόνο).

Σας εύχομαι καλή συνέχεια!

Φιλικά

Τάσος

sakis 21-10-10 22:31

τασο εισαι οπως παντα μεσα στο θεμα.το θεμα με την "φυρα"του δισκου λυνεται ευκολα με ενα ερωτημα που στον πινακα των κοματιων που θα πρεπει να κοπουν θα προσθετει σε καθε κοματι 3mm που πιανει ο δισκος και θα εχουμε σωστο τελικο αποτελεσμα. αν υπαρχει περιπτωση να γινεται εστω και με 20 σελιδες κωδικα καλυτερα να μεινουμε στην access που με τις ελαχιστες γνωσεις που εχω και την βοηθεια των παιδιων του forum πιο νωρις θα το κανουμε.για να καταλαβεις ποσο ασχετος ειμαι στο excel ουτε να το γραφω δεν ξερω.δεν το εχω ανοιξει ποτε μου. γι'αυτο αν μπορουμε ας μεινουμε στην access για να καταλαβαινουμε (εστο και λιγο) τι κανουμε.
τωρα,για οσους θελουν να βοηθησουν και δεν κατανοουν καποια "τεχνικα" πραγματα (δεν κανουμε ολοι κουφωματα) οτι χρειαζεστε μπορω να σας το περηγραψω με καθε λεπτομερια.
συγνωμη για τα ορθογραφικα εχω ξεχασει να γραφω με τους υπολογιστες,αλλα μην φοβαστε θα βελτιωθω γιατι φετος η κορη μου ειναι στην 1η ΔΗΜΟΤΙΚΟΥ

Tasos 21-10-10 22:46

Σάκη, δεν είναι τόσο απλό γιατί το τελευταίο κομμάτι από τη ράβδο ίσως να είναι στην πραγματικότητα (αν το μετρήσεις με το μέτρο) ακριβώς στο μήκος που χρειάζεσαι (άρα δεν χρειάζεται κι άλλη κοπή) ενώ συμφωνα με το ερώτημα σου θα φανεί ότι δε "χωράει" (+ 3mm) και θα σου δημιουργήσει ρετάλι!

kapetang 21-10-10 23:05

Καλησπέρα

Φίλε Τάσο δεν μπόρεσα να σκεφτώ έναν αποδεκτό αλγόριθμο για τον προσδιορισμό της βέλτιστης κοπής, γι’ αυτό και δεν έγραψα κώδικα.
Το αρχείο που ανέβασα περιέχει τον κώδικα του Γιάννη. Το ανέβασα για να βοηθήσω το Σάκη να κάνει δοκιμές.
Επειδή ήταν λίγα τα κομμάτια βρήκα (χειρονακτικά) μια άλλη λύση καλύτερη από τη λύση που παίρνουμε από τον κώδικα.
Το επισήμανα μήπως ο Γιάννης θα μπορούσε να το λάβει υπόψη του σε μια μελλοντική βελτίωση του κώδικα.
Τις απώλειες κοπής τις σκέφτηκα, αλλά δεν τις θεώρησα μεγάλο πρόβλημα, αφού μπορούμε να αυξήσουμε το μήκος κάθε κομματιού με το πάχος του κοπτικού μέσου και να το λύσουμε. Στον κώδικα το τελευταίο είναι γνωστό και δε θα προσαυξάνεται.
Σάκη νομίζω ότι μπερδεύτηκες. Εγώ δεν έγραψα κώδικα. Ο κώδικας είναι του Γιάννη.
Καλό βράδυ

Φιλικά/Γιώργος

sakis 21-10-10 23:14

τασο αυτο μπορω να το βρω δουλευοντας το προγραμμα.κοβω εδω και 25 χρονια και νομιζω οτι σ'αυτο το θεμα θα την βρω την ακρη. στατιστικα μπορει μετα απο 1μηνα π.χ. το 3mm να το κανω 4 η 2,5 , δεν ειναι τοσο δεσμευτικο αυτο.εξαλου η βελτιστοποιηση θα μου χρειαστει στο 5% περιπου του συνολου της δουλειας μου που αφορα κουφωματα σε χρωματα που δεν τα εχω στοκατισμενα.δηλαδη σε λευκο ,καφε ,και τα δυο βασικα χρωματα ξυλου παντα εχω στοκ και δεν με πειραζει αν η βελτιστοποιηση αποτυχει σε μια βεργα.ετσι κι αλλιως παντα παραγγελνω μια βεργα παραπανω απο καθε προφιλ γιατι παντα μπορει κατι να τυχει.πχ.χτυπημενη βεργα ,σου επεσε το κοματι και σταρβωσε , το τρυπισε ο βοηθος λαθος κτλ. και σε πληροφορο οτι μπορει για να τελειωσεις μια δουλεια να σου λειπει ενα κοματι και για να το παραλαβεις σε χωμα ξυλου απο το βαφειο να θες 35 μερες.δηλδη δεν το διακυνδινευεις

nisgia 22-10-10 00:14

Καλησπέρα στη παρέα!

Βλέπω πως η προσπάθειά μου άναψε φωτιές και πολύ χαίρομαι για αυτό! :icon_twisted:

Το θέμα του πάχους πριονιού/δίσκου, πιστεύω και εγώ πως είναι εύκολο στη λύση του.
Εκτός κι αν μου διαφεύγει κάτι, αν εκτός από το κομμάτι, το πάχος κοπής προστεθεί και στο υπόλοιπο της ράβδου τότε λύνεται το πρόβλημα.

Δυστυχώς σήμερα δεν είχα χρόνο για δοκιμές "επί χάρτου" αλλά αυτό που τώρα σκέφτομαι είναι πως η διαδικασία βελτιστοποίησης θα πρέπει να γίνει αναδρομική.
Για κάθε κομμάτι να καλεί τον εαυτό της με όλα τα υπόλοιπα, δημιουργώντας συνδυασμούς και να καταγράφει αυτόν που αφήνει τη μικρότερη φύρα.
Δηλαδή όπως ακριβώς σκεφτόμαστε και εμείς.

Άλλη μια σημαντική περίπτωση που πρέπει να ληφθεί υπόψη είναι η ύπαρξη κομματιών με μήκος μεγαλύτερο του τυποποιημένου (ράβδου).
Εκεί δεν έχουμε πάχος κοπής αλλά ίσως έχουμε πάχος συνδέσμου (μούφας) που θα πρέπει να αφαιρείται από υπόλοιπο της διαίρεσης μήκος κομματιού δια μήκος ράβδου. :cursing:

Είναι ομολογουμένως και αναμφίβολα δύσκολο εγχείρημα η υλοποίηση της βέλτιστης κοπής και φυσικά δεν μπορούμε να περιμένουμε βέλτιστα αποτελέσματα με την πρώτη
όμως προσωπικά το βλέπω ως προγραμματιστική πρόκληση και ακόνισμα μυαλού και με τόσα μυαλά/ξυράφια εδώ μέσα, είμαι αισιόδοξος για το τελικό αποτέλεσμα. :thumbup:

Αν τελικά τα καταφέρουμε Σάκη, ετοιμάσου για δωρεάν σίτες σε όλους τους συμμετέχοντες! :015:

Ελπίζω να επανέλθω σύντομα και με χειροπιαστά στοιχεία. :001_smile:

Τα λέμε!
Γιάννης

sakis 23-10-10 15:49

ευχαριστω ολους για το ενδιαφερων που διχνουν
 
τα προγραμματα που εχω και κανουν βαλτιστοποιηση δουλευουν απο οτι εχω καταλαβει ως εξης:στον πινακα με τα προφιλ εχουν και ενα πεδιο "μηκος βεργας", και στις ρυθμησεις εχουν ενα πεδιο "φυρα κοπης δισκου" και παιρνουν αυτα τα στοιχεια. επισης καποια προγραμματα δινουν περισοτερες επιλογες ως αποτελεσμα δηλαδη βγαζουν περισοτερες απο μια λυσεις και διαλεγεις εσυ πια σου αρεσει.παρουσιαζουν αρχικα μια φορμα σε μορφη φυλλου δεδομενων και εκει εχει τις διαφορες λυσεις.εκει βλεπεις ποσες βεργες σου χρειαζονται και το μεγαλυτερο ρεταλι που θα μεινει αν κοψεις με αυτη την λυση. πχ.μπορει να χρειαζεσαι 4 βεργες και να σου μενει ρεταλι 40cm που δυσκολα θα χρειαστει μελλοντικα, και με αλλη λυση να θες 5 βεργες αλλα να σου μενουν ρεταλια χρησιμα. θα βολευε αν εστελνα εικονες απο καποιες φορμες η εκθεσεις απο τα προγραμματα που εχω αγορασμενα?????

kapetang 25-10-10 09:49

1 Συνημμένο(α)
Καλημέρα στην παρέα

Η βάση δεδομένων που επισυνάπτεται αποτελεί μια προσπάθεια επίλυσης του ζόρικου προβλήματος βελτιστοποίησης της κοπής, που έθεσε ο Σάκης.
Α. Λίγη θεωρία
Το πρόβλημα διατυπώνεται ως εξής: Θέλουμε να κόψουμε N κομμάτια. Να προσδιοριστούν τα κομμάτια που θα κοπούν από μία ράβδο μήκους L, ώστε το ρετάλι να είναι ελάχιστο.
Θεωρητικά από τη ράβδο μπορούμε να κόψουμε 1, 2,...N τεμάχια. Δηλαδή θα πρέπει να σχηματίσουμε όλους τους συνδυασμούς των N ανά 1, 2, ..., Ν και να επιλέξουμε εκείνον που εκμεταλλεύεται καλύτερα τη ράβδο. Η αντιμετώπιση αυτή είναι πολύ χρονοβόρα.
Για τη βελτίωση της ταχύτητας τα τεμάχια ταξινομούνται κατά αύξουσα σειρά ως προς το μήκος τους. Αυτό βοηθάει στον εύκολο αποκλεισμό των αδύνατων συνδυασμών (αυτών που δε χωρούν στη ράβδο).
Στον κώδικα έχουν υλοποιηθεί οι συνδυασμοί μέχρι 15 τεμαχίων.
Στις εφαρμογές βελτιστοποίησης η αύξηση του Ν αυξάνει απότομα το χρόνο υπολογισμού . Σε δοκιμές που έκανα αν το πλήθος των τεμαχίων υπερβεί το 30 μπορεί (ανάλογα και με το PC) να υπάρξουν προβλήματα (να φαίνεται σαν να κόλλησε το PC).

Β. Συνοπτικά η εφαρμογή
Έχει τη δυνατότητα οι ράβδοι από τις οποίες θα γίνει η κοπή να έχουν διαφορετικά μήκη.
Όλη η δουλειά γίνεται στη φόρμα frmTemahiaProsKopi. Εδώ καταχωρούνται τα μήκη των τεμαχίων που θα κοπούν, επιλέγεται το μήκος της πρώτη ράβδου, το πάχος της απώλειας κοπής και αν θα χρησιμοποιήσουμε ράβδους σταθερού μήκους. Στη συνέχεια πατώντας το κουμπί «βελτιστοποίηση κοπής» γίνεται ο υπολογισμός και τα αποτελέσματα αποθηκεύονται στον πίνακα tblBestKopis και εμφανίζονται στη φόρμα frmKopis.

Κάθε κριτική και βελτίωση είναι ευπρόσδεκτη.
Σάκη κάνε δοκιμές για να δεις αν σε βολεύει, αλλά και να διαπιστώσεις μήπως μου διέφυγε κάτι. Στις λίγες δοκιμές που έκανα λειτουργεί σωστά και πρόβλημα ίσως υπάρξει στο χρόνο υπολογισμού.

Φιλικά/Γιώργος
Υ.Γ Πρώτη φορά χρησιμοποίησα την access 2007. Με εκνεύρισε. Ελπίζω να μη υπάρχει και πρόβλημα με το κόμμα στους αριθμούς.

nisgia 25-10-10 11:51

Παράθεση:

Αρχική Δημοσίευση από kapetang (Μήνυμα 4125)
Υ.Γ Πρώτη φορά χρησιμοποίησα την access 2007. Με εκνεύρισε. Ελπίζω να μη υπάρχει και προβλήματα με το κόμμα στους αριθμούς.

Μην ανησυχείς Γιώργο! Είναι φυσιολογική αντίδραση της πρώτης επαφής με το ribbon (κορδέλα).
Όταν αρχίσεις να συνηθίζεις το νέο περιβάλλον θα δεις πόσο παραγωγικό είναι.
Άσε που θα καλομάθεις με τα νέα εργαλεία. Όπως για παράδειγμα το Anchoring (καρτέλα Arrange).

Μόλις βρω χρόνο θα εξετάσω και την ...υπερπαραγωγή σου και θα επιστρέψω με σχόλια.
Με μια πρώτη και γρήγορη ματιά, τα αποτελέσματα φαίνονται σωστά και αν και είμαι σε PC με Celeron 2.4GHz,
δεν βλέπω να υπάρχει θέμα με τον χρόνο υπολογισμού.


Από μένα τουλάχιστον για την ώρα, έχεις ένα μεγάλο μπράβο που παρέχεις την ευφυΐα σου σε αυτό το ζόρικο πρόβλημα. :045:

Τα λέμε λοιπόν!
Γιάννης

sakis 25-10-10 18:56

τωρα μπηκα και ειδα τις απαντησεις σας και θελω να σας ευχαρισησω και παλι. κατεβαζω την βαση και ριχνομαι στην δουλεια.

sakis 25-10-10 20:18

δουλευει πολυ καλα με καποια παραδειγματα που εκανα,απλα εμενα μου αργει πολυ οταν του δεινω πιο πολλα απο 30 κοματια.ο Γιαννης με celeron 2.4GHz λεει οτι του δουλεψε καλα αλλα μαλλον θα το αφησε στα 30 κοματια.εγω εχω εδω εναν core2 duo E6550 στα 2,33 GHz. στα 49 κοματια κανει 1λεπτο και 13 δευτερα. με 88 κοματια που το δοκιμασα κολησε. αυτο που με παραξενευει πολυ ειναι οτι στα αγοραστα προγραμματα μου χρησημοποιει και 100% την CPU ενω στην βαση μας μενει στο 50%. φανταζομαι οτι αν μπορουσε να χρησημοποιησει η βαση το 100% της cpu θα ειχα πιο γρηγορα αποτελεσματα η ισως και να μην κολουσε στα πολλα κοματια. απο μνημη δεν υπαρχει προβλημα. μηπως πρεπει απο καπου να δωσω χρηση στην access μεχρι 100%.

sakis 25-10-10 21:06

Γιωργο στην "θεωρια" γραφεις "Στον κώδικα έχουν υλοποιηθεί οι συνδυασμοί μέχρι 15 τεμαχίων." αν καταλαβα καλα απο τον κωδικα σε καθε βεργα προσπαθει να χωρεσει μεχρι 15 κοματια. αν αυτα τα καναμε 10 πιστευεις οτι θα ηταν πιο γρηγορη η βελτιστοποιηση. το λεω αυτο γιατι το 99,99% απο τις βεργες που κοβω το πολυ να βγαλουν 6-8 κοματια. οσο το δουλευω τοσο το λατρευω.τωρα κανω εναν πινακα στο βασικο προγραμμα που θα το συνδεσω με την βαση της βελτιστοποιησης για να περνει τις κοπες κατευθειαν.ευχαριστω θερμα ολους οσους βοηθησαν και θα βοηθησουν και στη συνεχεια!!!!!!!!!

kapetang 26-10-10 11:11

Καλημέρα στην παρέα

Σάκη δεν ξέρω πως θα μπορούσα να ρυθμίσω τη ΒΔ για να χρησιμοποιεί το 100% της CPU.
Το πρόγραμμα μπορεί να συνδυάσει μέχρι 15 κομμάτια. Αν τα κομμάτια είναι μεγάλα και χωρούν λιγότερα θα συνδυάσει λιγότερα. Στην πραγματικότητα, με τον τρόπο που υπολογίζονταν τα κομμάτια που χωρούν στη ράβδο, υπολογίζονταν ένα παραπάνω.
Όταν η κοπή γίνεται από ράβδους διαφορετικού μήκους το αποτέλεσμα εξαρτάται και από τη σειρά που δίνονται τα μήκη των διαθέσιμων ράβδων. Για να πετύχουμε τα καλύτερα αποτελέσματα θα πρέπει να δίνονται σε αύξουσα σειρά μήκους, αφού η ποικιλία των κομματιών, τα οποία προσαρμόζονται στο μήκος της ράβδου, μειώνεται από ράβδο σε ράβδο.
Στο προηγούμενο μήνυμά μου διόρθωσα κάποια συντακτικά λάθη και αντικατέστησα τη βάση BestCutting με την BestCutting2.
Στη νέα βάση έκανα τις αλλαγές:
  • Βελτίωσα τον κώδικα στην παγίδευση των λαθών χρόνου εκτέλεσης.
  • Επιδιώκοντας κάποια βελτίωση της ταχύτητας, άλλαξα τον υπολογισμό του μέγιστου πλήθους των κομματιών που θα συνδυαστούν, ώστε να υπολογίζεται ακριβώς (στο PC μου ο πίνακας που υπάρχει στη ΒΔ θέλει 2,5 λεπτά).
Γιάννη ευχαριστώ πολύ για τα καλά λόγια. Το Office 2007 με κουράζει. Θα το συνηθίσω ...

Φιλικά/Γιώργος

sakis 27-10-10 18:25

γεια σε ολους. μετα απο πολλες χρησεις του προγραμματος θεωρω οτι τα παει μια χαρα. τον πινακα τον τρεχει σε 1λεπτο και 22 δευτερα.θελω να ευχαριστησω ολους για την βοηθεια τους....

sakis 27-10-10 18:40

ενα αλλο θεμα που μου δυσκολευει την ζωη ειναι το πως θα δινω τα κοματια που πρεπει να κοποπουν. για να γινω ποιο σαφης να αναφερω οτι για να γινει ενα κουφωμα και αναλογος απο το τι κουφωμα ειναι, θελει προφιλ(δηλ.βεργες) διαφορετικα μεταξυ τους.(π.χ.αλλη βεργα ειναι για την κασα,αλλη για το φυλλο αλλη για πιχακια και αλλη για αρμοκαλυπτρο.) ολες οι βεργες εχουν τον δικο τους κωδικο.εχω φτιαξει πινακα με τα κοματια που θα πρεπει να κοπουν απο τον καθε κωδικο(βεργα).αυτο που πρεπει να κανω τωρα ειναι να επιλεγω απο τον πινακα τα κοματια που πρεπει να κοπουν απο τον ενα κωδικο(π.χ.βεργες για κασα), να τα στελνω για βελτιστοποιηση, μετα να επιλεγω τα κοματια απο εναν αλλο κωδικο(π.χ.βεργες για φυλλο)κ.τ.λ.

editolis 27-10-10 20:07

Αγαπητε Φιλε Σακη,

Απο οτι καταλαβα εσυ θελεις μια πληρη εφαρμογη.

Πρεπει να απευθυνθεις σε ειδικο.

Το φορουμ εχει ειδικο τμημα για αυτες τις περιπτωσεις.

Επισης να πω και εγω ενα μπραβο στον Γιωργο για την
ολοκληρωμενη ΒΔ που σου κατασκευασε αλλα απο την
αλλη εχει ξεπερασει τα ορια του φορουμ.

Εχουμε πει να δινουμε λυσεις αλλα οχι να κατασκευαζουμε
ολοκληρωμενες εφαρμογες.

Φιλικα και χωρις παρεξηγηση απο κανεναν.

Καλη συνεχεια.

kapetang 27-10-10 21:45

Καλησπέρα στην παρέα

Φίλε Τόλη ευχαριστώ για τα καλά σου λόγια.
Συμφωνώ ότι έχουν ξεπεραστεί τα όρια του φόρουμ.
Επειδή άρχισε, νομίζω ότι θα μπορούσε να γίνει μια εξαίρεση για το φίλο μας το Σάκη.
Σάκη για να μπορέσω να βοηθήσω θα πρέπει να ανεβάσεις τον πίνακα, με τα κομμάτια που πρόκειται να κοπούν, συμπληρωμένο με πραγματικά στοιχεία (κωδικούς, μήκη, κλπ), για να δω τι τροποποιήσεις θα πρέπει να γίνουν στον κώδικα.
Καλό βράδυ

Γιώργος

sakis 28-10-10 11:32

1 Συνημμένο(α)
καλημερα σε ολους.
ανεβαζω εναν πινακα για να καταλαβετε τι γινετε.
οσο για το θεμα το forum εχω σχεδον 1 χρονο που ειμαι στην παρεα και δεν εχω δει καπου να ανφερονται ορια στις συνομιλιες μας.αν ειναι ετσι να στελνουμε προσωπικα μυνηματα σ'αυτους που μας βοηθανε και να μην τα ανεβαζουμε στο forum.το θεμα ειναι εμεις που δεν ξερουμε να μαθουμε κατι η αν δεν μαθουμε να "κλεψουμε" μια ιδεα απο καποια συζητηση και να κανουμε την δουλεια μας.ειναι σιγουρο οτι εγω δεν υπαρχει καμια περιπτωση να γραψω κωδικα σαν του γιωργου η του τασου η του τολη και πολλων αλλων "ειδικων" που υπαρχουν εδω. καποιοι απο μας ειμαστε ακομη στο "δημοτικο" και αλλοι εχουν κανει και "μεταπτυχιακα".
προσωπικα με εχουν βοηθησει πολλα ερωτηματα αλλων χρηστων , και μπορει και η δικια μου περιπτωση να βοηθησει καποιους αλλους.
ευχαριστο πολυ ολους.

kapetang 29-10-10 11:47

Καλημέρα στην παρέα

Σάκη είδα τη βάση που ανέβασες και έχω κάποιες απορίες.
Στον πίνακα με τα τεμάχια κοπής «copes_profil» υπάρχουν δύο κωδικοί «Κωδ_Προφιλ» και «Κωδ_Τυπου_Προφιλ».
Τι προσδιορίζουν αυτοί οι κωδικοί;
Τα χαρακτηριστικά της ράβδου (χρώμα, μήκος, διατομή) από ποιον κωδικό καθορίζονται;
Αν δύο ράβδοι έχουν διαφορετικό Κωδ_Προφιλ και ίδιο Κωδ_Τυπου_Προφιλ διαφέρουν στο χρώμα, στο μήκος, στη διατομή;
Στον πίνακα με τα τεμάχια που θα κοπούν λαμβάνεται υπόψη ότι οι ράβδοι μπορεί να έχουν διαφορετικό χρώμα, διατομή και μήκος;
Θα πρέπει να διευκρινιστούν τα παραπάνω και να μου στείλεις και ένα πίνακα που θα έχει τα μήκη και τον κωδικό ή τους κωδικούς που καθορίζουν το μήκος της ράβδου.
Χωρίς τα παραπάνω στοιχεία δε μπορώ να συνεχίσω.

Φιλικά/Γιώργος

sakis 29-10-10 21:08

Γεια σε ολους

{Στον πίνακα με τα τεμάχια κοπής «copes_profil» υπάρχουν δύο κωδικοί «Κωδ_Προφιλ» και «Κωδ_Τυπου_Προφιλ».
Τι προσδιορίζουν αυτοί οι κωδικοί;}

Γιωργο το "κωδ_προφιλ" ειναι ο πραγματικος κωδικος που δινει καθε εταιρεια διελασης στα προφιλ της π.χ. η κασσα της ALUMIL στην σειρα της Μ20000 ειναι ο κωδικος προφιλ Μ20002.
Το πεδιο "κωδ_τυπου_προφιλ" ειναι ενας κωδικος που εχω δημιουργισει στο προγραμμα για να καταλαβαινω τι προφιλ ειναι αυτο, ειναι στην ουσια μια περιγραφη του προφιλ. π.χ. αν ο "κωδ_προφιλ" ειναι Μ20002, τοτε στο πεδιο "κωδ_τυπου_προφιλ" θα μας βγαλει "κασα ανοιγομενου"


{Τα χαρακτηριστικά της ράβδου (χρώμα, μήκος, διατομή) από ποιον κωδικό καθορίζονται;}

Γιωργο αυτα τα χαρακτηρηστικα καθολου δεν μας ενδιαφερουν στην παρουσα φαση του προγραμματος.Για το χρωμα να σου πω οτι αν σε μια παραγγελια χρειαστει να εχουμε πιο πολλα απο ενα χρωματα δηλαδη 5 κουφωματα λευκα και 2 πρασινα , τα χωριζω σε δυο παραγγελιες, και ετσι και στην βελτιστοποιηση θα φτανει παντα ενα χρωμα για κοπες .
Το μηκος ειναι στανταρ 600cm εκτος απο ειδικα προφιλ η αν κανω εγω παραγγελια σε ειδικες διαστασεις.Στον πινακα "προφιλ almaco" εχει ενα πεδιο που ειναι το "Μετρα_βεργας" αλλα δεν το εχω φερει ακομη στον πινακα με τις κοπες γιατι δεν με ενδιεφερε ως τωρα και να σου πω την αληθεια αν θεωρηθει ως στανταρ στο προγραμμα δεν με πειραζει καθολου.θεωρησε το ως 600cm
και μην καθεσε και σκοτιζεσαι για ενα πραγμμα που μαλλον δεν θα χρειαστει ποτε.
Οσο για την διατομη δεν υπαρχει τετοιο στοιχειο στα προφιλ. π.χ.η ALUMIL δινει διατομη των προφιλ της 1,2mm ως 1,8mm , υπαρχουν και καποια πιο χοντρα για μεγαλα ανοιγματα .στις κοπες ομως δεν μας χρειαζεται αυτο το στοιχειο.Δεν επειρεαζει το μηκος κοπης η διατομη του προφιλ.


{Αν δύο ράβδοι έχουν διαφορετικό Κωδ_Προφιλ και ίδιο Κωδ_Τυπου_Προφιλ διαφέρουν στο χρώμα, στο μήκος, στη διατομή;}


Αν δύο ράβδοι έχουν διαφορετικό Κωδ_Προφιλ τοτε ειναι δυο διαφορετικα πραματα.θα σταλουν για βελτιστοποιηση ξεχωριστα.


{Στον πίνακα με τα τεμάχια που θα κοπούν λαμβάνεται υπόψη ότι οι ράβδοι μπορεί να έχουν διαφορετικό χρώμα, διατομή και μήκος}

ΟΧΙ εκτος ισως οπως ανεφερα πιο πανω για το μηκος βεργας .


{Θα πρέπει να διευκρινιστούν τα παραπάνω και να μου στείλεις και ένα πίνακα που θα έχει τα μήκη και τον κωδικό ή τους κωδικούς που καθορίζουν το μήκος της ράβδου.
Χωρίς τα παραπάνω στοιχεία δε μπορώ να συνεχίσω.}


νομιζω οτι διευκρινισα καποια πραματα . τον πινακα θα τον κανω σε λιγο και θα τον ανεβασω αλλα σου ξαναλεω οτι δεν το θεωρω σημαντικο και αν σε βολευει αστο στανταρ 600cm.
ευχαριστο πολυ Σακης.

sakis 29-10-10 21:22

γεια και παλι
 
1 Συνημμένο(α)
σ'αυτην την βαση εφερα στον πινακα και τα μετρα βεργας.

kapetang 29-10-10 23:15

Σάκη τα πεδία Κωδ_Προφιλ και Κωδ_τυπου_Προφιλ παίρνουν τιμές (26 150), (43 120), (249 40) κλπ. Διαφορετικές από αυτές που αναφέρεις στο μήνυμά σου. Έτσι μπερδεύτηκα
Με βάση ποια κριτήρια θα κατατάξω τα κομμάτια στο ίδιο προφίλ;
Αν έχουν τον ίδιο Κωδ_προφιλ (πχ 26);
Αν έχουν τον ίδιο Κωδ_τυπου_προφιλ (πχ 150);
Αν έχουν και τους δύο κωδικούς ίδιους (πχ 26 και 150);

sakis 30-10-10 07:05

κελημερα
 
με βαση τον "κωδικο προφιλ"

kapetang 31-10-10 18:09

1 Συνημμένο(α)
Καλησπέρα στην παρέα

Στο αρχείο «Koufomata.mdb», που επισυνάπτεται, έγινε συνένωση της βάσης (BestCutting.mdb) προσδιορισμού της βέλτιστης κοπής και της βάσης που δημιούργησε ο Σάκης.
Η ενοποιημένη βάση έχει ακόμα ελλείψεις.
Πιστεύω να την συμπληρώσει ο Σάκης και να την ανεβάσει σύντομα στο φόρουμ.
Κατά την ενοποίηση των βάσεων και τη δοκιμή παρατήρησα ότι, σε σπάνιες (χειρότερο από το συχνές) περιπτώσεις, τα αποτελέσματα ήταν λανθασμένα.
Ύστερα από συστηματικό και κουραστικό ψάξιμο το βρήκα :icon_hihi: και διαπίστωσα ότι στον κώδικα αντί να γράψω C(I10) έγραψα C(10) :wall:.
Το λάθος αυτό φυσικά υπήρχε και στη ΒΔ «BestCutting2.mdb» που επισυνάπτεται σε προηγούμενο μήνυμά μου, γι’ αυτό την αντικατέστησα με το «BestCutting3.mdb».
Σάκη ο πίνακας Kopes_profil και όλα τα αντικείμενα που δημιούργησα (πίνακες, ερωτήματα, φόρμες) χρησιμοποιούνται από τον κώδικα. Τυχόν αλλαγές πιθανόν να προκαλέσουν λάθη.
Η φόρμα «frmBestCutting» τροποιήθηκε για να προσαρμοστεί στο νέο περιβάλλον εργασίας.
Τα αποτελέσματα εμφανίζονται στη φόρμα «frmKopisGeniki», που εμφανίζεται αυτόματα, όταν τελειώσουν οι υπολογισμοί.
Μπορεί να υπολογιστεί η βέλτιστη κοπή για όλα τα προφίλ που περιλαμβάνονται στον πίνακα «kopis_profil» ή για ένα μόνο που επιλέγεται από πτυσσόμενο πλαίσιο.
Στο πρόγραμμα υπάρχει δυνατότητα το μήκος των ράβδων (βεργών) από τις οποίες θα κοπούν τα κομμάτια να είναι διαφορετικό, οπότε θα πρέπει να περιλαμβάνεται στον πίνακα «kopes_profil» ή (για ένα μόνο προφίλ), να δίνεται σε πλαίσια εισόδου που εμφανίζει το πρόγραμμα.
Σημειώνω επίσης, αν τα κομμάτια είναι πολλά και το μήκος τους μικρό, ο χρόνος υπολογισμού μπορεί να είναι αρκετά λεπτά.
Στον υπολογιστή μου για τα κομμάτια του πίνακα «kopes_profil» χρειάστηκαν 3 λεπτά.

Φιλικά/Γιώργος

sakis 31-10-10 19:15

γεια σε ολους
μολις μπηκα και κατεβασα το συνημμενο σου γιωργο. τωρα θα καθησω νε το δω.απλα θελησα να σε ευχαριστησω. αν εχω καποιο προβλημα θα τα πουμε.φυσικα και θα ανεβασω την βαση στο forum οταν την τελειωσω.εδω ειπαμε να ειμαστε μια παρεα.μπορει και καποιον αλλον φιλο να τον βοηθησει.
τα λεμε σε λιγο.σακης

ΑΛΕΧΑΝΔΡΟΣ 01-12-10 21:06

το thyrae κανει χρήση του
Κώδικας:

http://www.optimalprograms.com/
component

μπορω να σου στείλω καποιον κωδικα εαν χρειαζεται

kapetang 01-12-10 22:36

Καλησπέρα στην παρέα

Αλέξανδρε, δεν μπορώ να καταλάβω τι εννοείς. Μήπως θα μπορούσες να γίνεις περισσότερο αναλυτικός.

Φιλικά/Γιώργος

ΑΛΕΧΑΝΔΡΟΣ 02-12-10 08:51

στο url που αναφερα ειναι ενα DLL που μπορείτε να χρεισημοποιήσετε και απο ACCESS για βελτιστοποιηση βεργων


Η ώρα είναι 14:28.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2