我想解决Pyomo中受约束的NLP。但是,目标函数包括一个正态分布,其中正态分布的自变量包含决策变量,例如像-(norm.cdf(model.x[0]))
这样的表达式。
但是我收到此错误:
Cannot convert object of type 'ndarray' (value = 1) to a numeric value.
在Pyomo中是否可以使用正态分布?
答案 0 :(得分:0)
我认为您不能将变量用作参数,因为pyomo的变量不是python的变量。您可以编写正态分布的表达式,也许可以。
答案 1 :(得分:0)
我发现pyomo不是您可能习惯于使用pyton或黑匣子函数(Optimizing Fortran function in pyomo和https://groups.google.com/forum/#!topic/pyomo-forum/dK71XrHlBIM)的一些典型数学的爱好者。
我认为在这种情况下,您可能需要写出对象中正常cdf的近似值(粗略,我知道)。我可能会建议:
1/(model.x[0]*2.50663)*(1-model.x[0]**-2+3*model.x[0]**-4+15*model.x[0]**-6-105*model.x[0]**-8)
基于这篇文章:https://mathoverflow.net/questions/19404/approximation-of-a-normal-distribution-function
这里有其他不错的文章:http://www.hrpub.org/download/20140305/MS7-13401470.pdf