Optimization Mathematica:尽量减少未按预期工作
我正在尝试使用有用的NMINIMIMIZE函数制作一个管网优化程序 我正在用一个微型网络测试我的程序:3根管道和16种不同的直径。该管网有16^3=4096个组合,使用蛮力,我发现最佳可行组合(最便宜)是直径为{8,4,7}的组合,其值(由我定义的目标函数给出)为: 我的目标函数有点大。我想我不会把它寄出去。我使用了?NumericQ、?ListQ等等来定义ObjectiveFunction和我正在使用的所有其他函数 然后我将NMinimize应用于ObjectiveFunction(带约束等)以解决问题,这就是我得到的结果:Optimization Mathematica:尽量减少未按预期工作,optimization,wolfram-mathematica,Optimization,Wolfram Mathematica,我正在尝试使用有用的NMINIMIMIZE函数制作一个管网优化程序 我正在用一个微型网络测试我的程序:3根管道和16种不同的直径。该管网有16^3=4096个组合,使用蛮力,我发现最佳可行组合(最便宜)是直径为{8,4,7}的组合,其值(由我定义的目标函数给出)为: 我的目标函数有点大。我想我不会把它寄出去。我使用了?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相同的结果
因此,ReplaceAll
和NMinimize
存在问题。他们没有给出预期的结果
为什么??我该怎么办 这感觉就像您定义了一个ObjectiveFunction,它接受符号参数,而另一个接受数字参数。在处理参数模式时,请确保清除所有[ObjectiveFunction]。
ObjectiveFunction[{d1,d2,d3}]/.{d1 -> 8, d2 -> 4, d3 -> 8}
(* 1.83824*10^6 *)