setting up the ''options' in fmincon

조회 수: 2 (최근 30일)
ektor
ektor 2017년 12월 29일
댓글: Star Strider 2017년 12월 29일
Dear all,
I want to maximize a function, where the univariate unknown, x, with respect to which the maximization takes place is bound between -1 and 1. This is the only constraint. So, I use this
[xx,fval,exitflag,output,lambda,grad,HH]=fmincon('function',x0,...
[],[],[],[],-1,1,[], options);
The function is complicated which means that I can not solve the gradient or Hessian anallytically
However, I am not sure how to set up the 'options' part.
I thought of something like
options=optimset('LargeScale','off','display','off','TolFun',0.0001,'TolX',0.0001,...
'GradObj','off', 'Hessian','off','DerivativeCheck','off');
or
options = optimoptions('fmincon','Display','off','Algorithm','sqp');
Is there a more correct set up for the 'options'?
When I use the fminunc:
options=optimset('LargeScale','off','display','off','TolFun',0.0001,'TolX',0.0001,...
'GradObj','off', 'Hessian','off','DerivativeCheck','off');
[xx,fval,exitflag,output,G_sum,HH]=fminunc('function',x0,options);
I get better results but sometimes the algorithm stops and throws me the following warning
Error using roots (line 27)
Input to ROOTS must not contain NaN or Inf.
Error in lineSearch
Error in lineSearch
Error in lineSearch
Error in lineSearch
Error in fminusub (line 189)
lineSearch(funfcn,x,dir,f,dirDerivative, ...
Error in fminunc (line 457)
[x,FVAL,GRAD,HESSIAN,EXITFLAG,OUTPUT] = fminusub(funfcn,x, ...
Error in unified_2 (line 92)
[xx,fval,exitflag,output,G_sum,HH]=fminunc('function',x0,options,...
Thanks

채택된 답변

Star Strider
Star Strider 2017년 12월 29일
If you run it with no stated options (using the defaults instead) what is the result?
The NaN or Inf problem results when you get either 0/0 or something/0. See if you can ‘trap’ a zero denominator in your code for ‘function’. If the denominator is zero, substitute 1E-8 for it. Make further small changes or change your options structure if that causes misleading results.
Since you have a ‘complicated’ function, you will likely have to have to experiment on your own with solutions.
  댓글 수: 6
ektor
ektor 2017년 12월 29일
Many thanks!
Star Strider
Star Strider 2017년 12월 29일
As always, my pleasure!
Note that the correct call is:
options = optimset(@fmincon, 'display','off');
I am certain that you already discovered that.
If my Answer helped you solve your problem, please Accept it!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile 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!

Translated by