pyomo中的概率分布

时间:2019-01-04 10:42:41

标签: python pyomo

我想解决Pyomo中受约束的NLP。但是,目标函数包括一个正态分布,其中正态分布的自变量包含决策变量,例如像-(norm.cdf(model.x[0]))这样的表达式。

但是我收到此错误:

 Cannot convert object of type 'ndarray' (value = 1) to a numeric value. 

在Pyomo中是否可以使用正态分布?

2 个答案:

答案 0 :(得分:0)

我认为您不能将变量用作参数,因为pyomo的变量不是python的变量。您可以编写正态分布的表达式,也许可以。

答案 1 :(得分:0)

我发现pyomo不是您可能习惯于使用pyton或黑匣子函数(Optimizing Fortran function in pyomohttps://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