我試圖用一些線性約束來最小化四個變量的非線性函數。 Mathematica 8無法找到一個好的解決方案,在迭代的某個時間點給出函數的複數值。這意味着在這個過程中沒有啓用一個或一些限制條件。這是優化功能的缺陷還是限制?一些線性約束在函數NMinimize中用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 \我的\ n 不在{C,d爲實數, LWZ,長x寬} = {-0.718817,-1.28595,0.69171,-0.932461}
我將不勝感激,如果有人能夠給在這裏發生了什麼暗示
謝謝@george和克里斯的幫助。第一項提案沒有奏效。我仍然不知道爲什麼算法似乎超出界限,但在[(http://mathematica.stackexchange)中提出了令人滿意的解決方法。com/questions/42999/nimimize-out-of-bounds-on-some-linear-constraints)] Daniel Lichtblau。 – danielstariolo
@danielstariolo - 感謝您的後續信息。 –