Χειμερινό εξάμηνο 2022-23
- Σακαρέλλος Ιωάννης (sdi1800167)
- Μασούρας Νικόλαος (sdi1800112)
Βελτιστοποίηση πολυγωνοποίησης σημειοσυνόλου βέλτιστης επιφάνειας, ανάπτυξη εφαρμογής για τη συγκριτική αξιολόγηση των αλγορίθμων πολυγωνοποίησης και διαγωνισμός
Η εφαρμογή παίρνει ως είσοδο έναν φάκελο με αρχεία σημειοσυνόλων. Για κάθε αρχείο δοκιμάζει συνδυασμόυς αλγορίθμων που υλοποιήσαμε για τις δύο πρώτες εργασίες του μαθήματος. Για κάθε δυνατό συνδυασμό υπολογίζει τα scores και bounds, όπως αυτά ζητούνται στην εκφώνηση. Στο τέλος, επιστρέφεται (σε αρχείο εξόδου, το όνομα του οποίου δίνεται επίσης ως όρισμα στην εφαρμογή) ένας πίνακας με τα αποτελέσματα των δοκιμών. Συγκεκριμένα, αποτελέσματα δοκιμών για αρχεία ίδιου μεγέθους (σε σημεία) συνυπολογίζονται σε μία γραμμή του τελικού πίνακα. Για τις δοκιμές της εφαρμογής, χρησιμοποιούνται απο προεπιλογή οι εξής τιμές:
L = 10THRESHOLD = 0.1
Οι τιμές αυτές μπορούν να αλλάξουν από το αρχείο main/main.cpp, στις γραμμές 12 και 13 αντίστοιχα.
Όπως και στις πρώτες δύο Εργασίες, για την παραγωγή του εκτελέσιμου αρχείου evaluate, ακολουθούμε τα εξής βήματα:
- Μεταβαίνουμε στον φάκελο
build - Δίνουμε την εντολή
cmake .. -DCMAKE_BUILD_TYPE=Release - Δίνουμε την εντολή
make - Μεταβαίνουμε στον φάκελο
mainπου δημιουργήθηκε - Εκτελούμε το τελικό εκτελέσιμο αρχείο με την εντολή
./evaluateακολουθούμενη από τα κατάλληλα ορίσματα
Η εκτέλεση του προγράμματος γίνεται μέσω της εντολής $./evaluate -i <input_files_directory> -o <output_file>, όπου:
- Το
<input_file_directory>είναι το όνομα του φακέλου που περιέχει τα αρχεία εισόδου - Το
<output_file>είναι το όνομα του αρχείου στο ποίο θα γραφούν τα δεδομένα εξόδου. Προσοχή: Το αρχείο<output_file>δεν πρέπει να υπάρχει ήδη
Η βιβλιοθήκη arguments αποτελείται από τα αρχεία arguments.cpp και arguments.hpp. Υλοποιεί την κλάση arguments, που διαβάζει, επαληθεύει και αποθηκεύει τα σημεία που δίνονται από κάθε αρχείο εισόδου σε κατάλληλες δομές, όπως και στις πρώτες δύο Εργασίες του μαθήματος.
Η βιβλιοθήκη polyline αποτελείται από τα αρχεία polyline.cpp και polyline.hpp. Υλοποιεί την κλάση polyline, μέσω της οποίας γίνεται η κατασκευή της αρχικής πολυγωνικής γραμμής, όπως και στις πρώτες δύο Εργασίες του μαθήματος.
Η βιβλιοθήκη optimization αποτελείται από τα αρχεία optimization.hpp και optimization.cpp. Υλοποιεί την κλάση optimization, μέσω της οποίας μεγιστοποιείται ή ελαχιστοποιείται το εμβαδόν του πολυγώνου, όπως και στην 2η Εργασία του μαθήματος.
Δίνοντας στην εφαρμογή μας ως είσοδο τα εξής αρχεία:
euro-night-0000010.instance
euro-night-0000020.instance
euro-night-0000060.instance
euro-night-0000300.instance
stars-0000090.instance
uniform-0000010-1.instance
uniform-0000040-1.instance
uniform-0000050-1.instance
uniform-0000100-1.instance
us-night-0000030.instance
us-night-0000070.instance
us-night-0000080.instance
Παίρνουμε τα εξής αποτελέσματα:
|| local_search || simulated_annealing ||
======||===============================================||===============================================||
size || min score | max score | min bound | max bound || min score | max score | min bound | max bound ||
======||===============================================||===============================================||
10 ||0.481469 |1.63996 |0.847317 |0.092998 ||0.671886 |1.71246 |0.865146 |0.283415 ||
20 ||0.288586 |0.648327 |0.648327 |0.288586 ||0.288586 |0.673579 |0.673579 |0.288586 ||
30 ||0.270626 |0.819203 |0.819203 |0.270626 ||0.270626 |0.819203 |0.819203 |0.270626 ||
40 ||0.32684 |0.766232 |0.766232 |0.32684 ||0.32684 |0.766232 |0.766232 |0.32684 ||
50 ||0.21569 |0.781251 |0.781251 |0.21569 ||0.21569 |0.781251 |0.781251 |0.21569 ||
60 ||0.238279 |0.824618 |0.824618 |0.238279 ||0.238279 |0.824618 |0.824618 |0.238279 ||
70 ||0.211207 |0.721921 |0.721921 |0.211207 ||0.211207 |0.721921 |0.721921 |0.211207 ||
80 ||0.175371 |0.887823 |0.887823 |0.175371 ||0.175371 |0.887823 |0.887823 |0.175371 ||
90 ||0.309915 |0.727112 |0.727112 |0.309915 ||0.309915 |0.727112 |0.727112 |0.309915 ||
100 ||0.308851 |0.713752 |0.713752 |0.308851 ||0.308851 |0.713752 |0.713752 |0.308851 ||
300 ||0.221185 |0.744483 |0.744483 |0.221185 ||0.221185 |0.744483 |0.744483 |0.221185 ||
Καθώς οι στήλες min score και max score είναι αθροίσματα αποτελεσμάτων και όχι μέσοι όροι, οι τιμές τους κάποιες φορές υπερβαίνουν τη μονάδα.