fminsearch with side conditions
4 ビュー (過去 30 日間)
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 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.
その他の回答 (0 件)
Find more on Linear Least Squares in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!