python - pyomo 中的概率分布
问题描述
我想在 Pyomo 中解决一个受约束的 NLP。然而,目标函数包括正态分布,其中正态分布的参数包含决策变量,例如 - 表达式(norm.cdf(model.x[0]))
。
但我收到此错误:
Cannot convert object of type 'ndarray' (value = 1) to a numeric value.
有没有办法在 Pyomo 中处理正态分布?
解决方案
我已经看到 pyomo 不喜欢你可能习惯于在 pyton 或黑盒函数中使用的一些典型数学(在 pyomo和https://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
推荐阅读
- objective-c - 低分辨率连续自动对焦
- php - PHP:无法回显从 python 发布的变量在 `if(isset($_POST['sign']))` 块之外
- azure - 将公共上游源添加到 Azure 提要
- python - 从excel文件的每张表中提取标题并将其保存在数据框中
- sbt - 使用 SBT 从 URL 下载/使用文件
- postgresql - PostgreSQL - 如何仅合计正累积总和
- jenkins - Jenkins 插件“publish over cifs”中的部分参数参考
- python - how to accelerate my python code using ProcessPoolExecutor?
- c# - 在 c# 中以编程方式获取 msbuild 的 SolutionName
- java - 向tomcat 9中的类的侦听器实例发送上下文初始化事件的异常