最適化関数「fmincon」を使用していますが、収束しない場合があります。これらのケースを特定し、必要なアクションを実行する必要がありますが、使用されているすべてのメソッドがエラーのキャッチに失敗しているため、引き続きエラーが発生します。
No feasible solution found.
fmincon stopped because the size of the current search direction is less than
twice the default value of the step size tolerance but constraints are not
satisfied to within the selected value of the constraint tolerance.
最初に、関数の exitflag を選択してみました: 既知のエラー (-1、1、0...) を返す場合、エラーが発生するたびに、返された exitflag には正しい値がありました。
[x,fval,exitflag] = fmincon(@(x) costFunction(x,INPUTS),x0,A,b,[],[],lb,ub,[],options);
if exitflag == 0
do something;
end
次に、「try/catch」構造を試しましたが、この場合もコードは実行され続け、エラーは発生しませんでした...
try %start try/catch
[x,fval,exitflag] = fmincon(@(x) costFunction(x,INPUTS),x0,A,b,[],[],lb,ub,[],options);
catch err
disp(err.identifier);
... actions
end % end try/catch
どんな提案でも大歓迎です。
ps: 使用されるオプションは次のとおりです。
options = optimset(oldopts,'Display','notify', 'Algorithm','active-set', 'MaxFunEvals', 10000);