Βελτιστοποίηση στο ANSYS με χρήση εξωτερικού...

19
Βελτιστοποίηση στο ANSYS με χρήση εξωτερικού λογισμικού

description

Βελτιστοποίηση στο ANSYS με χρήση εξωτερικού λογισμικού. Γενικά. ΓΕΝΙΚΑ Μεγαλύτερο πρόβλημα βελτιστοποίησης: δεν υπάρχει μέθοδος που να δίνει το βέλτιστο σε όλες τις περιπτώσεις και με το μικρότερο πλήθος κλήσεων της αντικειμενικής συνάρτησης ( evaluations ). - PowerPoint PPT Presentation

Transcript of Βελτιστοποίηση στο ANSYS με χρήση εξωτερικού...

Page 1: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Βελτιστοποίηση στο ANSYS με χρήση εξωτερικού

λογισμικού

Page 2: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

ANSYSΙδιαίτερα δυνατό επιλύτη για ένα σημαντικό πλήθος προβλημάτων, μηχανικής, θερμικής, ελαστικής, ελαστοδυναμικής, συνδυασμένων συνθηκών (multiphysics) κτλ.

Περιορισμένο πλήθος βελτιστοποιητών ως προς – τη μέθοδο – τη επιλογή παραμέτρων

ΓενικάΓΕΝΙΚΑΜεγαλύτερο πρόβλημα βελτιστοποίησης: δεν υπάρχει μέθοδος που να δίνει το βέλτιστο σε όλες τις περιπτώσεις και με το μικρότερο πλήθος κλήσεων της αντικειμενικής συνάρτησης (evaluations).

Αντίθετα, υπάρχουν πολλές μέθοδοι που, υπό συνθήκες, αποτελούν ικανοποιητικές μέθοδοι για την επίλυση προβλημάτων βελτιστοποίησης

ΣΥΝΕΠΩΣαναζητείται τρόπος χρήσης του λογισμικού Ansys (επιλύτης ΠΣ) και άλλου

κώδικα ή λογισμικού ως βελτιστοποιητή.

Page 3: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Συνεργασία δύο λογισμικών

Ενδεικνυόμενη μεθοδολογία

•μέσω αρχείων: Απλός - Αργός (συνεχής ανανέωση δεδομένων από σκληρό δίσκο) – Αποφεύγονται προβλήματα επικοινωνίας στη μνήμη •μέσω μνήμης Η/Υ: Υψηλού επιπέδου – Ταχύς - Προβλήματα επικοινωνίας

Επιλογή μέσω ενδιάμεσων αρχείων σε δύο φάσεις επικοινωνίας

Υπολογιστική μέθοδος: ANSYSΒελτιστοποίηση: Matlab ή

Fortran

Τελικά, καλείται μία συνάρτηση ή υπορουτίνα (function ή subroutine) για τον υπολογισμό των μεγεθών που συμμετέχουν στη συνάρτηση κόστους (ANSYS) και της συνάρτησης κόστους και μια για την υλοποίηση της βελτιστοποίησης

Kαταγραφή του αρχείου διανύσματος (1η Φάση)Κλήση του λογισμικού για την επίλυσηΑνάγνωση της τιμής της συνάρτησης κόστους (2η Φάση).

Page 4: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

•το Ansys υπολογίζει την τιμή της συνάρτησης κόστους (*.lgw)•πρέπει να την δώσει στο βελτιστοποιητή ώστε•μετά από διαδικασία σύγκρισης με την προηγούμενη τιμή να επαναληφθέί ο βρόχος βελτιστοποίησης

Περιεχόμενο αρχείων επικοινωνίας

1η Φάση επικοινωνίας: Αρχείο νέου διανύσματος μεταβλητών σχεδίασης

ΣΥΝΕΠΩΣπρέπει να γραφεί σε τέτοια μορφή ώστε να είναι εύκολα αξιοποιήσιμο από το Ansys

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

2η Φάση επικοινωνίας: Αρχείο τιμής συνάρτησης κόστους

ΣΥΝΕΠΩΣπρέπει να γραφεί σε τέτοια μορφή ώστε να είναι εύκολα αξιοποιήσιμο από τον βελτιστοποιητή

Page 5: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Περιγραφή Προβλήματος

r= 0.2 0.4 0.6 0.8 1.0

L=10

y L=10

xba

d

u(x)

c

y

22

62 2

1000 10logmax max

yx

real realside

x y

uuF

u u

Page 6: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

MatlabΠ.χ: Οι σχεδίασης αφορούν στο μέγεθος και τη θέση οπής. Συντεταγμένες κέντρου Ο(x1,y1) και ακτίνα r1.

fid = fopen('newx1','w'); Άνοιγμα αρχείου newx1 για εγγραφή w fprintf(fid,'x1= %20.15f\n',x(1)); ‘χ1=‘ γραφή character fprintf(fid,'y1= %20.15f\n',x(2)); %20.15f 20 στοιχεία 15 δεκαδικά fprintf(fid,'r1= %20.15f\n',x(3)); \n σε νέα γραμμή fclose(fid); Κλείσιμο του αρχείου στη μεταβλητή fid

Αν ο βελτιστοποιητής είναι σε Fortran με την ίδια λογική οι εντολές είναι :open(12,file= 'newx1') Άνοιγμα αρχείου newx1 (12)write(12,*) 'x1=', x(1) καταγραφή ‘x1’ χωρίς μορφοποίησηwrite(12,*) 'y1=‘, x(2)write(12,*) 'r1=', x(3)close(12) Κλείσιμο αρχείου 12

1η Φάση επικοινωνίας

Καταγραφή μεταβλητών σχεδίασης σε αρχείο

Παρατήρηση: Το ANSYS είναι βασισμένο στη Fortran, οπότε δε χρειάζεται ειδική μορφοποίηση το αρχείο

Page 7: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Καταγραφή της τιμής της αντικειμενικής συνάρτησης (fun) σε αρχείο (f.txt).

ANSYS*CFOPEN,'f','txt',' ' άνοιγμα αρχείου f με κατάληξη txt*VWRITE,fun, , , , , , , , , καταγραφή διανύσματος (vector) fun(f29.14) με μορφή 29 στοιχείων και 14 δεκαδικών*CFCLOS κλείσε το αρχείο

2η Φάση επικοινωνίας

Ανάγνωση αρχείου Matlab load f.txt Fortran open(13,file='f.txt')

read(13,*)f close(13)

Page 8: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

function f = my_fun4(x)global hist_all hist_best nfv fminx=x';

f=0;x1(1)=x(1); x1(2)=x(2); x1(3)=x(3);

fid = fopen('newx1','w'); fprintf(fid,'%20.15f\n',x1(1)); fprintf(fid,'%20.15f\n',x1(2));b fprintf(fid,'%20.15f\n',x1(3));fclose(fid);

!"C:\Program Files\Ansys Inc\v120\ANSYS\bin\Intel\ANSYS.EXE" -p STRUCT -b nolist -i INPUT1.lgw -o out1.out

load f.txt

if f<10e10nfv=nfv+1;if fmin>f fmin=f; hist_best=[hist_best; nfv fmin x1];end

hist_all=[hist_all; nfv f x1]; endend

Page 9: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

clear allclcfor i=1:10format long

global hist_all hist_best nfv fminhist_best=[]; hist_all=[]; nfv=0; fmin=10e9;

options=gaoptimset('Generations',150,'StallTimeLimit',Inf,'StallGenLimit',Inf,'PopInitRange',[0.5;10],'PopulationSize',24)i[x2 fval, reason] = ga(@my_fun4, 4,options)if i==1 save ga1.matelseif i==2 save ga2.matelseif i==3 save ga3.mat…..elseif i==10 save ga10.mat end

x=fminsearch(@my_fun4,x2)if i==1 save fmin1.matelseif i==2 save fmin2.mat….elseif i==10 save fmin10.matendend

% options=gaoptimset('Generations',100,'StallTimeLimit',Inf,'StallGenLimit',Inf,'PopInitRange',[0.5;10],'PopulationSize',36,'PlotFcns',@gaplotbestf,'PlotFcns',@gaplotbestindiv,'HybridFcn',@fminsearch)

Page 10: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

ANSYSΚατασκευή αρχείου Ansys Input.lgw (περιγραφή φυσικού

προβλήματος) όπως σε περίπτωση χρήσης εσωτερικού κώδικα βελτιστοποίησης

Κατασκευή βοηθητικού αρχείου όπου θα περιλαμβάνονται οι νέες τιμές των παραμέτρων (μεταβλητών σχεδίασης) για τη νέα επίλυση

Κατασκευή βοηθητικού αρχείου με τη τιμή της αντικειμενικής συνάρτησης

Διαδικασία στο ANSYS

Διαφορές στο Input.lgw1.Πρόσθήκη εντολής /INPUT ή PARRES μετά από τις γραμμές όπου ορίζονται οι τιμές των μεταβλητών σχεδίασης (μπορεί να γίνει και αντικατάστασή τους)2.Καταγραφή της τιμής της αντικειμενικής συνάρτησης σε αρχείο (*vwrite καταγραφή τιμών παραμέτρων σε αρχείο)

Εκτελείται το input αρχείο (όπως κατά την εσωτερική βελτιστοποίηση) αλλά η αλλαγή των τιμών των μεταβλητών γίνεται από το αρχείο newx1 PARRES,CHANGE,'newx1',, ' ‘ (μπορεί απλά να ακολουθεί – σβήνει τις προηγούμενες τιμές)Μπορεί να γίνει και με την εντολή /input

Page 11: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Κλήση του Ansys για επίλυση

Για Matlab!"C:\Program Files\Ansys Inc\v100\ANSYS\bin\Intel\ANSYS.EXE" -p

STRUCT -b nolist -i input1.lgw -o out1.out! Εκτέλεση εντολής-p επιλογή από το Ansys (στην παρούσα περίπτωση το

Structural)-b nolist επιλογή ώστε να μη καταγράφεται το αρχείο input

στο out

Για FortranI=System('ansys1.bat') εκτελείται το αρχείο .bat το οποίο περιέχει

@ECHO OFFset ANS_CONSEC=YESset ANSYS_LOCK=OFFset ANSEXE="ansys100.EXE"%ANSEXE% -p STRUCT -b nolist -i input1.lgw -o out1.outGOTO :EOF

Page 12: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Μέθοδος Fminsearch

ΒΕ=Β’Β

P

BΑρχικό σημείο

s

s

s

s

PB

E

B’

Εξερεύνηση

Εξερεύνηση

ΠρότυποBB’ E

ΒΕ=Β’Β

Page 13: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Παράδειγμα 1The Rosenbrock banana function is a classic test example for multidimensional minimization:

                             The minimum is at (1,1) and has the value 0. The traditional starting point is (-1.2,1). The anonymous function shown here defines the function and returns a function handle called banana:banana = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;Pass the function handle to fminsearch:[x,fval] = fminsearch(banana,[-1.2, 1])This producesx = 1.0000 1.0000 fval = 8.1777e-010This indicates that the minimizer was found to at least four decimal places with a value near zero.

FminSearch

Page 14: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Παράδειγμα 2If fun is parameterized, you can use anonymous functions to

capture the problem-dependent parameters. For example, suppose you want to minimize the objective function myfun defined by the following M-file function.

function f = myfun(x,a) f = x(1)^2 + a*x(2)^2;Note that myfun has an extra parameter a, so you cannot

pass it directly to fminsearch. To optimize for a specific value of a, such as a = 1.5.

Assign the value to a. a = 1.5; % define parameter firstCall fminsearch with a one-argument anonymous function

that captures that value of a and calls myfun with two arguments:

x = fminsearch(@(x) myfun(x,a),[0,1])

Page 15: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Παράδειγμα 3You can modify the first example by adding a parameter a to the second term of the banana function:                              This changes the location of the minimum to the point [a,a^2]. To minimize this function for a specific value of a, for example a = sqrt(2), create a one-argument anonymous function that captures the value of a.a = sqrt(2); banana = @(x)100*(x(2)-x(1)^2)^2+(a-x(1))^2;Then the statement [x,fval] = fminsearch(banana, [-1.2, 1], ... optimset('TolX',1e-8));seeks the minimum [sqrt(2), 2] to an accuracy higher than the default on x.

Page 16: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

•Ενημέρωση του Hessian πίνακα της συνάρτησης Lagrange.

•Επίλυση του Quadratic Programming Problem.

•Έρευνα γραμμής και υπολογισμός της ποινικοποιημένης συνάρτησης.

Sequential Quadratic Programming (Fmincon)

Page 17: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Find values of x that minimize f(x) = –x1x2x3, starting at the point x = [10;10;10], subject to the constraints:0 ≤ x1 + 2x2 + 2x3 ≤ 72.1.Write a file that returns a scalar value f of the objective function evaluated at x:function f = myfun(x) f = -x(1) * x(2) * x(3);2.Rewrite the constraints as both less than or equal to a constant,–x1–2x2–2x3 ≤ 0x1 + 2x2 + 2x3≤ 723.Since both constraints are linear, formulate them as the matrix inequality A·x ≤ b, where

                          4.Supply a starting point and invoke an optimization routine:x0 = [10;10;10]; % Starting guess at the solution [x,fval] = fmincon(@myfun,x0,A,b)5.After 11 iterations, the solution isx = 24.0000 12.0000 12.0000where the function value is fval = -3.4560e+03and linear inequality constraints evaluate to be less than or equal to 0:A*x-b= -72 0

Page 18: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

Γενετικός Αλγόριθμος

•Δημιουργεί τυχαίο πληθυσμό.

•Βαθμολογεί κάθε άτομο ανάλογα με την τιμή της

αντικειμενικής συνάρτησης, στην οποία

αντιστοιχεί.

•Κλιμακώνει τις βαθμολογίες του κάθε ατόμου

ώστε να τα μετατρέψει σε πιο χρήσιμο εύρος

τιμών.

•Επιλέγει τους γονείς ανάλογα με την τιμή της

αντικειμενικής συνάρτησης στην οποία

αντιστοιχούν.

•Παράγει τα παιδιά από τους γονείς (μετάλλαξη,

διασταύρωση).

•Αντικαθιστά τον τρέχοντα πληθυσμό με τα παιδιά

για να σχηματίσει την επόμενη γενεά.

•Ο αλγόριθμος σταματάει όταν ικανοποιηθεί ένα

συγκεκριμένο κριτήριο.

•Δυνατότητα εφαρμογής του ως υβριδική μέθοδο

Page 19: Βελτιστοποίηση στο  ANSYS  με χρήση εξωτερικού λογισμικού

ExampleGiven the following inequality constraints and lower bounds                  the following code finds the minimum of the function, lincontest6, that is provided your software:A = [1 1; -1 2; 2 1]; b = [2; 2; 3]; lb = zeros(2,1); [x,fval,exitflag] = ga(@lincontest6,... 2,A,b,[],[],lb) Optimization terminated: average change in the fitness value less than options.TolFun. x = 0.7794 1.2205 fval = -8.03916 exitflag = 1

GA