状態方程式行列の固有値を 1 未満に保ちながら、MATLAB Optimization Toolboox で fmincon を使用して非線形フィルターのパラメーターを推定しようとしています。「sqp」アルゴリズムを使用した fmincon のドキュメントには、すべての反復で制約が尊重されると書かれていますが、コードの最初の反復では、不安定な固有値を意味するポイントを試みます。これらのパラメーター値でフィルターを実行できないため、コードがクラッシュします。
ドキュメントは、「AlwaysHonorConstraints」がベクトル (lb および ub) として渡された不等式制約にのみ適用されることを本当に意味していますか? 各ステップで非線形制約が確実に満たされるようにする方法はありますか?
これが私のコードの関連部分です:
c = @(x) max(abs(eig(reshape(x(8:16), 3, 3)))) - 1;
ceq = @(x) [];
nonlcon = @(x) deal(c(x), ceq(x));
obj = @(x) -unscented_kalman1(x, fulldiv, crsp_allEverything);
fminconOptions = optimset('Display', 'iter-detailed', 'Algorithm', 'sqp', ...
'TolX', errTol, 'UseParallel', 'always', 'AlwaysHonorConstraints', 'bounds');
maxX = fmincon(obj, x0, [], [], [], [], [], [], nonlcon, fminconOptions);
ありがとう!