2016-10-04 9 views
0

Ich versuche, eine Funktion mit fmincon in Matlab zu minimieren, aber bei der Auswertung meiner Constraint-Funktion brauche ich den Wert der Variablen aus der vorherigen Iteration.Zugriff auf vorherige Iterationsvariable in Matlab-Optimierung

Meine Frage ist: Wie kann ich auf den Wert der Variablen in jeder Iteration zugreifen?

+0

Sie könnten die Qualität dieses Posts verbessern, indem Sie etwas von dem relevanten Code hinzufügen oder was Sie bereits versucht haben. –

+0

Ich bezweifle, dass Sie das in Ihrer Einschränkung wirklich brauchen. Wenn Sie jedoch zu der optimalen Lösung konvergieren, können Sie annehmen: x (k) = x (k-1) 'wobei" k "die Iterationszahl ist. –

Antwort

1

Probieren Sie die optionale Ausgabefunktion 'OutputFcn' aus, die in den Optimierungsoptionen definiert werden kann. Diese Funktion wird nach jeder Iteration bezeichnet und den aktuellen Wert des Optimierungs Vektor

Optionen = optimset (‚OutputFcn‘, @CustomOutputFcn) übergeben

function stop = CustomOutputFcn(x,optimValues,state) 
stop = false; 
% Store x to previously defined global variable XPreviousStep 
global XPreviousStep 
XPreviousStep = x; 
end 

Jetzt können Sie XPreviousStep in Ihre Constraint-Funktion zugreifen. Sie können Guidata verwenden, wenn Sie globale Variablen nicht mögen.

Verwandte Themen