background image

44 

 

➢  System.Numerics 

 

Ο χώρος ονομάτων System.Numerics επεκτείνει τους βασικούς αριθμητικούς τύπους 

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

(BigInteger), μιγαδικοί αριθμοί και διανύσματα περιέχονται στο System.Numerics. 

 

2.8.5 Google OR-Tools 

 

Το  OR-Tools  είναι  μία  σουίτα  ανοιχτού  κώδικα  που  αναλαμβάνει  την  επίλυση 

προβλημάτων  γραμμικού  προγραμματισμού,  προγραμματισμού  περιορισμών,  μεικτών 

ακεραίων,  δρομολόγησης  οχημάτων  και  των  αντίστοιχων  προβλημάτων  βελτιστοποίησης. 

Αναπτύχθηκε το 2011 από τον Laurent Perron και βρήκε ιδιαίτερη επιτυχία στον παγκόσμιο 

διαγωνισμό  προγραμματισμού  περιορισμών  MiniZinc  Challenge  κατακτώντας  την  πρώτη 

θέση σε διάφορες δοκιμασίες από το 2018 έως και το 2021 [76]. 

 

Για τη μοντελοποίηση και επίλυση ενός CSP μπορεί να γίνει χρήση του επιλυτή CP-

SAT  που  προσφέρει  το  OR-Tools.  To  CP-SAT  χρησιμοποιεί  έναν  επιλυτή  Lazy  Clause 

Generation  σε  συνδυασμό  με  έναν  επιλυτή  SAT  όπως  περιγράφεται  στην  παρουσίαση 

"Search  is  Dead  Long  Live  Proof"  [72].  Η  εκτέλεση  του  επιλυτή  περιλαμβάνει  ένα  στάδιο 

προεπεξεργασίας πριν ξεκινήσει η επίλυση για τη μείωση του χώρου αναζήτησης. Στην αρχή 

της  προεπεξεργασίας  εξετάζονται  όλοι  οι  περιορισμοί  μέχρι  να  μην  είναι  δυνατές  άλλες 

αλλαγές. Οι μεταβλητές δε διαγράφονται, αλλά τα πεδία ορισμού τους μπορεί να μειωθούν. 

Όσον  αφορά  τους  περιορισμούς,  μπορούν  να  σημανθούν  ως  κενοί  αλλά  δε  μπορούν  να 

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

τους  προϋπάρχοντες  με  την  προϋπόθεση  ότι  οι  περιορισμοί  προστίθενται  μόνο  όταν 

χρειάζονται στο πρόβλημα χαρτογράφησης. Στο τέλος, όλες οι μεταβλητές αντιγράφονται στο 

μοντέλο  χαρτογράφησης  του  προβλήματος  αλλά  αντιστοιχίζονται  με  κάποιο  δείκτη  μόνο 

αυτές που χρησιμοποιούνται σε κάποιο περιορισμό. 

Αναλυτικά, η διαδικασία της προεπεξεργασίας περιλαμβάνει με τη σειρά: 

1.  Μείωση των πεδίων ορισμού και την απλοποίηση των περιορισμών 

2.  Επέκταση ή αποσύνθεση περιορισμών 

3.  Εντοπισμός ισοδυναμίας μεταβλητών και καθορισμός σχέσεων 

4.  Αντικατάσταση με κανονική αναπαράσταση 

5.  Αλλαγή μεταβλητών και έλεγχος διάδοσης