帮助理解最优化问题和解决他们在Matlab(选择适当的解算器)

1视图(30天)
你好
也许一个经典短语:我一直试图理解这几天以来但不会成功——真的对我!
让我们用一个简单的 限制 优化问题从这里 maximazing revenu bubget约束 。所以现在的问题是
我们可以在Matlab解决它 fmincon
目标= @ (x) -200 * x (1) ^ (2/3) * x (2) ^ (1/3);
[X, FVAL EXITFLAG、输出λ,校友,黑森]= fmincon(目标,[1],[],[],[170],20000年,[],[],[])
> > X =
666.6669 - 39.2157
λ=
结构体字段:
eqlin: 2.5927
或者我们可以使用拉格朗日代价函数和重写这些无约束最优化问题(我在此阶段?)
然后解决这个目标函数 fminsearch fminunc (甚至 遗传算法 )
λ= 2.5927;
> >客观= @ (x) -200 * x (1) ^ (2/3) * x(2) ^(1/3)λ* (20 * x (1) + 170 * (2) - 20000);
x = fminuncfminunc(目标,[1])
> >问题出现无限。
fminunc因为目标函数值小于停了下来
目标函数的值限制。
<停止标准详细信息>
x =
1.0 e + 19 *
0.2504 - 6.4423
> > x = fminsearch(目标,[1])
退出:最大数量函数的评估已经被超过
——增加MaxFunEvals选择。
当前的函数值:-51855.290146
x =
0.1088 - 1.7458
给出不同的结果,甚至不是接近限制的解决方案 fmincon。 我试图改变符号,把λ= 1 ....
为什么这样,我错了或者我不理解吗?

接受的答案

马特·J
马特·J 2019年5月17日
编辑:马特·J 2019年5月17日
你必须形成一个凸的问题目的确定拉格朗日最小化会像你期待(见 充分条件强对偶性 )。你可以如下:
目标= @ (x)日志(x(1)) 1/3 2/3 * *日志(x (2));
[Xcon, FVAL EXITFLAG、输出λ,校友,黑森]= fmincon(目标,[1],[],[],[170],20000年,[],[],[])
objectiveUC = @ (x) 2/3 *日志(x(1)) *日志(x (2)) + 1/3 LAMBDA.eqlin * (20 * x (1) + 170 * (2) - 20000);
Xunc = fminunc (objectiveUC [1])
这将导致
Xcon =
666.6664 - 39.2157
Xunc =
666.6533 - 39.2154
3评论
马特·J
马特·J 2019年5月20日
3目标相差单调转换,例如,
objective_2 =日志(-objective_1/200)
是一个单调函数objective_1。因此,如果一个人增加或减少,那么另一方,因此他们有最小值在同一位置。

登录置评。

更多的答案(0)

类别

找到更多的在和迭代解算器输出显示帮助中心文件交换

社区寻宝

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

开始狩猎!