Στόχος της παρούσας διπλωματικής εργασίας είναι η ανάπτυξη αλγορίθμων για την επιλογή βέλτιστης στρατηγικής προγραμματισμού έργου. Η εργασία εστιάζει στην περίπτωση του προγραμματισμού έργου με περιορισμένους πόρους, πολλαπλούς τρόπους εκτέλεσης κάθε εργασίας, και στοχαστική διάρκεια εκτέλεσης κάθε τρόπου. Η βελτιστοποίηση γίνεται με χρήση γενετικού αλγορίθμου. Η στρατηγική που αναπτύσσεται για τον προγραμματισμό έργου με τα παραπάνω χαρακτηριστικά είναι λίστα με ζεύγη εργασιών – τρόπων εκτέλεσης. Οι εργασίες προγραμματίζονται με τη σειρά που βρίσκονται στη λίστα, με τον τρόπο εκτέλεσης που περιέχεται στο ζεύγος της αντίστοιχης εργασίας. Η υπολογιστική διερεύνηση γίνεται στις συλλογές έργων της βιβλιοθήκης έργων PSPLIB για 30 εργασίες. Μελετάται η μεταβολή της προσδοκώμενης διάρκειας έργου και της τυπικής απόκλισης της διάρκειας έργου για διαφορετικές στατιστικές κατανομές διάρκειας εργασιών και για διαφορετικές τυπικές αποκλίσεις των κατανομών. Παράλληλο αποτέλεσμα με την υπολογιστική διερεύνηση του προβλήματος είναι η ανάπτυξη μια βιβλιοθήκης λογισμικού για το προγραμματισμό έργου, δομημένης κατάλληλα, ώστε να μπορεί να εφαρμοστεί σε ένα εύρος προβλημάτων προγραμματισμού έργου. Η ανάπτυξη έγινε σε γλώσσα προγραμματισμού .NET C#.
The objective of this thesis is the development of algorithms for the selection of optimal project scheduling policies and focuses in the case of stochastic multi-mode resource constrained project scheduling problem. The optimization is accomplished through the use of genetic algorithms. The policy that is used is an activity-mode list. The activities are scheduled in the order and mode provided from the list. The computational results are acquired using PSPLIB project library for 30 activities. The variations of the expected makespan and its standard deviation are computed for different distributions of activity durations and different standard deviations for each distribution. In parallel with the computation research, a software was developed to address a range of project scheduling problems, using .NET C#.