Give gradient to fmincon
13 ビュー (過去 30 日間)
so I am using fmincn to solve a problem. Im somehow not to satisfioed with the results because the solver seems to bug itsself into the lower boundary limit and ste sthe solution for 1 of the 3 parameters to zero therefore. Lokking at the gradient output it seems like there is a potential to optimize, because the gradient for 2 of the variables is like 10^-2, but for the one peramater where the solution is on the boundary, the gradient is like 10^4.
So I know that there is the possibility to set DerivativeCheck on and to give it a user suplied gradient. But I can only activate SpecifyObjectiveGradient to on or off. I am not sure wethere the user suplied gradient should represent a treshold that the output gradient should satisfy or if its an analytical gradient funtion that is required. Unfortunately I can not provide an analytical solution because the function is just to complex, filling multiple pages..
So is there another possibility to stop fmincon from bugging one of the parameters into the boundary since fmincon clearly knows that the gradient at the solution point is pretty bad?
Matt J 2022 年 10 月 11 日
編集済み: Matt J 2022 年 10 月 11 日
If the problem is constrained, the gradient in a local extremum usually is not 0.
In fact, if the gradient is non-negative on the lower boundary, it is a very strong sign that a valid local minimum has been found. If you think this is a sub-optimal local minimum, you should try other initial guesses x0.
If the function is too complex to know if it is even differentiable, you may even want to try a non-derivative-based solver like ga, if you have the Global Optimization Toolbox, or fminsearch if you have a small number (<6) of unknnown parameters.
Matt J 2022 年 10 月 12 日
its A=[0,1,1], b=1; but x(2)+x(3) in the solution are always larger 1
That in itself doesn't imply a violation. It depends on the ConstraintTolerance parameters that you've set.
You also need to check exitflags. Possibly, ga could not find a feasible solution because there is none.
その他の回答 (0 件)
Find more on Solver Outputs and Iterative Display 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!