matlab优化函数fmincon函数的问题
上面y1y2y3是三种方案的最后的能量效率,按理论来说,y1的值应该是最大的,但是,现在画出的图,三个几乎是重合的。我现在想知道,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.
希望能帮我解决这个问题,告诉我该怎么用这个函数,得出正确的结果 展开
我现在想知道,fmincon这个函数我用的是不是有问题,总感觉,它给出的值并不是最优值。
另外程序运行时,会有如下警告:
Warning: Trust-region-reflective method does not currently solve this type of problem,
using active-set (line search) instead.
希望能帮我解决这个问题,告诉我该怎么用这个函数,得出正确的结果 展开
1个回答
展开全部
1、是不是局部最优可以通过退出代码exitflag辅助判断。至于说全局最优,没有哪种优化方法能够保证,即使用全局优化工具箱中的遗传算法之类的,也只是增加得到全局最优解的机会。
2、那个警告没影响,可以忽略,不想看到的话,也可以关闭或通过指定算法来避免。
3、受字数限制,代码只能贴图片,但这样我没法测试,只能给你提这些建议。必要时,可以考虑通过网盘或博客上传代码。或者私信也可以。
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,优化无法进行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询