我正在使用優化函數「fmincon」,並且在某些情況下它不會收斂。我必須確定這些案件,並採取必要的行動,但所用的所有的方法失敗,在追趕的錯誤,讓我繼續得到錯誤:Matlab 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 ...),但每次出現錯誤時,退出的退出標誌都有一個正確的值。
[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);
你提供了一個滿足約束條件的'x0'嗎? – 2013-02-09 16:27:30
我查過了,其實在某些情況下x0不滿足約束條件,我也會更新這個。 – 2013-02-09 21:28:01