MATLAB Answers


How can I choose the parameter of fmincon to avoid "Solver stopped prematurely."?

Asked by guoyu ding on 18 May 2018
Latest activity Commented on by guoyu ding on 18 May 2018

The Following code:

funct=@(X,a,c,sigb,sigs,u) (1-a)*exp(-sigb)*exp(-sigs)*(sigb.^X(:,1)./factorial(X(:,1))).*(sigs.^X(:,2)./factorial(X(:,2)))+a*c*exp(-sigb)*exp(-u-sigs)*(sigb.^X(:,1)./factorial(X(:,1))).*((u+sigs).^X(:,2)./factorial(X(:,2)))+ a*(1-c)*exp(-u-sigb)*exp(-sigs)*((u+sigb).^X(:,1)./factorial(X(:,1))).*(sigs.^X(:,2)./factorial(X(:,2)));  
fun=@(par) -prod(funct([B1 S1],par(1),par(2),par(3),par(4),par(5))); 
[parhat,fval] = fmincon(fun,[0.1,0.1,10^7,10^7,10^7],[],[],[],[],[0,0,0,0,0],[1,1,10^9,10^9,10^9],[],options)

However, The error occurs,

Solver stopped prematurely. fmincon stopped because it exceeded the function evaluation limit,options.MaxFunEvals = 6000 (the selected value). I could not find the result.Is any errors in my code?


Did you think about your vector of initial guesses for the solution variables ? E.g. Setting sigb = 10^7 and sigs = 10^7 makes "fmincon" evaluate exp(-10^7) !!!!!

I try to decrease the sigb/sigs from 10^7 to 10. However, Solver still stopped prematurely. It shown that it exceeded the function evaluation limit. At end,I uploaded the data.

Sign in to comment.

0 Answers