matlab优化函数fmincon函数的问题

上面 y1 y2 y3是三种方案的最后的能量效率,按理论来说,y1的值应该是最大的,但是,现在画出的图,三个几乎是重合的。
我现在想知道,fmincon这个函数我用的是不是有问题,总感觉,它给出的值并不是最优值。
另外程序运行时,会有如下警告:
Warning: Trust-region-reflective method does not currently solve this type of problem,
using active-set (line search) instead.
希望能帮我解决这个问题,告诉我该怎么用这个函数,得出正确的结果

1、是不是局部最优可以通过退出代码exitflag辅助判断。至于说全局最优,没有哪种优化方法能够保证,即使用全局优化工具箱中的遗传算法之类的,也只是增加得到全局最优解的机会。

2、那个警告没影响,可以忽略,不想看到的话,也可以关闭或通过指定算法来避免。

3、受字数限制,代码只能贴图片,但这样我没法测试,只能给你提这些建议。必要时,可以考虑通过网盘或博客上传代码。或者私信也可以。追问

我私信你了,求回复

追答

1、你的程序有问题,如果排除随机因素,三个结果是相同的。

原因在于,你用arrayfun调用f返回的都是第一个参数,y2、y3根本没起作用。

把主程序改成:

Pt=10:10:50;     
[y1,y2,y3]=arrayfun(@f1,Pt);
plot(Pt,y1,'b-',Pt,y2,'g-',Pt,y3,'r-');
xlabel('系统总发射功率');
ylabel('能量效率');
legend('最优天线选择','一种简单的天线选择','不进行天线选择');

2、对y2的优化存在问题。

现在的情况是,marmin、mbrmin的结果都是0,导致目标函数出现NaN,优化无法进行。

温馨提示:内容为网友见解,仅供参考
无其他回答

求助Matlab优化函数fmincon的问题
!!!当你的目标函数是M文件时,那么我们可以如下调用句柄方式:fmincon(@myfun...)文件名方式:fmincon('myfun'...),由于文件名可以作为M函数来调用当你的目标函数是子函数时,那么只能使用句柄,不能使用函数名字符串,因为函数名在Matlab中是不能直接调用(注意:Matlab调用M函数的时候都是使用M文...

matlab优化函数fmincon函数的问题
1、是不是局部最优可以通过退出代码exitflag辅助判断。至于说全局最优,没有哪种优化方法能够保证,即使用全局优化工具箱中的遗传算法之类的,也只是增加得到全局最优解的机会。2、那个警告没影响,可以忽略,不想看到的话,也可以关闭或通过指定算法来避免。3、受字数限制,代码只能贴图片,但这样我没法...

关于用MATLAB优化函数fmincon进行约束优化编程的问题?
1、将数值分别赋值给x、y 2、初定系数的初值 3、利用 nlinfit函数,求出系数 第二部分,才是求其极值 求解步骤:1、创建目标函数,即 y=k*theta+a0+a1*cos(w*theta)+b1*sin(w*theta)+a2*cos(2*w*theta)+b2*sin(2*w*theta)+a3*cos(3*w*theta)+b3*sin(3*w*theta)+a4*cos(4*w*...

在matlab中,使用优化工具箱fmincon,计算一个优化问题,但报错了,求大神...
目标函数(Objective function)应该设置为@(x)-x(1)*x(2)*x(3),像你现在的目标函数是需要三个输入参数的,而fmincon调用它的时候只会提供一个参数,所以导致输入参数不足。另外,像这种简单的优化问题,其实也可以直接用命令行调用:fmincon(@(x)-x(1)*x(2)*x(3),[10 10 10],[-1 -2...

matlab fmincon的问题!
程序的问题很多:1、如楼上所说,n并不是一个函数句柄或函数名。这是个基本错误。2、不要乱定义符号变量。尤其在nonlcon中,定义符号变量导致函数输入参数全被覆盖了。3、需要搞清楚:未知数有两个——m和n,尽管你想优化n,但不能抛开m不管。4、int是用于符号积分的,优化要的是数值积分。楼上...

一个简单的matlab问题,fmincon优化,谢谢
是一个凸函数,函数的极小值发生在 f 对 x(1)和 x(2)的偏导为 0 的地方,或者在约束条件的边界上。本题的主函数的点为 x(1)=2,x(2)=3,在约束条件以外,所以,最小值发生在离这个点最近的约束条件边界上,即 x(1)=3,x(2)=4,其对应的最小值为 28。用Matlab的fmincon的话,X=...

关于matlab最优化中fmincon函数的使用问题
fmincon函数求它的最优解时,只是吧x作为变量,当然这也是你希望的 个然建议ln = [1+a(3),a(2),a(1);a(1),1+a(3),a(2);a(2),a(1),1+a(3)]求出来后,再把ln的确切的值带进fconfun函数中,让fconfun函数只有一个变量x,然后你的程序应该就不会有错了~!

关于用MATLAB优化函数fmincon进行约束优化编程的问题
ceq=[]; %%非线性约束关系函数的输入是一个矩阵 2 function H=goal_func(x)x1=x(1);x2=x(2);x3=x(3);x4=x(4);F=0;for i=1:20;w表示输入角θ。输入角变化180度,分20次,每次变化9度。wi=1*pi*i.\/20;G=(atan(x1*sin(x4)\/(1-x1*cos(x4)))+acos((x1^2-x2^2+x...

如何用matlab求解非线性约束优化问题
对于非线性约束的优化问题,matlab有个很好的函数fmincon可以很容易解决。之前一个已经详细介绍了fmincon的用法,下面通过一个例子来说明用它来解决非线性约束问题。此题的问题描如下图。由于本经验主要是谈非线性约束下的最优化问题,对于其他线性约束就不再考虑。然后启动matlab。新建一个函数文件,用来写...

使用matlab的fmincon优化解决非线性问题,一直报错,求大神解答,小白在线...
问题出在约束条件和初值个数都是3个,则会要求目标值也是3个,而优化问题要求得出一个标题值,而不是3个目标值。所以,可这样改:建立目标函数的M文件:function m =fun1(x)m=cos(x)*4\/(3*pi);约束条件:function [g,h]=fun2(x)g=cos(5*x);%此处可改 h=[];%此处可改 操作函数:x...

相似回答