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;
采纳的回答
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 个评论
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.
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’
更多回答(0 个)
类别
在 帮助中心 和 File 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!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
