【发布时间】:2014-02-21 21:19:00
【问题描述】:
我试图通过一些线性约束最小化四个变量的非线性函数。 Mathematica 8 无法找到一个好的解决方案,在迭代中的某个点给出函数的复杂值。这意味着在该过程中没有启用一个或一些约束。这是优化功能的错误还是限制?
要最小化的函数是
ff[lxw_, lwz_, c_, d_] := - J1 (lxw + lwz) - 2 J2 c +
T (-Log[2] - 1/2 (1 - lxw) Log[(1 - lxw)/4] -
1/2 (1 + lxw) Log[(1 + lxw)/4] -
1/2 (1 - lwz) Log[(1 - lwz)/4] -
1/2 (1 + lwz) Log[(1 + lwz)/4] + 1/2 (1 - d) Log[(1 - d)/16] +
1/8 (1 + 2 c + d - 2 lwz - 2 lxw) Log[
1/16 (1 + 2 c + d - 2 lwz - 2 lxw)])
在哪里
T = 10;
J1 = 1;
J2 = -0.2;
是常量参数。那我试试
NMinimize[{ff[lxw, lwz, c, d],
2 c + d - 2 lwz - 2 lxw >= -0.999 &&
-0.999 <= lxw <= 0.999 &&
-0.999 <= lwz <= 0.999 &&
-0.999 <= c <= 0.999 &&
d <= 0.9999}, {lxw, lwz, c, d}]
结果
NMinimize::nrnum: "函数值 5.87777[VeryThinSpace]-4.87764\ I\n 在 {c,d,lwz,lxw} = {-0.718817,-1.28595,0.69171,-0.932461} 处不是实数。
如果有人能提示这里发生的事情,我将不胜感激。
【问题讨论】:
标签: wolfram-mathematica constraints mathematical-optimization