setting up the ''options' in fmincon
조회 수: 2 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
채택된 답변
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
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개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!