我正在使用优化函数“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.
首先,我尝试选择函数的退出标志:如果它返回一个已知错误(-1、1、0...),但每次我遇到错误时,返回的退出标志都有一个正确的值。
[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);