问题标签 [pyomo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pyomo - GLPK - 错误
我已经安装了 Pyomo (v 4.4.1) 和 GLPK for Windows (v 4.55)。我已将 的目录添加glpsol.exe
到 PATH 变量中,并且可以glpsol --help
从命令提示符的任何目录中成功使用该命令。根据Pyomo 的博客,就 Pyomo 而言,这应该表明 GLPK 安装成功。但是,当我尝试以下示例时:
我得到错误:
该glpsol.exe
文件位于C:\glpk
并已添加到 PATH 变量中。
我似乎无法做到这一点,任何帮助将不胜感激!
python - Pyomo 属性、方法、函数
我是新的 pyomo 用户。我想知道有没有任何文件或方法可以查看pyomo的所有属性、方法和功能?CBC的同样问题。
python - 从 Python 脚本调用 PySP 渐进式对冲
Pyomo 文档的第 18.1 章(https://software.sandia.gov/downloads/pub/pyomo/PyomoOnlineDocs.html#_pyomo_overview )介绍了在 Pyomo中使用 Python 脚本的方式。但是,我不太明白是否可以以相同的方式使用 PySP 渐进式对冲。我想在 Python 脚本中定义一个模型,并使用 PySP Progressive Hedging 和 Gurobi 作为求解器来解决它。我的问题是,如何从 Python 脚本调用 PySP PH?我发现的唯一方法是使用命令行参数调用 runph。
非常感谢。
python - 如何在pyomo.environ模块下创建二维集合对象
我尝试使用 pyomo.environ 创建一个 LP 模型。但是,我很难创建集合。对于我的问题,我必须创建两组。一组来自一堆节点,另一组来自节点之间的几个弧。我通过使用 Networkx 创建一个网络来存储我的节点和弧。节点数据以元组形式保存为(经度,纬度)。弧保存为 (nodeA, nodeB),其中 nodeA 和 nodeB 都是元组中的坐标。
因此,节点类似于:
(-97.97516252657978, 30.342243012086083)
而且,圆弧类似于:
((-97.97516252657978, 30.342243012086083), (-97.976196300350608, 30.34247219922803))
我尝试创建集合的方式如下:
但是,我不断收到有关 arc_set 的错误消息。
我发现我的 arc_set 不知何故变成了一个元组而不是两个元组,这很奇怪。然后我尝试将我的节点和弧转换为字符串,但仍然出现错误。有人可以给我一些提示吗?或者如何删除这个错误?谢谢!
python - Python Pyomo:Pyomo 中的变量域错误
我想解决一个整数规划问题,其中决策变量被限制在一个特定的集合中。
例如,必须在 [2,5,7,10] 中选择决策变量 xi。
为了测试,我使用 Pyomo 编写了 python 代码,如下所示:
执行这些代码时,我收到一条错误消息:“TypeError: Invalid domain type for variable with name 'x'. Variable is not Continuous, integer, or binary”
以下是我的问题:
- 这个错误的原因是什么?
- 如何处理?
- 是否有任何其他优化工具可以处理此类问题?
感谢您的帮助!
python - 接口 IPyomoTask 已经定义
我正在使用 Pyomo,我想进行一系列优化,其中先前优化的一些结果用于下一步。
AgOpt.py
问题是,当我解决代码(使用 Spyder)一次时,第二次会引发此错误:
“接口 IPyomoTask 已定义”
我必须退出 Spyder 并再次进入。
有什么建议吗?
Python 和 anaconda 版本:
Python 3.5.2 |Anaconda 4.2.0(64 位)| (默认,2016 年 7 月 5 日,11:41:13)[MSC v.1900 64 位 (AMD64)]
optimization - 非凸约束:CPLEX 无法处理
下面指出的数学模型给求解器 CPLEX 带来了麻烦。我知道这个问题是由于约束的非凸性而出现的。
模型寻求 p 的最优值。这个想法是这样的;对于大于 g 的 p 值,目标函数应考虑 m 的成本(即 d m),反之亦然(即 d n)。b 是二进制变量,m、n 和 g 是假定给定的参数。
我使用 Pyomo(基于 Python 的优化建模语言)和求解器 CPLEX。运行代码最终会出现以下错误消息:
请就如何通过修改约束或其他方式绕过这个非凸性问题咨询我。
谢谢。
performance - 在非线性求解器中,什么影响求解器时间与 NLP 函数评估?
我在理解非线性优化中的性能如何受求解器引擎接口的特定方式影响时遇到了一些困难。
我们有一个优化模型,它的第一个版本是用 GAMS 编写的。IPOPT(一种常见的 FOOS 非线性求解器引擎)在 IPOPT(无函数评估)中为每个优化返回 1.4 CPU 秒的执行时间,在函数评估中返回 0.2 CPU 秒的执行时间。
当我们将模型转换为 C++(为了更好地考虑模型的非优化组件)并通过其 C++ API 连接 IPOPT(使用 ADOL-C 和 ColPack 进行 AD)时,我们在 IPOPT 中获得了 0.7 秒的执行时间和 9.4 秒函数评估中的秒数(IPOPT 的改进可能是由于通过源代码编译 IPOPT,我们能够使用 GAMS 版本的 IPOPT 中不可用的更好的线性求解器)。
因此,使用 C++(诚然使用了优化不佳的代码)给我们的结果比 GAMS 慢了约 50 倍,部分由更好的求解器时间补偿。
我们现在正在评估将模型转换为其他语言的可行性,无论是 Python 与 Pyomo,还是 Julia 与 JuMP。
但我们首先想了解求解器在每一步所做的函数评估如何依赖于所实现的特定语言。
使用 C++,很明显创建优化模型的函数在每次迭代时都直接执行(评估),因此它们的实现方式很重要(特别是,梯度和 hessian 每次都重新计算,至少在我们的实现中) .
Pyomo 和 JuMP 怎么样?是在 Python 和 Julia 中评估的每次迭代,还是 Pyomo 和 JuMP 会首先在(我猜)C 中渲染模型,计算(而不是评估)梯度和粗麻布,然后是这个“C 版本”每次都会被评估?这显然会产生很大的不同,尤其是对于 python ..
pyomo - Pyomo:使用 if 语句进行约束
我目前正在尝试解决这个问题。我需要最大化这家公司的利润。
那是我目前拥有的代码:
这是我试图为我的约束编写的代码,只要它不超过 2000 个产品,它就只使用第一个斜率:
如果有人有提示,我该怎么做就太好了。
提前谢谢你,帕特里克
for-loop - 如何在 Python Pyomo 中使用“for循环”进行迭代约束
我正在努力for
在 Python Pyomo 中使用循环来制作多个约束。
我应该可以正常工作的代码概念如下(这是行不通的)。
我想通过使用for
循环、m.minUsePreA
、m.minUsePreB
、m.minUsePreC
和来制作这四个约束m.minUsePreD
。