Καλησπέρα στην παρέα
Όπως αναφέρθηκε (Θανάσης, Αλέξανδρος) ο αλγόριθμος για την επίλυση του προβλήματος της Μάρως απαιτεί τεράστιο αριθμό επαναλήψεων. Θεωρητικά 2^n , όπου n το πλήθος των κελιών που περιέχουν τους αριθμούς από τους οποίους θα σχηματιστεί το άθροισμα.
Χωρίς να ξέρω λεπτομέρειες, έχουν αναπτυχθεί αλγόριθμοι οι οποίοι περιορίζουν δραστικά το πλήθος των επαναλήψεων και δίνουν εφικτές λύσεις.
Το πρόβλημα προσομοιώνεται με την ακόλουθη εξίσωση: T1*X1+T2*X2+ …+ Tn*Xn=S των n μεταβλητών, όπου:
- Ti είναι τα κελιά που έχουν τις τιμές.
- Xi είναι μεταβλητές με τιμή 1, όταν επιλέγεται η τιμή του αντίστοιχου κελιού και 0 όταν δεν επιλέγεται.
- S Η τιμή προς την οποία θα συγκλίνει το άθροισμα.
Η παραπάνω εξίσωση είναι ακέραια γραμμική και μπορεί να λυθεί με τη μέθοδο Simlex.
Όπως διάβασα στο διαδίκτυο το πρόσθετο Solver (Επίλυση) του excel περιλαμβάνει τη μέθοδο Simlex και συνεπώς θα μπορούσε να χρησιμοποιηθεί για τη λύση του προβλήματος. Έτσι θα ξεπερνούσανε τον σκόπελο των συναρτήσεων και του κώδικα.
Αν και εγκατέστησα το πρόσθετο δε μπόρεσα να το εφαρμόσω, επειδή δε βρήκα στο διαδίκτυο λεπτομέρειες χρήσεις του στα ελληνικά. Με τα αγγλικά δεν έχω καλές σχέσεις.
Πιστεύω ότι η υπόλοιπη παρέα (Μάρω, Θανάσης, Αλέξανδρος, Τόλης ....) θα τα καταφέρει.Μια λύση «της πυρκαγιάς» είναι να εφαρμοστεί ο αλγόριθμος που δημιούργησα σε
VBA για τη βέλτιστη κοπή ράβδων, με κάποια προσαρμογή και με κάποια δυσκολία για μένα που δεν είμαι εξοικειωμένος με τα αντικείμενα του excel.
Ο αλγόριθμος έχει περιορισμούς και προκειμένου να δω αν μπορεί να εφαρμοστεί, Μάρω θα σου βάλω δύσκολα.
Αν υποθέτουμε ότι οι τιμές στα 100 περίπου κελιά είναι ταξινομημένες κατά αύξουσα σειρά και έχουμε σχηματίσει και τα μερικά αθροίσματα, ποια είναι η τάξη του κελιού που για πρώτη φορά το μερικό άθροισμα υπερβαίνει τον αριθμό προς τον οποίο θα συγκλίνει το άθροισμα;
Αυτό εξαρτάται. Αν επιλέξουμε μεγάλο αριθμό και οι τιμές στα κελιά είναι μικρές μπορεί να γίνει πχ στο 90ο κελί, οπότε τη βάψαμε. Αν όμως ισχύει το αντίθετο μπορεί να γίνει πχ στο 7ο κελί, οπότε υπάρχει λύση.
Φιλικά/Γιώργος