首页 > 解决方案 > pyomo 中的概率分布

问题描述

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

但我收到此错误:

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

有没有办法在 Pyomo 中处理正态分布?

标签: pythonpyomo

解决方案


我已经看到 pyomo 不喜欢你可能习惯于在 pyton 或黑盒函数中使用的一些典型数学(在 pyomohttps://groups.google.com/forum/#!topic中优化 Fortran 函数) /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


推荐阅读