What is the right way to treate "Optimization terminated: no feasible point found." ???

26 ビュー (過去 30 日間)
What is the right way to treate "Optimization terminated: no feasible point found." ???
  2 件のコメント
Matt J
Matt J 2017 年 11 月 12 日
In what code?
Walter Roberson
Walter Roberson 2017 年 11 月 12 日
Check that your constraints can be met; if the optimizer permits an initial value then try to give it one that is within constraints.

サインインしてコメントする。

採用された回答

John D'Errico
John D'Errico 2017 年 11 月 13 日
A feasible solution is some point, ANY point, that satisfies all of the constraints. There is no assurance that a feasible point exists at all for some unknown problem. However, the odds are decent that no such solution exists if MATLAB returns that statement. But we can never know that, given no information at all.
So it depends. Are your constraints highly nonlinear? Just how nasty are they? Have you even implemented them in MATLAB properly? We cannot know this, given no code to see at all, and no information as to the problem you want to solve.
So what should you do?
1. Verify the implementation. CAREFULLY. Do this twice. Then do it a third time. Get a colleague to check your implementation.
2. Try some random points. Do the constraints make sense in what they return? APPLY COMMON SENSE. Do any of them satisfy all of the constraints? MATLAB starts looking for a feasible point based on your initial values. So a different start point might allow the solver to find a feasible point.
If it appears that no feasible point seems to be found, then consider if there is a good reason why no feasible point was found.
Of course, if you want better help, you would have more of a chance if you explain what you are trying to solve, and showed what you did. Otherwise, it is difficult to utter more than the vague platitudes that I did here.
  1 件のコメント
Walter Roberson
Walter Roberson 2017 年 11 月 13 日
Note that especially in the case of highly non-linear functions, sometimes MATLAB is able to detect that a zero crossing exists but is unable to determine where the crossing is, because the values for the last representable number on each side of the crossing might be quite distant from 0. For example even something as simple as 1E100*x cannot have its zero crossing determined with enough precision for some of the routines to satisfy their tolerances.

サインインしてコメントする。

その他の回答 (2 件)

Alan Weiss
Alan Weiss 2017 年 11 月 13 日
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

tahseen alshmary
tahseen alshmary 2018 年 9 月 29 日
編集済み: Walter Roberson 2018 年 9 月 29 日
i have this problem appear with genetic algorithm ,what is the solution
  4 件のコメント
tahseen alshmary
tahseen alshmary 2018 年 9 月 29 日
thanks a lot about your answer . Do you have genetic algorithm code , may i get it please
Walter Roberson
Walter Roberson 2018 年 9 月 29 日
Mathworks provides ga() and gamultiobj() in the Global Optimization Toolbox.
There are over 50 genetic algorithm implementations in the File Exchange: https://www.mathworks.com/matlabcentral/fileexchange/?utf8=%E2%9C%93&term=tag%3Aga

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSolver Outputs and Iterative Display についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by