WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Optimierung mit externen Programmen

 

stephan22
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 10.10.07
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 10.10.2007, 18:35     Titel: Optimierung mit externen Programmen
  Antworten mit Zitat      
Hallo Matlab Experten !

Ich habe mal eine Frage zur Einbindung von anderen Programmen unter Matlab. Ich starte mit dem ! ein finite Elemente Programm auf einem Server welches mir Ergebniswerte zu den von Matlab gelieferten Inputs ausgibt. Dabei möchte ich mir die Geometrie optimieren, mit dem Befehl
fmincon. Die Befehle sehen wie folgt aus:

option=optimset('TolX',1e 10,'Display','iter','DiffMinChange',0.005,'TypicalX',19,'TolFun',1);

[x, fval,exitflag,output] = fmincon(@myfun,x0,[],[],[],[],lb,ub,[])

Die Optimierung klappt leider nur wenn ich eine Zielfunktion direkt im Matlabprogramm angebe. Bei Einbidung des FE Programms welches als Ziefunktion dient funktioniert die Änderung der Parameter nicht mehr.
Weiß da zufällig Jemand der oft externe Programe einbindet mehr?
Vorab vielen Dank.

Grüße Stephan22

myfun.m
 Beschreibung:
Ruft das FE Programm auf und übergibt die X Werte (Koordinaten) und liefert die Spannungswerte Stress

Download
 Dateiname:  myfun.m
 Dateigröße:  1.66 KB
 Heruntergeladen:  1008 mal
ConeOptiNeu.m
 Beschreibung:
Ruft den Optimierungsbefehl auf und übergibt die Anfangswerte Xo

Download
 Dateiname:  ConeOptiNeu.m
 Dateigröße:  746 Bytes
 Heruntergeladen:  1034 mal

_________________

SR
Private Nachricht senden Benutzer-Profile anzeigen


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 10.10.2007, 19:49     Titel:
  Antworten mit Zitat      
Wenn ich richtig verstanden habe geht es Dir darum den externen Aufruf eines Programms ! programmatisch zu automatisieren.

Wenn das so ist, dann schau den Befahl EVAL an. Damit lässt sich ein zusammengesetzter String (in Deinem Fall die Syntax des Aufrufes des externen Programms) ausführen. Mehr dazu in der Hilfe...

MfG
P.S. wie wärs mit bissl mehr Kommentarzeilen in Deinen Quellcodes? Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
stephan22
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 10.10.07
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 11.10.2007, 09:06     Titel:
  Antworten mit Zitat      
Hallo !

Danke erstmal für den Tip. Aber eigentlich bin ich ziemlich sicher,

dass das Zusammenspiel mit dem FE Programm funktioniert. Ich

frage mich vor allem ob die Optimierungsroutine mit externen

Funktionen klappt oder ob Matlab die analytische Funktion immer

drekt im M-File haben muss?

Stephan22
_________________

SR
Private Nachricht senden Benutzer-Profile anzeigen
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 11.10.2007, 19:23     Titel:
  Antworten mit Zitat      
Gefühlsmässig würde ich sagen, matlab benötigt keine analytische funktion und es sollte wie von Dir vorgeschlagen funktionieren. Ich weiss es aber nicht.


Ein Tipp vielleicht noch: schreib Dir doch mal direkt nach dem Aufruf der FEMRoutine (also noch innerhalb der Optimierungsschleife) die rückgegebenen Werte bzw. die Testwerte von Matlab raus - da kannst Du quasi "zuschauen" wie Matlab die Optimierung angeht und evtl. Fehlerquellen aufspüren.
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 11.10.2007, 19:29     Titel:
  Antworten mit Zitat      
Ok, ich habe noch einen Blick in den Code geworfen. Leider ist mir nicht klar geworden, welche Teile ausgeführt werden bzw. auskommentiert sind.

So wie ich es verstehe, rufst Du hier die Fitfunktion auf:

Code:

[x, fval,exitflag,output] = fmincon(@myfun,x0,[],[],[],[],lb,ub,[])
 


Der Header der Fitfunktion sieht aber so aus:
Code:

 function f = myfun(x)
 

Hier wird nur ein Parameter übergeben. Die benötigten? Parameter lb und ub werden gar nicht übergeben.


...und wenn ich es richtig sehe ist der ANSYS Aufruf momentan auskommentiert?
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
stephan22
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 10.10.07
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 12.10.2007, 09:42     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Also ich glaube der Funktionsaufruf:

function f = myfun(x) ist so in Ordnung. Die Grenzwerte werden durch den vorherigen Aufruf fmincon schon übergeben. Wenn ich eine analytische Funktion im M-File vorgebe funktioniert auch die Einhaltung der Grenzen.

Die X Werte die der Optimierungsbefehl innerhalb der Funktion generiert habe ich mir schon mal ausgeben lassen. Ich habe festgestellt, dass die X Werte initial nicht geändert werden. Dadurch ändern sich auch nicht die Ausgabewerte des FE Programms. Vielleicht sind die Änderungen von X so klein, dass sie unter die Rundungsgrenze des Zahlenformats fallen?

Grüße Stephan22
_________________

SR
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.