fminsearch with side conditions

4 ビュー (過去 30 日間)
Marc Laub
Marc Laub 2022 年 5 月 17 日
コメント済み: Marc Laub 2022 年 5 月 18 日
I have a equation where I am looking for the minimum. The equation has 6 variables, but due to interdependencies it can be reduced to 4.
My problem is that there is a side condition which I cannot translate into the function and therefore the results are wrong.
The side condition is that 3 of those variables have to sum up to 1, which I have realized as :
and that the sum of a and b ahs to be less or equal to 1.
So it is possible that c is zero, but not less.
And that last side condition wont o into my function. I can surely replace c by 1-a-b, but how do I get the a+b<=1 into my function
Many Thanks in advance and best regards


John D'Errico
John D'Errico 2022 年 5 月 17 日
編集済み: John D'Errico 2022 年 5 月 17 日
Generally, the solution is to not use fminsearch. Use a better optimizer instead. It will be faster, and you will get a better answer. What can I say?
FMINCON would be my first recommendation. However, other tools, like LSQLIN or INTLINPROG might be appropriate, since I don't know your actual problem.
CAN you use fminsearch? Well, yes. You could do so. If I were pressed, I would start by replacing c completely in your problem, replacing it with 1-a-b. Then I would use a penalty function approach. Start out with an initial value for fminsearch that satisfies your requirements, that a+b <= 1. INSIDE your objective function, IF fminsearch passes in a set of parameters where a+b is NOT acceptable, then don't even bother trying to evaluate the function, just return inf. Fminsearch will not be fazed by this infinite penalty on the objective, and it should produce a result that satisfies your goals as long as you start with a feasible point.
If you want a better, more complete answer, then I would need to see more information. What is your ACTUAL problem? Perhaps this is a simple linear problem in some way, and a tool such as intlinprog or lsqlin would be sufficient.
  3 件のコメント
Marc Laub
Marc Laub 2022 年 5 月 18 日
I have it.
I tried it with fmincon but while trying I figured out mutiple non linear side conditions that also should not be violated. Guess Ill try to solve this with a penalty approach within fmincon, just have to figure out where fmicon evaluates those values.


その他の回答 (0 件)




Community Treasure Hunt

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

Start Hunting!

Translated by