2016-10-04 15 views
0

私はMatlabでfminconを使用して関数を最小化しようとしていますが、私の制約関数を評価するには前の反復の変数の値が必要です。Matlab最適化の以前の反復変数へのアクセス

私の質問は、どのように私は各反復で変数の値にアクセスするのですか?

+0

この記事の品質を向上させるには、関連するコードを少し追加してください。 –

+0

私はあなたが本当にあなたの制約の中でそれを必要とするのか疑問です。とにかく最適解に収束すると、 'x(k)= x(k-1)'とすることができます。ここで 'k'は反復数です。 –

答えて

1

最適化オプションで定義できるオプションの出力関数 'OutputFcn'を使用してみてください。この機能は、各反復の後に呼び出され、最適化ベクトル

オプション= optimsetを、現在の値(「OutputFcnを」、@CustomOutputFcn)

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

は今、あなたはあなたの制約関数にXPreviousStepにアクセスすることができますが渡されます。グローバル変数が気に入らなければ、guidataを利用することができます。

関連する問題