Failure in initial objective function evaluation. FMINUNC cannot continue.

I tried to evaluate this function but I am getting this error Failure in initial objective function evaluation.
FMINUNC cannot continue.
Please what is the best way to evaluate this function
f = x(2)^2*x(9)^2 + x(2)^2*x(9) + x(2)^3*x(9) - x(3)*x(5)*x(9)^2 + x(6)*x(8)*x(9)^2 + x(6)*x(8)*x(9)^3 + x(2)*x(6)*x(8)*x(9)^2;

 Réponse acceptée

Unless it is already in a function file, it needs to be an anonymous function:
f = @(x) x(2)^2*x(9)^2 + x(2)^2*x(9) + x(2)^3*x(9) - x(3)*x(5)*x(9)^2 + x(6)*x(8)*x(9)^2 + x(6)*x(8)*x(9)^3 + x(2)*x(6)*x(8)*x(9)^2;
If it is in a function file (and you have passed the function handle to fminunc correctly), the initial parameter estimates could be the problem. Please post those.

9 commentaires

These are the code, am I doing anyhthing wrong? Sorry I am new to matlab
fun =@(x)x(2)^2*x(9)^2 + x(2)^2*x(9) + x(2)^3*x(9) - x(3)*x(5)*x(9)^2 + x(6)*x(8)*x(9)^2 + x(6)*x(8)*x(9)^3 + x(2)*x(6)*x(8)*x(9)^2;
x0 = [-.5, 0];
options = optimoptions('fminunc','Algorithm','quasi-newton');
options.Display = 'iter';
[x, fval, exitflag, output] = fminunc(fun,x0,options);
You have 9 parameters, so ‘x0’ must have 9 elements.
For example —
fun =@(x)x(2)^2*x(9)^2 + x(2)^2*x(9) + x(2)^3*x(9) - x(3)*x(5)*x(9)^2 + x(6)*x(8)*x(9)^2 + x(6)*x(8)*x(9)^3 + x(2)*x(6)*x(8)*x(9)^2;
x0 = rand(9,1);
options = optimoptions('fminunc','Algorithm','quasi-newton');
options.Display = 'iter';
[x, fval, exitflag, output] = fminunc(fun,x0,options);
This runs without error, however I doubt the result is what you want.
Thanks very much Sir, it runs but ends up with this problem. How do I solve it? Thanks once agian.
fminunc stopped because the objective function value is less than
or equal to the default value of the objective function limit.
That is not an error or a problem. It is simply a message from fminunc that it stopped, and the reason.
Meanwhile, consider changing your fminunc call to:
[x, fval, exitflag, output] = fminunc(@(x)norm(fun(x)), x0, options);
That may be the result you want.
Wow thank you Sir for your quick reply, it produced this line, is that a problem?
fminunc stopped because it cannot decrease the objective function
along the current search direction.
Mr Star strider, thank you very much. I have gotten the result I want.
As always, my pleasure!
It is not a probllem. Again, fminunc is simply telling you that it stopped, and the reason.
Mohammed Ouallal
Mohammed Ouallal le 15 Août 2020
Modifié(e) : Bruno Luong le 15 Août 2020
It seems that you resolve the problem but did not show how! please be kind and share the complete solution.
Thank you for the understanding!
Yes, I did!
Unless it is already in a function file, it needs to be an anonymous function

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by