ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΘΑΛΗΣ ΚΩΔΙΚΟΣ ΕΡΓΟΥ: 1272 ΥΔΡΟΠΟΛΗ Τίτλος ερευνητικού προγράμματος: Διερεύνηση της αλληλεπίδρασης μεταξύ της Αστικής Ανάπτυξης και των Υποδομών Νερού στην πόλη με έμφαση σε καινοτόμες παρεμβάσεις κατανεμημένης διαχείρισης Παραδοτέο 3.4.3 Εγχειρίδιο χειρισμού μεθόδων ανάδειξης βέλτιστης επιλογής Έκδοση 0.1 Ημερομηνία υποβολής Παραδοτέου: 31.12.2014
Το παρόν κείμενο αποτελεί Παραδοτέο του έργου που υλοποιείται στο πλαίσιο της Πράξης «ΘΑΛΗΣ ΕΜΠ Υδρόπολις: Διερεύνηση της αλληλεπίδρασης μεταξύ της Αστικής Ανάπτυξης και των Υποδομών Νερού στην πόλη με έμφαση σε καινοτόμες παρεμβάσεις κατανεμημένης διαχείρισης».
Ταυτότητα εγγράφου Τίτλος Σχετική Ε.Ε. Σχετική Δράση Συντάχθηκε από Μέθοδος ανάδειξης βέλτιστης επιλογής: Εγχειρίδιο 3: Εργαλείο υποστήριξης επιλογής τεχνολογιών 3.4: Μέθοδος ανάδειξης βέλτιστης επιλογής Ευάγγελο Ρόζο και Χρήστο Μακρόπουλο Ελέγχθηκε από Είδος Επίπεδο Σύντομη περιγραφή Τεχνική Έκθεση Δημόσιο Αντικείμενο αυτής της δράσης είναι ο εντοπισμός της πλέον κατάλληλης μεθόδου αξιολόγησης εναλλακτικών τεχνολογιών και του πλέον κατάλληλου αλγορίθμου βελτιστοποίησης για το εν λόγω πρόβλημα. Σε αυτό το τεύχος περιγράφονται πρώτον τα βήματα σύνδεσης του MATLAB με το UWOT και ακολούθως οι χρήση της εργαλειοθήκης βελτιστοποίησης του MATLAB για την αξιολόγηση εναλλακτικών τεχνολογιών και τον καθορισμό των βέλτιστων παραμέτρων αυτών. Έκδοση Ημερομηνία Αναθεωρήθηκε από Παρατηρήσεις 0.1 15 Δεκεμβρίου 2014
Περιεχόμενα Περίληψη... 1 Exted abstract... 2 1 Εισαγωγή... 3 2 Προετοιμασία σύνδεσης UWOT με MATLAB... 3 3 Εκτέλεση UWOT μέσα από MATLAB... 4 4 Μέθοδοι ανάδειξης βέλτιστης επιλογή... 5 Παράρτημα... 6 Συνάρτηση MATLAB vectobjfunc... 7 Δέσμη εντολών MATLAB iniobjfunction... 9 Κατάλογος Πινάκων No table of figures entries found. Κατάλογος Σχημάτων Σχήμα 2-1. Εξαγωγή έργου UWOT σε αρχεία αναγνώσιμα από MATLAB.... 4 Σχήμα 2-1. Ορισμός παραμέτρων πολυστοχικού αλγορίθμου βελτιστοποίησης.... 6 Παραδοτέο 3.4.3 Σελίδα i
Περίληψη Αντικείμενο αυτής της δράσης είναι ο εντοπισμός της πλέον κατάλληλης μεθόδου αξιολόγησης εναλλακτικών τεχνολογιών και του πλέον κατάλληλου αλγορίθμου βελτιστοποίησης για το εν λόγω πρόβλημα. Σε αυτό το τεύχος περιγράφονται πρώτον τα βήματα σύνδεσης του MATLAB με το UWOT και ακολούθως οι χρήση της εργαλειοθήκης βελτιστοποίησης του MATLAB για την αξιολόγηση εναλλακτικών τεχνολογιών και τον καθορισμό των βέλτιστων παραμέτρων αυτών. Παραδοτέο 3.4.3 Σελίδα 1
Exted abstract The objective of this action is to identify the most appropriate method of assessment of alternative technologies and the most appropriate optimization algorithm for this kind of problems. During this action both conventional and evolutionary multi-objective optimization methods were studied (Genetic Algorithms, Simulated Annealing, Particle Swarm Optimisation). Multi-criteria methods do not aim for a single optimal solution, but for a set of choices for which no set can be found that outperforms / falls behind them simultaneously in all criteria (Pareto-optimality). This approach is free from the subjectivity introduced by the selection and implementation of the method that combines the criteria in conventional single objective methods. An evolutionary algorithm was suggested because these algorithms are not trapped in local minima (global optimisation techniques) and thus are suitable for problems with solutions of particularly irregular space, as the problems of the selection of technologies (in which not only the solution changes but also the structure of the problem to be solved). The most appropriate algorithms were implemented and integrated with the tool that simulates the urban water cycle in order to allow the user to select the best technologies for given optimization criteria under scenarios of climate trs. This report describes the steps for connecting the MATLAB with UWOT and then, the use of MATLAB Optimization Toolbox for evaluating alternative technologies and determining of optimal values for these parameters. Παραδοτέο 3.4.3 Σελίδα 2
1 Εισαγωγή Στο τεύχος αυτό παρουσιάζεται ο τρόπος που συνδέεται το μοντέλο προσομοίωσης κύκλου νερού με το MATLAB έτσι ώστε να χρησιμοποιηθούν οι αλγόριθμοι ολικής και πολυστοχικής βελτιστοποίησης που προσφέρει. Στο τέλος του τεύχους παρέχεται σε παράρτημα ο κώδικας που αναπτύχθηκε για να επιτευχθεί αυτή η σύνδεση. To MATLAB Optimization Toolbox παρέχει λειτουργίες για την εύρεση των παραμέτρων που ελαχιστοποιούν ή μεγιστοποίηση τους στόχους ενός προβλήματος, ενώ τατυτόχρονα ικανοποιεί τους περιορισμούς. Η εργαλειοθήκη περιλαμβάνει επιλυτές για απλό γραμμικό προγραμματισμό, γραμμικό προγραμματισμό μικτού ακέραιου, τετραγωνικό προγραμματισμό, μη γραμμική βελτιστοποίηση, και μη γραμμική βελτιστοποίηση ελαχίστων τετραγώνων. Προσφέρονται επιλυτές που μπορούν να βρούνε τις βέλτιστες λύσεις τόσο για συνεχή και όσο και για διακριτά προβλήματα. Επίσης προσφέρονται εργαλεία για ανάλυση συμβιβασμού (trade-off) μεταξύ ανταγωνιστικών στόχον. Τέλος προσφέρεται η δυνατότητα ενσωμάτωσης των μεθόδων βελτιστοποίησης σε αλγορίθμους και εφαρμογές του χρήστη (η δυνατότητα αυτή αναλύεται εδώ). Τα βασικά χαρακτηριστικά MATLAB Optimization Toolbox του είναι: Μη γραμμική και πολυκριτηριακή βελτιστοποίηση. Επιλυτές για μη γραμμική βελτιστοποίηση ελαχίστων τετραγώνων. Προσαρμογή σε τα δεδομένα τοποθέτηση. Επίλυση μη γραμμικών εξισώσεων. Τετραγωνικός και γραμμικός προγραμματισμού. Γραμμικός προγραμματισμός μικτή-ακέραιου. Παραθυριακή εφαρμογή για τον καθορισμό και την επίλυση προβλημάτων βελτιστοποίησης και την παρακολούθηση της προόδου του επιλυτή. Παράλληλη επεξεργασία. 2 Προετοιμασία σύνδεσης UWOT με MATLAB Το πρώτο βήμα που πρέπει να γίνει είναι η εξαγωγή ενός έργου του UWOT σε μορφή αρχείων που είναι εύκολα αναγνώσιμη και επεξεργάσιμη από το MATLAB. Τα αρχεία αυτά περιλαμβάνουν: Συσκευές δικτύου. Το αρχείο αυτό δίνει τις συσκευές του δικτύου και τις παραμέτρους αυτών. Παραδοτέο 3.4.3 Σελίδα 3
Σύνδεση συσκευών. Το αρχείο αυτό περιγραφει πως οι διάφορες συσκευές συνδέονται μεταξύ τους. Μαζί με το προηγούμενο περιγράφουν την τοπολογία του δικτύου. Τεχνικά χαρακτηριστικά το αρχείο αυτό δίνει τα τεχνικά χαρακτηριστικά των συσκευών. Χρονοσειρές εισόδου. Η βροχόπτωση, θερμοκρασία, ζήτηση παρέχονται ως ανεξάρτητα αρχεία μορφής csv. Σχήμα 2-1. Εξαγωγή έργου UWOT σε αρχεία αναγνώσιμα από MATLAB. 3 Εκτέλεση UWOT μέσα από MATLAB Για να μπορεί το UWOT να εκτελεστεί από την γραμμή εντολών του MATLAB πρέπει αυτό να χτιστεί σε μορφή mex. Αυτό δημιουργεί στην ουσία μια νέα εντολή στο MATLAB (βλ. παράδειγμα κλήσης του mxuwot στο Παράρτημα Συνάρτηση MATLAB vectobjfunc). Το χτίσιμο γίνεται με την ακόλουθη εντολή: Παραδοτέο 3.4.3 Σελίδα 4
mex mxuwot.c simulation.c components.c Επίσης πρέπει να υποδειχθεί στο MATLAB η διαδρομή του φακέλου που περιέχει το αρχείο μορφής mex. addpath ('c:/dev/uwot_engine/') Ακολούθως μεταβαίνουμε στον φάκελο με το υπό μελέτη έργο που δημιουργήθηκε μέσα από το UWOT. cd('u:/projects/hydropolis/models/matlab/') Φορτώνουμε στο MATLAB τα δεδομένα του έργου, ορίζουμε τις παραμέτρους προς βελτιστοποίηση και τις εξόδους του UWOT που θα χρησιμοποιηθούν στη στοχική συνάρτηση. Όλα αυτά επιτυγχάνονται με τη δέσμη εντολών iniobjfunction (την οποία ο χρήστης ενημερώνει κατάλληλα βλ. Παράρτημα ). iniobjfunction Τέλος πρέπει να συνταχθεί η στοχική συνάρτηση χρησιμοποιώντας την έξοδο της συνάρτησης vectobjfunc (βλ. Παράρτημα). Στο Παράρτημα δίνεται παράδειγμα μιας μονοστόχικής συνάρτησης (βλ. objfunct) και πολυστοχικής συνάρτησης (βλ. mobjfunct). 4 Μέθοδοι ανάδειξης βέλτιστης επιλογή Εκκινούμε το εργαλείο βελτιστοποίησης του MATLAB και επιλέγουμε τις κατάλληλες ρυθμίσεις. optimtool Το εργαλείο αυτό προσφέρει μια μεγάλη επιλογή από αλγορίθμους βελτιστοποίησης. Σαν πρώτη προσέγγιση μπορεί να χρησιμοποιηθεί ο μονοστοχικός αλγόριθμος fminunc, ο οποίος βασίζεται στις παραγώγους της στοχικής συνάρτησης για την εύρεση του ελαχίστου. Μια τεχνική για τη βελτίωση της απόδοσης αυτού του αλγορίθμου είναι να διαιρεθούν όλες οι παράμετροι το προβλήματος με κατάλληλη σταθέρα για να αυξηθεί η ευαισθησία του υπολογισμού της κλίσης της στοχικής συνάρτησης (gradient). Η ανάγκη για την τεχνική αυτή προκύπτει λόγω του αριθμητικού υπολογισμού της κλίσης ο οποίος γίνεται ως εξής: α) υπολογίζεται η τιμή της στοχικής συνάρτησης για ένα σύνολο παραμέτρων, β) αυξάνεται μία παράμετρος κατά μια απειροελάχιστη ποσότητα και υπολογίζεται ξανά η τιμή της στοχικής συνάρτησης, γ) επαναλαμβάνεται το προηγούμενο βήμα για όλες τις παραμέτρους του προβλήματος. Αν η στοχική συνάρτηση είναι σχετικά αδρανής (απαιτεί σημαντική μεταβολή της τιμής των παραμέτρων για να μεταβληθεί) τότε είναι πιθανό ότι η αριθμητική μέθοδος δεν θα μπορεί να υπολογίσει σωστά την κλίση (στην ουσία θα ερμηνεύει ως μηδενική μια μικρή αλλά υπαρκτή κλίση). Μικραίνοντας τις παραμέτρους κατά μερικές τάξεις μεγέθους και επαναφέροντας αυτές στις ονομαστικές τιμές εντός της στοχικής συνάρτησης, έχει ως αποτέλεσμα την μεγαλύτερη αύξηση μιας παραμέτρου στο βήμα β) του υπολογισμού της κλίσης της στοχικής και άρα στον καλύτερο υπολογισμό αυτής στις περιοχές που είναι πολύ ήπια. Παραδοτέο 3.4.3 Σελίδα 5
Ακολούθως πιο εξελιγμένοι αλγόριθμοι μπορούν να δοκιμαστούν όπως ο μονοστοχικός γενετικός αλγόριθμος ga. Μια ενδιαφέρουσα δυνατότητα αυτού του αλγορίθμου είναι να οριστούν οι παράμετροι πού είναι ακέραιο αριθμοί. Αυτό βοηθάει σημαντικά την εύρεση της ελάχιστης τιμής. Τέλος, μπορεί να χρησιμοποιηθεί η πολυστοχική έκδοση του αλγόριθμου ga προσφέρει μια ολιστική προσέγγιση στο πρόβλημα της βελτιστοποίησης. Ορισμός μεθόδου βελτιστοποίησης: γενετικός πολυστοχικός αλγόριθμος Ορισμός πολυστοχικής συνάρτησης και αριθμού παραμέτρων. Ορισμός ορίων παραμέτρων προς βελτιστοποίηση. Σχήμα 4-1. Ορισμός παραμέτρων πολυστοχικού αλγορίθμου βελτιστοποίησης. Παράρτημα Συνάρτηση MATLAB objfunc function ret= objfunct(varvals) global inistep finstep ObsSeries maxvalues=repmat(max(obsseries(inistep:finstep,:)),finstepinistep+1,1); tmp= vectobjfunc(varvals)./maxvalues; Sim= [(1:length(tmp(:)))' tmp(:)]; tmp= ObsSeries(inistep:finstep,:)./maxvalues; Obs= [(1:length(tmp(:)))' tmp(:)]; Παραδοτέο 3.4.3 Σελίδα 6
ret=double(1-nashsutcliffe(obs, Sim)); Συνάρτηση MATLAB mobjfunc function [ret]= mobjfunct(varvals) global inistep finstep HydronomeasSeries ret= sum(abs(hydronomeasseries(inistep:finstep,:)- vectobjfunc(varvals))); Συνάρτηση MATLAB vectobjfunc function [ret]= vectobjfunc(varvals) %[ret]= vectobjfunc(varvals) % This function returns the values of logged signals (or logged water volume) % and of logged energy that correspond to the ids of components and groups % defined in the global variables idloggers and idgroupsnrg % (see iniobjfunction). % %Arguments are: % 1. The vector with the parameter/intercept values followed by the values of % the slope coefficients. % % Copyright: Evangelos Rozos % Created: 31 Oct 2014 global idcompparam idsplitslopes idsresrvs Globals... inistep finstep idloggers idgroupsnrg % Check arguments if (nargin ~= 1 ) error( 'Usage: objfunc(varvals)' ); % Check if global variables are defined if (~exist('idcompparam', 'var') ~exist('idsplitslopes', 'var')... ~exist('idsresrvs', 'var') ~exist('globals', 'var') ) error('please run iniobjfunction first!') % Sanity checks if ( length(unique(idcompparam))~=length(idcompparam) ) error('only one intercept per splitter!') Παραδοτέο 3.4.3 Σελίδα 7
if ( length(varvals) ~= (length(idcompparam)+length(idsplitslopes)) ) error('wrong number of variables!') if ( length(idsresrvs) ~= length(idsplitslopes) ) error('wrong number of reservoir id pairs!') % Extract parameter and slope values paramvals= varvals(1:length(idcompparam)); slopevals= varvals(length(idcompparam)+1 : length(varvals) ); % Apply the intercept values to the parameter of the corresponding splitter for i=1:length(idcompparam) Globals= setcompparam(globals, idcompparam(i), paramvals(i)); % Apply the slope values to the coefficients of the corresponding splitter for i=1:length(idsplitslopes) for icm=1:globals.ncm if Globals.CM(icm).id==idSplitSlopes(i) if samenumbers(globals.cm(icm).reserv_ids, idsresrvs{i} ) Globals.CM(icm).beta=slopevals(i); % Run simulation Outs=mxUWOT(Globals, finstep, inistep, finstep); % Get simulation results defined by global variables ret=[]; for i=1:length(idloggers) logseries=getseries(outs, idloggers(i), 1); if isempty(logseries) disp( idloggers(i)) error('series with previous id not found!') ret=[ret logseries]; for i=1:length(idgroupsnrg) nrgseries=getts(outs.nrgpot, idgroupsnrg(i)); if isempty(nrgseries) disp( idgroupsnrg(i)) error('group with previous id not found!') ret=[ret nrgseries]; function ret= samenumbers(a, b) %ret= samenumbers(a, b) % Returns true if a and b arrays contain exactly the same numbers (regardless Παραδοτέο 3.4.3 Σελίδα 8
% the order). c= intersect(a,b); ret = (sum(a)==sum(b) && sum(b)==sum(c)); Δέσμη εντολών MATLAB iniobjfunction clear global idcompparam idsplitslopes idsresrvs Globals... inistep finstep idloggers idgroupsnrg % Project path, initial step, finalstep, time step in days projectpath='u:/matlab'; inistep=1; finstep=96; dt=1; % Component ids of which parameter is to be optimized %idcompparam=[234, 244]; idcompparam=[]; % Splitter ids of which slope coefficients are to be optimized %idsplitslopes=[234, 244, 244]; idsplitslopes=[]; % Reservoirs' ids related to each slope value %idsresrvs={[17, 63, 366], [17, 366], [59, 63]}; idsresrvs={}; % Logger ids of which to return values %idloggers=[17, 63]; idloggers=[]; % Group ids of which to return energy pot values %idgroupsnrg=[35, 9]; idgroupsnrg=[]; % Read project data (nothing to do here) Globals=formUWOTGlobals(projectpath, dt, finstep); Παραδοτέο 3.4.3 Σελίδα 9