Mathematica:NMinimize没有按预期工作

时间:2013-06-22 06:18:45

标签: optimization wolfram-mathematica

我正在尝试使用有用的NMinimize函数制作管网优化程序。

我正在使用一个小网络测试我的程序:3个管道和16种不同的直径。这个管网有16 ^ 3 = 4096种组合,使用蛮力我发现最好的可行组合(最便宜)是直径为{8,4,7}的组合及其值(由我的目标函数给出)定义)是:

ObjectiveFunction[{8,4,7}]
(* 1.61503*10^6 *)

我的ObjectiveFunction有点大。我不认为我会发布它。我使用_?NumericQ,_?ListQ等来定义ObjectiveFunction和我正在使用的所有其他函数。

然后我将NMinimize应用于ObjectiveFunction(带约束等)来解决问题,这就是我得到的:

(* {1.83824*10^6,{d1 -> 8, d2 -> 4, d3 -> 8}} *)

起初我就像“是的,好的,那非常接近”。但后来我验证了解决方案......

ObjectiveFunction[{8,4,8}]
(* 1.84853*10^7 *)

......哇?

然后我尝试使用ReplaceAll:

ObjectiveFunction[{d1,d2,d3}]/.{d1 -> 8, d2 -> 4, d3 -> 8}
(* 1.83824*10^6 *)

与NMinimize相同的结果。

因此ReplaceAllNMinimize存在问题。他们没有给出预期的结果。

为什么呢?我该怎么办?

0 个答案:

没有答案