How to boost gradient component for optimization problem
2 views (last 30 days)
Show older comments
Dear all,
I'm working on an inverse problem to identify material parameters. This problem involves looking for a minimum of a cost function that is built using the sought parameters. What happens is that my cost function is much more sensitive to a certain parameters so that the others are not correctly identified. I found that it is common to use cost function scaling but I'm not entirely sure how to do that in my case since my parameters have physical meaning.
I use following code to run the optimization:
[optiParams, phi, ~, output] = fmincon(@(plasParams)...
VFOptimisation(plasParams, strain, area, FGlob, VF, 'optimised', meshData,...
options), inpParams, [], [], [], [], LB, UB, [], ...
optimoptions('fmincon', 'TolFun', 1e-10, 'TolX', 1e-10, 'algorithm', 'sqp',...
'MaxFunEvals', 3000, 'TypicalX', [1e2 1e4], 'PlotFcn',[@optimplotx],...
'GradObj', 'off', 'Display', 'iter'))
I investigated multiple starting points and only rarely my identification finds the minimum (which I roughly know where is), see the picture (the contour plot is actually log of my cost fun so the real function is more flat in y direction):
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/154382/image.png)
My reference parameters have order : sigma_0 = 297.5 MPa, H = 3170 MPa, so I tried to fiddle with TypicalX parameters in optimization varying it from 1e3-1e10 for the 2nd component (H) but I didn't see improvement. The problem is even more profound when I investigate 4 parameters model.
I found that when the optimization fails (TolX is reached) it ends up much faster with no change in H from initial point:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/154383/image.png)
However, I successful trial, more iterations are performed and eventually H is changed:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/154384/image.png)
Any ideas how could I improve my optimization so it's more reliable?
Cheers,
Aleksander Marek
0 Comments
Answers (1)
Matt J
on 23 Jun 2016
Edited: Matt J
on 23 Jun 2016
I found that when the optimization fails (TolX is reached) it ends up much faster with no change in H from initial point:
This often means you have quantization operations (round, ceil, floor, etc...) in your cost function. These are illegal in fmincon. They create plateaus in the graph of your objective where the algorithm can get stuck (because they are local minima).
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!