1 / 19

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

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

marek
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Γενικά ΓΕΝΙΚΑ Μεγαλύτερο πρόβλημα βελτιστοποίησης: δεν υπάρχει μέθοδος που να δίνει το βέλτιστο σε όλες τις περιπτώσεις και με το μικρότερο πλήθος κλήσεων της αντικειμενικής συνάρτησης (evaluations). Αντίθετα, υπάρχουν πολλές μέθοδοι που, υπό συνθήκες, αποτελούν ικανοποιητικές μέθοδοι για την επίλυση προβλημάτων βελτιστοποίησης ANSYS Ιδιαίτερα δυνατό επιλύτη για ένα σημαντικό πλήθος προβλημάτων, μηχανικής, θερμικής, ελαστικής, ελαστοδυναμικής, συνδυασμένων συνθηκών (multiphysics) κτλ. Περιορισμένο πλήθος βελτιστοποιητών ως προς – τη μέθοδο – τη επιλογή παραμέτρων ΣΥΝΕΠΩΣ αναζητείται τρόπος χρήσης του λογισμικού Ansys (επιλύτης ΠΣ) και άλλου κώδικα ή λογισμικού ως βελτιστοποιητή.

  3. Ενδεικνυόμενη μεθοδολογία Υπολογιστική μέθοδος: ANSYS Βελτιστοποίηση: Matlab ή Fortran Συνεργασία δύο λογισμικών • μέσω αρχείων: Απλός - Αργός (συνεχής ανανέωση δεδομένων από σκληρό δίσκο) – Αποφεύγονται προβλήματα επικοινωνίας στη μνήμη • μέσω μνήμης Η/Υ: Υψηλού επιπέδου – Ταχύς - Προβλήματα επικοινωνίας Επιλογή μέσω ενδιάμεσων αρχείων σε δύο φάσεις επικοινωνίας Τελικά, καλείται μία συνάρτηση ή υπορουτίνα (function ή subroutine) για τον υπολογισμό των μεγεθών που συμμετέχουν στη συνάρτηση κόστους (ANSYS) και της συνάρτησης κόστους και μια για την υλοποίηση της βελτιστοποίησης Kαταγραφή του αρχείου διανύσματος (1η Φάση) Κλήση του λογισμικού για την επίλυση Ανάγνωση της τιμής της συνάρτησης κόστους (2η Φάση).

  4. Περιεχόμενο αρχείων επικοινωνίας 1η Φάση επικοινωνίας: Αρχείο νέου διανύσματος μεταβλητών σχεδίασης • ο βελτιστοποιητής παράγει διάνυσμα τιμών των μεταβλητών σχεδίασης • πρέπει να γίνει ανάγνωση των τιμών αυτών από τον επιλύτη και νέα επίλυση ΣΥΝΕΠΩΣ πρέπει να γραφεί σε τέτοια μορφή ώστε να είναι εύκολα αξιοποιήσιμο από το Ansys 2η Φάση επικοινωνίας: Αρχείο τιμής συνάρτησης κόστους • το Ansys υπολογίζει την τιμή της συνάρτησης κόστους (*.lgw) • πρέπει να την δώσει στο βελτιστοποιητή ώστε • μετά από διαδικασία σύγκρισης με την προηγούμενη τιμή να επαναληφθέί ο βρόχος βελτιστοποίησης ΣΥΝΕΠΩΣ πρέπει να γραφεί σε τέτοια μορφή ώστε να είναι εύκολα αξιοποιήσιμο από τον βελτιστοποιητή

  5. r= 0.2 0.4 0.6 0.8 1.0 Περιγραφή Προβλήματος u(x) L=10 y y c d L=10 a b x

  6. 1η Φάση επικοινωνίας Καταγραφή μεταβλητών σχεδίασης σε αρχείο 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 Παρατήρηση: Το ANSYS είναι βασισμένο στη Fortran, οπότε δε χρειάζεται ειδική μορφοποίηση το αρχείο

  7. 2η Φάση επικοινωνίας Καταγραφή της τιμής της αντικειμενικής συνάρτησης (fun)σε αρχείο (f.txt). ANSYS *CFOPEN,'f','txt',' ' άνοιγμα αρχείου f με κατάληξη txt *VWRITE,fun, , , , , , , , ,καταγραφή διανύσματος (vector) fun (f29.14) με μορφή 29 στοιχείων και 14 δεκαδικών *CFCLOS κλείσε το αρχείο Ανάγνωση αρχείου Matlab  load f.txt Fortran  open(13,file='f.txt') read(13,*)f close(13)

  8. function f = my_fun4(x) global hist_all hist_best nfv fmin x=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<10e10 nfv=nfv+1; if fmin>f fmin=f; hist_best=[hist_best; nfv fmin x1]; end hist_all=[hist_all; nfv f x1]; end end

  9. clear all clc for i=1:10 format long global hist_all hist_best nfv fmin hist_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.mat elseif i==2 save ga2.mat elseif i==3 save ga3.mat ….. elseif i==10 save ga10.mat end x=fminsearch(@my_fun4,x2) if i==1 save fmin1.mat elseif i==2 save fmin2.mat …. elseif i==10 save fmin10.mat end end % options=gaoptimset('Generations',100,'StallTimeLimit',Inf,'StallGenLimit',Inf,'PopInitRange',[0.5;10],'PopulationSize',36,'PlotFcns',@gaplotbestf,'PlotFcns',@gaplotbestindiv,'HybridFcn',@fminsearch)

  10. Διαδικασία στο ANSYS ANSYS Κατασκευή αρχείου Ansys Input.lgw(περιγραφή φυσικού προβλήματος) όπως σε περίπτωση χρήσης εσωτερικού κώδικα βελτιστοποίησης Κατασκευή βοηθητικού αρχείου όπου θα περιλαμβάνονται οι νέες τιμές των παραμέτρων (μεταβλητών σχεδίασης) για τη νέα επίλυση Κατασκευή βοηθητικού αρχείου με τη τιμή της αντικειμενικής συνάρτησης Διαφορές στο Input.lgw 1.Πρόσθήκη εντολής /INPUT ή PARRES μετά από τις γραμμές όπου ορίζονται οι τιμές των μεταβλητών σχεδίασης (μπορεί να γίνει και αντικατάστασή τους) 2.Καταγραφή της τιμής της αντικειμενικής συνάρτησης σε αρχείο (*vwrite καταγραφή τιμών παραμέτρων σε αρχείο) Εκτελείται το input αρχείο (όπως κατά την εσωτερική βελτιστοποίηση) αλλά η αλλαγή των τιμών των μεταβλητών γίνεται από το αρχείο newx1PARRES,CHANGE,'newx1',, '‘ (μπορεί απλά να ακολουθεί – σβήνει τις προηγούμενες τιμές) Μπορεί να γίνει και με την εντολή /input

  11. Κλήση του 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) -bnolist επιλογή ώστε να μη καταγράφεται το αρχείο inputστο out Για Fortran I=System('ansys1.bat') εκτελείται το αρχείο .bat το οποίο περιέχει @ECHO OFF set ANS_CONSEC=YES set ANSYS_LOCK=OFF set ANSEXE="ansys100.EXE" %ANSEXE% -p STRUCT -b nolist -i input1.lgw -o out1.out GOTO :EOF

  12. E s Εξερεύνηση s Πρότυπο ΒΕ=Β’Β B’ B B P E P B’ s Εξερεύνηση B Αρχικό σημείο s Μέθοδος Fminsearch ΒΕ=Β’Β

  13. FminSearch Παράδειγμα 1 The 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 produces x = 1.0000 1.0000 fval = 8.1777e-010 This indicates that the minimizer was found to at least four decimal places with a value near zero.

  14. Παράδειγμα 2 If 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 first Call 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])

  15. Παράδειγμα 3 You 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.

  16. SequentialQuadraticProgramming (Fmincon) • Ενημέρωση του Hessian πίνακα της συνάρτησης Lagrange. • Επίλυση του Quadratic Programming Problem. • Έρευνα γραμμής και υπολογισμός της ποινικοποιημένης συνάρτησης.

  17. 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. • 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); • Rewrite the constraints as both less than or equal to a constant, • –x1–2x2–2x3 ≤ 0x1 + 2x2 + 2x3≤ 72 • Since both constraints are linear, formulate them as the matrix inequality A·x ≤ b, where • 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) • After 11 iterations, the solution is • x = 24.0000 12.0000 12.0000 • where the function value is • fval = -3.4560e+03 • and linear inequality constraints evaluate to be less than or equal to 0: • A*x-b= -72 0

  18. Γενετικός Αλγόριθμος • Δημιουργεί τυχαίο πληθυσμό. • Βαθμολογεί κάθε άτομο ανάλογα με την τιμή της αντικειμενικής συνάρτησης, στην οποία αντιστοιχεί. • Κλιμακώνει τις βαθμολογίες του κάθε ατόμου ώστε να τα μετατρέψει σε πιο χρήσιμο εύρος τιμών. • Επιλέγει τους γονείς ανάλογα με την τιμή της αντικειμενικής συνάρτησης στην οποία αντιστοιχούν. • Παράγει τα παιδιά από τους γονείς(μετάλλαξη, διασταύρωση). • Αντικαθιστά τον τρέχοντα πληθυσμό με τα παιδιά για να σχηματίσει την επόμενη γενεά. • Ο αλγόριθμος σταματάει όταν ικανοποιηθεί ένα συγκεκριμένο κριτήριο. • Δυνατότητα εφαρμογής του ως υβριδική μέθοδο

  19. GA Example Given 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

More Related