Verfasst am: 10.10.2007, 17:35
Titel: Optimierung mit externen Programmen
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:
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
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?
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.....
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.....
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
Einstellungen und Berechtigungen
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
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.