How to use gradient and Hessian in optimization problem when objective and constraint functions contain variables without analytic expression with respect to states?
이전 댓글 표시
I've write a code using Fmincon to minimize my objective function. But I found my results highly depend on my initial guess for the states and not always converge or take a very long time to compute. So I looked the tutorial introduced on "Matlab Optimisation Toolbox User Guide (2015)" about "Symbolic Math Toolbox Calculates Gradients and Hessians". But when I looked back my optimization problem, I don't know how to or whether it is possible to implement the tutorial method, since in both my objective and constraints functions there are variables which I need to find values according to look-up-tables based on my states which I want to optimize, for example:
%% objective function J = -(2*Fx_FL + 2*Fx_RL -Fdrag)/m/g;
Here Fdrag is the function of one of my states U, m and g are constants. Fx_FL is the force which depends on torque Tm_FL, and Tm_FL is interpolated from a look-up-table based on other three states (U, W_FL, Top1) [all these states are going to be optimized too]. Fx_RL has the same situation as Fx_FL described above. Since the look-up-table doesn't have analytic expression, I don't know how to generate the gradient and Hessian for my objective function and my constraints.
I also heard a method called automatic differentiation, but I don't know what it is and how it works.
Could you help me with my problem? Thank you very much.
답변 (1개)
Alan Weiss
2015년 4월 21일
0 개 추천
It doesn't sound as if gradients or Hessians will help in this case.
It sounds to me like your calculations might be based on solving a simulation or ODE. For suggestions in this case, see Optimizing a Simulation or ODE.
If I am wrong, then what is taking so much time in your objective function calculation?
Alan Weiss
MATLAB mathematical toolbox documentation
댓글 수: 2
Tao
2015년 4월 21일
Alan Weiss
2015년 4월 23일
It is possible that there is some nonsmoothness in your objective function or nonlinear constraint functions due to interpolating from table lookups. So follow the suggestion in my previous link and use larger-than-default finite differencing steps, and maybe central finite differences.
You might also try to smooth your objective or nonlinear constraint functions by basing them on some sort of spline or convolution.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
카테고리
도움말 센터 및 File Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!