最大化问题,fmincon优化

6视图(30天)
Az.Sa
Az.Sa 2022年6月13日
评论道: Az.Sa2022年6月13日
你好,
我试图解决这个与matlab最大化问题。
我用下面的代码
目标= @ (x) - (-.858 * x (1) -.04182 * x (2) -1.645 *√(.5882 * x (1) -.055 * x (2))。^ 2 + (-.0558 * x (1) + .352 * x (2))。^ 2));
Aeq = [1];
说真的= 1;
磅= 0 * (2);
乌兰巴托= 1 * (2);
x0 = (0,0);
x = fmincon(目标,x0, [] [], Aeq,说真的,磅,乌兰巴托)
一旦我收到以下运行代码:
警告:长度下界是<长度(x);填充在失踪的下界
负无穷。
>在checkbounds(33)行
fmincon(第324行)
警告:长度上界是<长度(x);填充在失踪的上界
+正无穷。
>在checkbounds(47)行
fmincon(第324行)
任何建议来改善我的代码。
谢谢你!

接受的答案

约翰D 'Errico
约翰D 'Errico 2022年6月13日
编辑:约翰D 'Errico 2022年6月13日
信谊x y
objxy = (-.858 * x -.04182 * y - 1.645 * sqrt ((。5882 * x -.055 * y)。^ 2 + (-。0558*x +.352*y).^2 ));
如果x + y = = 1我们可以取代与1 - x y。
objx =潜艇(objxy y 1 - x)
objx =
显然,解决方案必须在0和1之间的x和y的约束。
fplot (objx [0,1])
乍一看,往往表明函数是单调递减的,最大的x = = 0。但实际上,如果我们扩大轴接近于零,我们发现一个非平凡的最大值。
fplot (objx [0, 0.02])
它看起来像一个马克斯存在x = 0.06左右。
现在,fmincon将如何做。首先,这是毫无意义的:
磅= 0 * (2);
乌兰巴托= 1 * (2);
这不是你如何在MATLAB中创建向量长度为2的。阅读帮助! ! ! !
现在,fmincon是一个最小值。你想最大化状态。所以否定客观。你真的明白了正确的一部分。
目标= @ (x) - (-.858 * x (1) -.04182 * x (2) -1.645 *√(.5882 * x (1) -.055 * x (2))。^ 2 + (-.0558 * x (1) + .352 * x (2))。^ 2));
Aeq = [1];
说真的= 1;
磅= 0 (1、2);
乌兰巴托= 1 (1、2);
x0 = [。5。5);
fmincon (@ (x)目标(x), x0, [], [], Aeq,说真的,磅,乌兰巴托)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
ans = 1×2
0.0066 - 0.9934
这是我们发现图形化的解决方案。

更多的答案(0)

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!