필터 지우기
필터 지우기

Is there any other alternative fuction that I can use instead of fminunc?.

조회 수: 8 (최근 30일)
salva
salva 2012년 9월 20일
Dear all,
I am using the function fminunc as I want to find the mode and the hessian matrix of a function. I use Matlab 2009 but I get an error related to this function
??? Error using ==> roots at 28
Input to ROOTS must not contain NaN or
Inf. Error in ==>
lineSearch>globalMinimizerOfPolyInInterval
at 304
stationaryPoint = roots([3*coeff(1)
2*coeff(2) coeff(3)]); Error in ==>
lineSearch>pickAlphaWithinInterval at 279
z =
globalMinimizerOfPolyInInterval(zlb,zub,coeff); Error in ==> lineSearch>sectioningPhase at
193
alpha =
pickAlphaWithinInterval(brcktEndpntA,brcktEndpntB,a,b,f_a,fPrime_a,f_b,fPrime_b); Error in ==> lineSearch at 55
[alpha,f_alpha,grad,exitflag,funcCount]
= sectioningPhase(funfcn, ... Error in ==> fminusub at 208
[alpha,f,grad,exitflagLnSrch,funcCountLnSrch]
= ... Error in ==> fminunc at 376
[x,FVAL,GRAD,HESSIAN,EXITFLAG,OUTPUT] =
fminusub(funfcn,x, ... Error in ==> testxa2 at 252
[xxx,fval,exitflag,output,gradient,H]=fminunc('modeA,x00,options,...
Is there any other alternative fuction that I can use instead of fminunc?. The function produces no error in Matlab2012 but only in matlab 2009
thank you

답변 (3개)

Matt Kindig
Matt Kindig 2012년 9월 20일
Hi Salva,
You could use fminsearch or fminbnd, two derivative-free optimizers. However, given that the error is thrown when the input to roots() is invalid, it would probably be better to catch that error before entering roots. You could put a check in your globalMinimizerOfPolyInInterval() function prior to calling roots() that checks that coeff(1:3) are all not NaN or Inf. Something like:
if all(isfinite(coeffs(1:3)),
stationaryPoint = roots([3*coeff(1) 2*coeff(2) coeff(3)]);
else
%do something to force the optimizer to reject this solution
end
  댓글 수: 2
salva
salva 2012년 9월 21일
thank you Matt. It seems that the
else
%do something to force the optimizer to reject this solution
is the most important of all.
Any suggestion for
%do something to force the optimizer to reject this solution?
thankss
salva
salva 2012년 9월 23일
Any comments are welcome
thanks

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


Walter Roberson
Walter Roberson 2012년 9월 23일
If you use an options structure that turns on function value checking, then the minimization will stop at the point that inf or NaN is produced.
  댓글 수: 3
Walter Roberson
Walter Roberson 2012년 9월 25일
You appear to already be constructing options, so include 'FunValCheck', 'on' when constructing the options.
salva
salva 2012년 9월 25일
thank you walter. Actually, I am looking the opposite. I want the process to continue even when the point that is being produced is inf or NaN (as in matlab2012)
thanks

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


Sean de Wolski
Sean de Wolski 2012년 9월 25일
fmincon's Interior-Point algorithm can recover from inf and nan output.
doc fmincon
  댓글 수: 8
salva
salva 2012년 10월 1일
The reason is that I do not know how to set it up!
Sean de Wolski
Sean de Wolski 2012년 10월 1일
Well since you don't need constraints you can ignore all of those inputs, just put some lower and upper bounds on your variables and use it just like fminunc
fmincon(foo,x0,[],[],[],[],lb,ub,options);

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

카테고리

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