Asked by rio novendra
on 16 May 2013

I have a constrained minimization problem with objective function (in simplified form)

z=b1+p1*log(p1/(p1+p2+p3))+b2+p2*log(p2/(p1+p2+p3))+b3+p3*log(p3/(p1+p2+p3)) where b1=a1*2,%(a1 is a constant input) b2=a2*3,%(a2 is a constant input) b3=a3*4,%(a3 is a constant input) and constraints 2*p1+3*p2=A1,%(A1 is a constant input) 3*p2+5*p3=A2,%(A2 is a constant input) p1>=0, p2>=0, p3>=0,

so, I wrote on my script a1=input('a1='); a2=input('a2='); a3=input('a3='); A1=input('A1='); A2=input('A2='); A=[-1,0,0;0,-1,0,0;0,0,-1];B=[0;0;0];Aeq=[2,3,0;0,3,5];Beq=[A1;A2]; optimal_p1p2p3=fmincon(@fozw,[0.1;0.1;0.1],A,B,Aeq,Beq); function z=fozw(w); p1=w(1);p2=w(2);p3=w(3); z=b1+p1*log(p1/(p1+p2+p3))+b2+p2*log(p2/(p1+p2+p3))+b3+p3*log(p3/(p1+p2+p3)); end end Then, when I run the script. It appeared on command window solver has stop prematurely fmincon stop because it exceeded function evaluation limit optimal_p1p2p3= NaN NaN NaN

What is the possible error?.

*No products are associated with this question.*

Answer by Alan Weiss
on 17 May 2013

Accepted answer

Your function has logarithms and division. It seems to me quite likely that fmincon steps into a region where the function is undefined, and cannot proceed.

I suggest that you do two things:

- Ensure that your initial point x0 evaluates to a finite value.
- Use the interior-point algorithm, which is robust to occasional evaluation failures.

Good luck,

Alan Weiss

MATLAB mathematical toolbox documentation

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply Today
## 1 Comment

## Walter Roberson (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/75947#comment_149191

Please read the guide to tags and retag this question; see http://www.mathworks.co.uk/matlabcentral/answers/43073-a-guide-to-tags

Also please read http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup