Also ich bastle da wieder mal seit Stunden dran herum und habe nun eine Frage zu einer Matlab Funktion:
Ich möchte eine ZF minimieren über einen Vektor
x = [t; eigenschaft1; Eigenschaft 2; eigenschaft 3; Eigenschaft 4;].
Dabei habe ich aber eine DGL für x(2)-x(4) gegeben, und diskretisiiere diese mit Euler implizit.
Jetzt ist die Frage:
wie kann ich das in Matlab unter den nonlinear constraints ceq auch so formulieren? Also in dem Sinne, dass ich x(2)_i+1 verwenden kann?
1.Idee: ich habe den Vektor x als Matrix betrachtet und die verschiedenen Stützstellen dann in die Spalten gepackt
-> Problem: ZF verwenden f(x) = x(2)^2+x(5)+x(3)^2 und wenn die Spalten die Stützstellen sind, ist nicht klar, was x(2) ist.
2.Idee: festlegen x(2)=e1, x(3)=e2, x(4)=e3 und dann die diskretisierung nur darauf beziehen.
-> Problem: man erhält sofort die Fehlermeldung, dass e1,..,e3 nicht definiert sind.
Wie kann ich also über einen Vektor minimieren, dessen Komponenten ich diskretisiere?
ich würde da anders vorgehen.
Beim Eulerverfahren ist das Problem, dass der Fehler nicht kontrolliert wird. Stattdessen würde ich
ode45
verwenden.
Die Zielfunktion kann ja leicht abgeleitet werden. Ich würde also nach Nullstellen der Ableitung suchen, und das geht bei ode45 "nebenbei" schön mit Events (anzugeben über odeset).
Einzige Anforderung: das gesuchte Minimum muss in der Zeitspanne liegen, über die die DGL gelöst wird.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Das Problem ist, dass die Eigenschaften selbst auch Funktionen sind (Pendelschwingung zum Beispiel).
Die Idee mit ode45 hatte ich auch schon, und das führte leider zu keinem Ergebnis. Wenn ich also bei den optimization tools bleibe, gibt es da dennoch eine Möglichkeit? :(
Das Problem ist, dass die Eigenschaften selbst auch Funktionen sind (Pendelschwingung zum Beispiel).
Ich sehe das Problem darin nicht.
Zitat:
Die Idee mit ode45 hatte ich auch schon, und das führte leider zu keinem Ergebnis.
Was genau hast du versucht und welche Probleme sind dabei aufgetreten?
Zitat:
Wenn ich also bei den optimization tools bleibe, gibt es da dennoch eine Möglichkeit?
Wird meines Erachtens umständlich und rechenintensiv, weil du wiederholt dieselbe DGL lösen musst. Ich sehe da höchstens die Möglichkeit, dass man t als zu optimierende Variable nimmt und alles andere in Abhängigkeit davon berechnet.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
genau so soll es ja auch sein, dass alles in Abhängigkeit von t berechnet wird. Dazu brauche ich ja zunächst mein t, daher der Umweg
möglicherweise habe ich es komplkzierter ausgedrückt oder gemacht. aber im Endeffekt optimiere ich über t und der erst hängt davon ab. die dgl möchte ich jedoch über Euler umgehen. und durch die diskretisierung erhalte ich das Problem der Indizierung.
Ich brauche also eine Formulierung für x(3)_k beispielsweise..
Es wäre interessant, welches Problem genau du mit dem Code überhaupt zu lösen versuchst.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
es geht dabei um eine zeitoptimale Minimierung einer Fahrt mit angehängtem Pendel ist, bei der x=[position, Geschwindigkeit, Pendelwinkel, pendelwinkelgeschwindigkeit, Steuerung, Endzeit, Disk.Zeit tau=endzeit/N] mit N = Anzahl diskretisierungsschritte.
also ein minimierungsproblem mit einer dgl als Nebenbedingung, sowie Beschränkungen an die Komponenten von x
ich hätte es präziser sagen sollen: was ist die vollständige mathematische Formulierung des Problems?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ist es möglich die DGL mit Euler aus den NB rauszuhalten und wenn ich dann k=1:N laufen lasse, muss ich dann fmincon auch N mal laufen lassen , oder kann ich die Euler NB als eigene schleife einbauen und die interation nur für die NB nehmen und ein minimirungsprobem lösen?
mir ist nicht klar, was tf in der ersten Formulierung mit den Nebenbedingungen zu tun hat. Beim Schluss habe ich keine Ahnung, was du meinst, und kann dir daher leider nicht dabei helfen.
Wenn es eine andere Frage ist, dann mach doch ein neues Thema auf. Wenn ein Thema schon so viele Beiträge hat, ist unwahrscheinlich, dass sich noch jemand neu einklinkt.
Wenn du deine ursprüngliche Frage gelöst hast, dann poste bitte auch wie. Falls jemand anders später auf diesen Beitrag stößt, hat er dann auch was davon.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich habe ein Minimierungsproblem was ich mit Matlab lösen möchte. Das Problem ist, dass ich eine DGL als Nebenbedingung habe und die deshalb umformuliere.
Mit Euler erhalte ich dann aber ja N viele Stützstellen von z jeweils, und die Frage ist: löse ich dann N viele Minimierungsprobleme oder kann ich das als ein Problem lösen?
um dir die Frage beantworten zu können, muss ich genau verstehen, was denn tatsächlich die Problemstellung ist. Deswegen die Frage:
Zitat:
was ist die vollständige mathematische Formulierung des Problems?
die für mich noch nicht beantwortet ist.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.