ΟΠΤΙΚΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΩΝ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Σχετικά έγγραφα
Ένα ολοκληρωμένο σύστημα για την διδασκαλία του αναθεωρημένου αλγορίθμου simplex A complete training system for teaching revised simplex algorithm

Θεωρία Αλγόριθμοι Γραμμικής Βελτιστοποίησης 3/4/2012. Lecture08 1

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΕΝΑΣ ΝΕΟΣ ΤΡΟΠΟΣ ΔΗΜΙΟΥΡΓΙΑΣ ΤΥΧΑΙΩΝ ΒΕΛΤΙΣΤΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ ΚΑΙ ΜΙΑ ΣΥΓΚΡΙΤΙΚΗ ΥΠΟΛΟΓΙΣΤΙΚΗ ΜΕΛΕΤΗ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΕΠΙΛΥΣΗ ΕΚΦΥΛΙΣΜΕΝΩΝ ΚΑΙ ΓΕΝΙΚΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ. 4.1 Επίλυση Εκφυλισμένων Γραμμικών Προβλημάτων

Οπτικοποίηση: ένας αποτελεσματικός τρόπος για την βελτίωση της κατανόησης του αλγορίθμου simplex

ΠΡΟΛΟΓΟΣ. Θεσσαλονίκη, Μάρτιος Οι συγγραφείς. Κ. Παπαρρίζος, Ν. Σαμαράς, Α. Σιφαλέρας.

ΚΕΦΑΛΑΙΟ 2 ΑΛΓΟΡΙΘΜΟΙ ΤΥΠΟΥ SIMPLEX. 2.1 Βασικές έννοιες - Ορισμοί

ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Θεωρία Αλγόριθμοι Γραμμικής Βελτιστοποίησης 28/3/2012. Lecture07 1

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΛΓΟΡΙΘΜΟΙ Ενότητα 10

Τμήμα Εφαρμοσμένης Πληροφορικής

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Επιχειρησιακή Έρευνα I

Επιχειρησιακή Έρευνα

Τμήμα Μηχανικών Πληροφορικής ΤΕ Δυϊκότητα. Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. τελευταία ενημέρωση: 1/12/2016

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Γραμμικός Προγραμματισμός Μέθοδος Simplex

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Επιχειρησιακή Έρευνα

Διαχείριση ενεργειακών πόρων & συστημάτων Πρακτικά συνεδρίου(isbn: )

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ

ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΜΕΘΟΔΟΣ SIMPLEX, διαλ. 3. Ανωτάτη Σχολή Παιδαγωγικής και Τεχνολογικής Εκπαίδευσης 29/4/2017

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

Προγραµµατισµός Η/Υ. Μέρος2

ΟΔΗΓΙΕΣ ΡΥΘΜΙΣΗΣ ΤΟΥ MICROSOFT OUTLOOK EXPRESS

ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΤΗΣ ΜΕΘΟΔΟΥ SIMPLEX

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στην επανάληψη

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 2 ΠΡΟΒΛΗΜΑΤΑ ΔΙΚΤΥΩΝ ΚΑΙ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΙ

Ανάπτυξη λογισμικού για τη διενέργεια υπολογιστικών μελετών

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

Αρχές Προγραμματισμού Υπολογιστών

Υπολογιστική πολυπλοκότητα του πρωτεύοντος αλγόριθμου εξωτερικών σημείων

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Τμήμα Μηχανικών Πληροφορικής ΤΕ Η μέθοδος Simplex. Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. τελευταία ενημέρωση: 19/01/2017

Λογισμικό διδασκαλίας των μαθηματικών της Γ Τάξης Γυμνασίου

9. O Προσομοιωτής Κβαντικού Υπολογιστή QCS

ΑΣΥΓΧΡΟΝΗ ΕΞ ΑΠΟΣΤΑΣΕΩΣ ΕΚΠΑΙ ΕΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΓΡΑΜΜΙΚΗΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Η μέθοδος Simplex. Γεωργία Φουτσιτζή-Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. Τμήμα Μηχανικών Πληροφορικής ΤΕ

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Εισαγωγή στον προγραμματισμό

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

ΜΑΘΗΜΑ: ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ-ΘΕΜΑΤΑ ΕΞΕΤΑΣΤΙΚΗΣ IΟΥΝΙΟΥ 2015

Στοχαστικές Στρατηγικές. διαδρομής (1)

z = c 1 x 1 + c 2 x c n x n

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ

Ο Αλγόριθµος της Simplex

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΛΟΓΙΣΜΙΚΟ ΠΡΟΣΟΜΟΙΩΣΗΣ ANYLOGIC

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

Πρακτικά όλα τα προβλήματα ασφαλείας οφείλονται σε λάθη στον κώδικα

3.7 Παραδείγματα Μεθόδου Simplex

Εργαστηριακή εισήγηση. «ΜΑΘΗΣΙΣ: Μία Ευφυής Διαδικτυακή Τάξη Άλγεβρας»

Προγραμματισμός και Εφαρμογές Υπολογιστών

Προγραμματισμός Υπολογιστών

Επιχειρησιακή Έρευνα I

Προγραμματισμός και Εφαρμογές Υπολογιστών

Αρχιτεκτονική Υπολογιστών Εργαστήριο

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Δομές Δεδομένων (Data Structures)

Εργαστηριακή Άσκηση 5

Ψηφιακό Σχολείο 2.0. Βασικές έννοιες Υποδομές Ηλεκτρονική Μάθηση Διαχείριση Ηλεκτρονικής Τάξης Οργάνωση Ηλεκτρονικού Μαθήματος

ΑΝΑΠΑΡΑΓΩΓΗ ΜΑΘΗΣΙΑΚΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΟ ΦΩΤΟΔΕΝΤΡΟ ΜΑΘΗΣΙΑΚΑ ΑΝΤΙΚΕΙΜΕΝΑ. Οδηγίες για Java

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Πτυχί ο στην Εφαρμοσμέ νη Πληροφορίκη

Στρατηγική ανάπτυξη δικτυακού κόμβου

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

XnetTrader: ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΕΝΕΡΓΟΠΟΙΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ σε ΔΧΣ Τερματικό

Μ Ε Ρ Ο Σ Γ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Θεωρία Αλγόριθμοι Γραμμικής Βελτιστοποίησης

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Σχεδιασμός ενός Περιβάλλοντος Δυναμικής Οπτικοποίησης Αλγορίθμων: Το σύστημα DAVE

Transcript:

ΟΠΤΙΚΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΩΝ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Λαζαρίδης Βασίλειος Παπαρρίζος Κωνσταντίνος Σαμαράς Νικόλαος Τμ. Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Εγνατία 56 54006 Θεσσαλονίκη e-mail: paparriz@uom.gr Ζησόπουλος Δημήτριος Σχολή Διοίκησης και Οικονομίας ΤΕΙ Δυτικής Μακεδονίας Κοίλα 5000 Κοζάνη e-mail: drjim@kozani.teikoz.gr ΠΕΡΙΛΗΨΗ: Παρουσιάζεται ένα εκπαιδευτικό λογισμικό για διδασκαλία εξ αποστάσεως μέσω διαδικτύου (Internet) αλγορίθμου simple για γραμμικά προβλήματα. Αναλύονται τα βασικά χαρακτηριστικά του λογισμικού με έμφαση την οπτικοποίηση το animation και την κάλυψη όλων των περιπτώσεων του αλγορίθμου simple. Λέξεις Κλειδιά: Οπτικοποίηση Αλγορίθμων Τηλεκπαίδευση Εκπαιδευτικό Λογισμικό Animation.. ΕΙΣΑΓΩΓΗ Η Επιχειρησιακή Έρευνα αποτελεί βασικό γνωστικό γνωστικό αντικείμενο σε τμήματα Οικονομικών επιστημών Διοίκησης Επιχειρήσεων Μαθηματικών και Πληροφορικής. Ένα από τα πιο σημαντικά τμήματα της Επιχειρησιακής Έρευνας αποτελεί ο Γραμμικός Προγραμματισμός. Από το 947 χρονιά που ο Dantzig [4] ανακάλυψε το γνωστό αλγόριθμο simple μέχρι σήμερα έχει γίνει σημαντική πρόοδος στη δημιουργία αλγορίθμων για το Γραμμικό Προγραμματισμό. Σε όλα τα προπτυχιακά τμήματα ο πρώτος αλγόριθμος που διδάσκεται στα πλαίσια της Επιχειρησιακής Έρευνας είναι ο αλγόριθμος του Dantzig. Ο παραδοσιακός τρόπος διδασκαλίας του αλγορίθμου simple περιλαμβάνει την αλγεβρική του μορφή δηλ. τη βηματική περιγραφή του αλγορίθμου σε μορφή tableau. Η μορφή αυτή δεν είναι ότι πιο εύκολο για να κατανοηθεί πλήρως από προπτυχιακούς φοιτητές με ελάχιστο μαθηματικό υπόβαθρο. Η ευρεία διάδοση του διαδικτύου (Internet) καθώς και η ύπαρξη σύγχρονων προγραμματιστικών εργαλείων προσφέρουν νέες εναλλακτικές προτάσεις και προσεγγίσεις για την διδασκαλία γνωστικών αντικειμένων έτσι ώστε να γίνονται περισσότερο προσιτά και κατανοητά. Μία προσέγγιση η οποία χρησιμοποιείται όλο και περισσότερο μέσω του διαδικτύου για την περιγραφή αλγορίθμων και δομών δεδομένων είναι τα προγράμματα οπτικοποίησης (software visualization). Τα κύρια χαρακτηριστικά των προγραμμάτων οπτικοποίησης κατά τους Stasko and Patterson [4] και Price et al. [0] είναι η χρήση τεχνικών οπτικοποίησης και κίνησης με σκοπό να βοηθήσει το κοινό να καταλάβει τα χαρακτηριστικά και την εκτέλεση αλγορίθμων. Οι εφαρμογές οπτικοποίησης μπορούν εύκολα να αναπαραστήσουν ένα μεγάλο εύρος χαρακτηριστικών των αλγορίθμων όπως δομές δεδομένων

[8] [2] την εφαρμογή τους [2] [3] [3] και την απόδοση τους [5] []. Σύμφωνα με τον Gallagher [6] η χρήση της οπτικοποίησης παρέχει μεταφορά εμπειριών αναπαραγωγή καταστάσεων επικέντρωση σε επιλεγμένες φάσεις ενός προβλήματος έλεγχο στην εκτέλεση των γεγονότων και των ποιοτικών χαρακτηριστικών (λεπτομέρειες ή ανάλυση) επικέντρωση της προσοχής και απομόνωση χαρακτηριστικών ειδικού ενδιαφέροντος. Ο Mayers [9] τονίζει ότι οι εφαρμογές οπτικοποίησης μπορούν να χωριστούν σε δύο κατηγορίες : i) εμφάνιση δομών δεδομένων και ii) δυναμική κίνηση αλγορίθμων. Με την εμφάνιση δομών δεδομένων παρέχεται στο χρήστη να παρακολουθήσει τις αλλαγές των δεδομένων που πραγματοποιούνται κατά την εκτέλεση των αλγορίθμων. Αντίστροφα η δυναμική κίνηση των αλγορίθμων παρέχει την παρουσίαση γραφικών εικόνων των λειτουργιών και αποτελεσμάτων τους και σημαντικών δεδομένων τους δες [] [5]. Στην εργασία μας αυτή παρουσιάζουμε την οπτικοποίηση του αλγορίθμου simple σε μορφή μητρών. Η οπτικοποίηση του αλγορίθμου simple συνδυάζει σε ενιαίο γραφικό περιβάλλον την εμφάνιση δομών δεδομένων και τη δυναμική κίνησή του. Για την σχεδίαση της εφαρμογής χρησιμοποιήθηκε η γλώσσα προγραμματισμού MS J++.0 και εκτελείται μέσω του World Wide Web. Ένα κριτήριο που λάβαμε σοβαρά υπόψη κατά τη διαδικασία του σχεδιασμού της εφαρμογής οπτικοποίησης είναι η φιλικότητα της προς το χρήστη. Η διάρθρωση της εργασίας μας είναι η ακόλουθη. Στην ενότητα 2 παρουσιάζουμε σε μητρική μορφή τον αλγόριθμο simple. Στην ενότητα 3 παρουσιάζουμε την επίλυση ενός γραμμικού προβλήματος με τον αλγόριθμο simple. Στην ενότητα 4 εξηγείται η οπτικοποίηση του αλγορίθμου. Τέλος στην ενότητα 5 αναφέρουμε τα συμπεράσματά μας και πιθανές επεκτάσεις και βελτιώσεις της εφαρμογής. 2. ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ Θεωρούμε το ακόλουθο πρόβλημα γραμμικού προγραμματισμού min c T µ. π. A = b (P.) όπου A R mn c R n b R m και T σημαίνει αναστροφή. Υποθέτουμε ότι η μήτρα Α είναι πλήρους βαθμού δηλ. rank(a) = m m n. Χρησιμοποιώντας τη διαμέριση της μήτρας Α Α = (Β Ν) και των διανυσμάτων και c T = ( B N ) c T = (c B c N ) το πρόβλημα (P.) γράφεται min µ. π. c T B B B B B + + Η μήτρα Β είναι διαστάσεων mn και αντιστρέψιμη. Ονομάζεται βασική μήτρα (basic matri). Οι στήλες της μήτρας Α που ανήκουν στη βασική μήτρα ονομάζονται βασικές στήλες (basic columns). Οι εναπομείναντες Ν = { 2 n}~b ονομάζονται μη βασικές (nonbasic columns). Η λύση που αντιστοιχεί στη βασική μήτρα Β είναι c T N N 0 N N N = b 0

B B b = = () N 0 Η λύση () ονομάζεται εφικτή (feasible) αν ισχύει 0. Σε αντίθετη περίπτωση ονομάζεται μη εφικτή (non feasible). Η δυϊκή λύση του προβλήματος δίνεται από τη σχέση s = c - w T A όπου w T T = c B B οι πολλαπλασιαστές simple και s οι δυϊκές χαλαρές μεταβλητές. Η βάση Β ονομάζεται δυϊκά εφικτή αν s 0. Πριν προχωρήσουμε στη βηματική περιγραφή του αλγορίθμου simple κρίνουμε σκόπιμο να περιγράψουμε τον υπολογισμό της τρέχουσας αντίστροφης βασικής μήτρας Bˆ. Θεωρούμε στην περιγραφή μας ότι η βασική μήτρα είναι διαστάσεων nn όπου n = 2. H τρέχουσα βασική μήτρα υπολογίζεται από τη σχέση δ β Bˆ = (2) αβ γδ γ α Επίσης η i-γραμμή της μήτρας Α συμβολίζεται με Α i. και η j-στήλη με Α.j. Στη συνέχεια παρουσιάζεται σε μορφή βημάτων ο αλγόριθμος simple. Ο πρωτεύων αλγόριθμος simple σε μορφή μητρών Βήμα 0 (Ξεκίνημα). Ξεκίνα με μια εφικτή διαμέριση (B N). Υπολόγισε τις μήτρες B N B - και τα διανύσματα B w s N = c N - w T N. Βήμα (Έλεγχος βελτιστότητας). α) Θέσε J = {j : j N s j < 0}. Αν J = δηλ. s j 0 j N STOP το τρέχον σημείο είναι βέλτιστο. Διαφορετικά επέλεξε το δείκτη l = N(t) όπου το t προσδιορίζεται από τη σχέση Η μεταβλητή l είναι εισερχόμενη. s t = min{s j : j J} (3) β) Θέσε h l = B - A.l και Ι = {i : i m h il > 0}. Αν I = STOP το πρόβλημα (P.) είναι απεριόριστο. Διαφορετικά επέλεξε την εξερχόμενη μεταβλητή από τη σχέση h B[r] rl B[i] = min{ :i I} (4) h Η μεταβλητή B[r] = k είναι εξερχόμενη. Βήμα 2 (Περιστροφή). Θέσε N(t) = k και B(r) = l. Χρησιμοποιώντας τη νέα διαμέριση (B N) υπολόγισε τη νέα βάση B - από τη σχέση (2) και τα διανύσματα B w s N. Πήγαινε στο Βήμα. Η αιτιολόγηση του αλγορίθμου simple μπορεί να βρεθεί στην αναφορά [7]. 3. ΕΠΕΞΗΓΗΜΑΤΙΚΟ ΠΑΡΑΔΕΙΓΜΑ Στην ενότητα αυτή επεξηγούμε τη λειτουργία του αλγορίθμου simple σε μορφή μητρών (matri notation) με το παρακάτω παράδειγμα il

min µ. π. 2 4 + 5 3 2 2 2 2 + Ξεκινάμε με τη διαμέριση (Β Ν) όπου Β = [3 4] και Ν = [ 2]. Η βασική μήτρα είναι B = [A.3 A. 4 ] = 0 και η αντίστροφη της βασικής μήτρας είναι Β - = Β Η βάση Β είναι πρωτεύοντος εφικτή γιατί T T B = N = ( 0 6 0 0) 0 Επίσης έχουμε w = (0 0) και s N = (-2-5). Τώρα μπορούμε να περάσουμε στον έλεγχο βελτιστότητας. Το σύνολο δεικτών J είναι J = {j : j N s j < 0} = { 2} Επειδή J το τρέχον σημείο δεν είναι βέλτιστο. Από τη σχέση (3) υπολογίζουμε το δείκτη της εισερχόμενης μεταβλητής. Θα έχουμε Άρα t = 2 και l = N(t) = 2. 3 3 0 s t = min{s j : j J} = min{-2-5} = -5 Θέτουμε = 3 h 2 B A. 2 = και I = { 2}. Από τη σχέση (4) επιλέγουμε την εξερχόμενη μεταβλητή. Θα έχουμε h B[r] rl = min{ h B[i] il 4 4 = = 0 6 0 :i I} = min{ } = 3 3 Άρα r = και η μεταβλητή B[r] = k B[] = 3 είναι εξερχόμενη. Η νέα διαμέριση που προέκυψε από την εκτέλεση του αλγόριθμου είναι Β = [2 4] και Ν = [ 3]. Η νέα αντίστροφη βασική μήτρα είναι Επίσης έχουμε Β - = / 3 0 / 3 T B = (0 / 3 8 / 3) και s N = (-/3 5/3) Στη δεύτερη επανάληψη έχουμε l = και k = 4. Άρα εισέρχεται η μεταβλητή και εξέρχεται η μεταβλητή 4. H νέα διαμέριση είναι Β = [2 ] και Ν = [4 3]. Για τη διαμέριση αυτή έχουμε s N = (/ 8/) 0 6 0

Επειδή s N 0 STOP το παρόν σημείο είναι βέλτιστο. Η βέλτιστη λύση είναι = (8/ 34/ 0 0) και η βέλτιστη αντικειμενική τιμή είναι z = -86/. 4. ΟΠΤΙΚΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΟΥ Η πλατφόρμα υλοποίησης της εφαρμογής οπτικοποίησης του αλγορίθμου simple είναι Client Server σε περιβάλλον Internet. Η εφαρμογή βρίσκεται στον υπολογιστή Server στον οποίο εκτελείται η HTTP υπηρεσία. Ο χρήστης για να εκτελέσει την εφαρμογή χρειάζεται ένα πρόγραμμα Client (Browser) είτε τον Netscape Navigator είτε τον Microsoft Internet Eplorer. Ο μοναδικός περιορισμός για την χρήση της εφαρμογής είναι η ύπαρξη νέων εκδόσεων των Browser (Netscape Navigator 4.06 ή νεώτερο και Microsoft Internet Eplorer 5.0 ή νεώτερο) για τη σωστή εμφάνιση των ελληνικών χαρακτήρων. Στις παραπάνω εκδόσεις περιλαμβάνεται η δυνατότητα εκτέλεσης εφαρμογών Java δηλ. την JVM (Java Virtual Machine) που απαιτείται για τη λειτουργία της εφαρμογής οπτικοποίησης αλγορίθμου Simple. Την εφαρμογή οπτικοποίησης την υλοποιήσαμε σε Java έκδοση. Η Java είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού (object oriented programming language) που σχεδιάστηκε από τη Sun Microsystems. Η Java παρέχει αρκετά χαρακτηριστικά που την καθιστούν ιδανική γλώσσα για την οπτικοποίηση αλγορίθμων σε δικτυακό περιβάλλον. Έχει δική της διαχείριση μνήμης έτσι ώστε να μην παρουσιάζει προβλήματα στην εξάρτηση από δείκτες (pointers) και απώλειες μνήμης. Επίσης η Java υποστηρίζει νήματα και δυναμική φόρτωση τμημάτων κώδικα από οποιοδήποτε σημείο του δικτύου. Συγκεκριμένα είναι κατάλληλη για την ανάπτυξη εφαρμογών Internet γιατί είναι ανεξάρτητη από λειτουργικά συστήματα και από διαφορετικούς τύπους υπολογιστών. Το παράθυρο της εφαρμογής δες (Εικόνα ) απαρτίζεται από τέσσερα τμήματα τα οποία παραμένουν σταθερά καθ' όλη τη διάρκεια εκτέλεσης του αλγορίθμου. Εικόνα. Τα τμήματα του παραθύρου της εφαρμογής οπτικοποίησης Αυτά είναι :

. Χώρος εμφάνισης των δομών δεδομένων και δυναμικής κίνησης του περιγραφόμενου αλγορίθμου. Στο χώρο αυτό εμφανίζονται όλες οι απαραίτητες πληροφορίες και υπολογισμοί που λαμβάνουν χώρα κατά την εκτέλεση του αλγορίθμου. 2. Χώρος περιγραφής του αλγορίθμου σε μορφή ψευδοκώδικα. 3. Περιοχή μηνυμάτων και επεξηγήσεων της λειτουργίας του αλγορίθμου. 4. Περιοχή ελέγχου της εκτέλεσης του αλγορίθμου. Περιλαμβάνει πλήκτρα συνεχούς και βηματικής εκτέλεσης του καθώς και πλήκτρο σταματήματος. Επίσης δίνεται η δυνατότητα επιλογής συγκεκριμένου γραμμικού προβλήματος από ένα pop-up menu. Η εφαρμογή λειτουργεί ως εξής. Πρώτα χρειάζεται να επιλέξουμε ένα από τα έτοιμα παραδείγματα που περιλαμβάνονται στην εφαρμογή. Αμέσως εμφανίζεται το γραμμικό πρόβλημα στο τμήμα (δες Εικόνα ). Στο σημείο αυτό ο χρήστης θα πρέπει να επιλέξει τον τρόπο που θέλει να εκτελεστεί ο αλγόριθμος. Υπάρχουν δύο επιλογές. Συνεχείς εκτέλεση (πλήκτρο Run) και βηματική εκτέλεση (πλήκτρο Net Step). Τα πλήκτρα αυτά καθώς και η επιλογή του γραμμικού προβλήματος βρίσκονται στην περιοχή ελέγχου (τμήμα 4). Στην περίπτωση που επιλεγεί συνεχείς εκτέλεση (δες Εικόνα 2) ο έλεγχος περνά στην περιοχή του ψευδοκώδικα και τονίζεται με κόκκινο χρώμα το τρέχον βήμα που εκτελείται. Ταυτόχρονα εμφανίζονται οι υπολογισμοί του τρέχοντος βήματος στο τμήμα και κατάλληλα επεξηγηματικά μηνύματα στο τμήμα 3. Η εκτέλεση θα σταματήσει με έναν από τους τρεις τρόπους: i) εντοπισμός βέλτιστου σημείου ii) προσδιορισμός απεριοριστότητας iii) πλήκτρο STOP. Εικόνα 2. Παράθυρο εκτέλεσης βήματος του αλγορίθμου simple. Στην περίπτωση που επιλεγεί βηματική εκτέλεση (δες Εικόνα 3) ο έλεγχος περνά πάλι στην περιοχή του ψευδοκώδικα και τονίζεται με κόκκινο χρώμα το βήμα 0. Στη συνέχεια

εκτελείται το βήμα 0 και οι υπολογισμοί φαίνονται στο τμήμα. Στο σημείο αυτό διακόπτεται προσωρινά η εκτέλεση του αλγορίθμου και ενεργοποιείται το πλήκτρο Net Step. Για να συνεχιστεί η εκτέλεση του επόμενου βήματος όπως περιγράφεται στο τμήμα του ψευδοκώδικα θα πρέπει ο χρήστης να πατήσει το πλήκτρο Net Step. Η εκτέλεση του αλγορίθμου θα σταματήσει πάλι με έναν από τους τρεις προηγούμενους τρόπους. Εικόνα 3. Παράθυρο εκτέλεσης βήματος 2 του αλγορίθμου simple. 5. ΣΥΜΠΕΡΑΣΜΑΤΑ Στην εργασία αυτή παρουσιάσαμε μια εφαρμογή οπτικοποίησης του αλγορίθμου Simple μέσω του διαδικτύου. Η κύρια ωφελιμότητα αυτής της εφαρμογής είναι η χρήση της ως εκπαιδευτικού εργαλείου στο γνωστικό αντικείμενο του γραμμικού προγραμματισμού. Η διδασκαλία αλγορίθμων σε συνδυασμό με την οπτικοποιημένη παρουσίαση τους καθιστούν την διαδικασία κατανόησης τους πιο εύκολη και γρήγορη σε σχέση με παραδοσιακούς τρόπους διδασκαλίας των αλγορίθμων. Κατά τη διαδικασία υλοποίησης της εφαρμογής δόθηκε ιδιαίτερη προσοχή στη σχεδίαση του γραφικού περιβάλλοντος και της παρεχόμενης πληροφορίας προς τον εκπαιδευόμενο χρήστη έτσι ώστε να μην είναι κουραστική και πολύπλοκη η παρακολούθηση της εκτέλεσης του αλγορίθμου. Στην εφαρμογή αυτή μπορούν να γίνουν περαιτέρω βελτιώσεις και επεκτάσεις. Μια σημαντική επέκταση κατά τη γνώμη μας είναι να προστεθούν περισσότεροι αλγόριθμοι επίλυσης γραμμικών προβλημάτων έτσι ώστε να καλύπτεται πλήρως η διδακτέα ύλη του γραμμικού προγραμματισμού. Επίσης κρίνουμε σκόπιμο να μπορεί να εισάγει τα δικά του γραμμικά προβλήματα ο χρήστης καθώς και να επιλέγει μεταξύ διαφορετικών κανόνων περιστροφής. Τέλος ενδιαφέρον παρουσιάζει και η ανάπτυξη εφαρμογής για τη γεωμετρική επίλυση ενός γραμμικού προβλήματος. ΒΙΒΛΙΟΓΡΑΦΙΑ []. Brown H. M. (988). "Algorithm Animation" MIT Press Cambridge MA

[2]. Brown H. M. (988). "Eploring algorithms using Balsa-II" Computer Vol. 2(5) pp. 4-36. [3]. Brown H. M. (99). "ZEUS: A system for algorithm animation and multi-view editing" In Proceedings of the IEEE Workshop on Visual Languages pp. 4-9. [4]. Dantzig B. G. (982). "Reminiscences about the Origins of Linear Programming" Operations Research Letters Vol. pp. 43-48. [5]. Duisberg A. R. (987). "Visual programming of program visualizations. A gestural interface for animating algorithms" In Proceedings of the 987 IEEE Computer Society Workshop on Visual Languages pp. 55-66. [6]. Gallagher S. R. (Ed). (995). "Computer Visualization: Graphics Techniques for Scientific and Engineering Analysis" CRC Press Inc. pp. 285-287. [7]. Heath T. M. Etheridge A. J. (992). "Visualizing the performance of parallel programs" IEEE Software Vol. 8(5) pp. 29-39. [8]. Mayers A. B. (983). "A system for displaying data structures" Computer Graphics: SIGGRAPH 83 Vol. 7(3) pp.5-25. [9]. Mayers A. B. (990). "Tainomies of visual programming and program visualization" Journal of Visual Languages and Computing Vol. () pp. 97-23. [0]. Price A. B. Baecker M. R. Small S. I. (993). "A principled taonomy of software visualization" Journal of Visual Languages and Computing Vol. 4(3) pp. 2-266. []. Rover T. D. Wright T. C. (993). "Visualizing the performance of SPMD and dataparallel programs" Journal of Parallel and Distributed Computing Vol. 8(2) pp. 29-46. [2]. Shimomoura T. Isoda S. (99). "Linked-list visualization for debugging" IEEE Software Vol. 8(3) pp. 44-5. [3]. Stasko T. J. (990). "TANGE: A framework and system for algorithm animation" Computer Vol. 23(9) pp.27-39. [4]. Stasko T. J. Patterson C. (992). "Understanding and characterizing software visualization systems" In Proceedings of the IEEE Workshop on Visual Languages pp. 3-0. [5]. Παπαρρίζος K. (999). "Γραμμικός Προγραμματισμός Αλγόριθμοι και Εφαρμογές" Εκδόσεις Ζυγός Θεσσαλονίκη.