是否存在已知的pyomo和python 3.11兼容性问题?
仅仅尝试最新/最棒的python发行版并导入pyomo,在pyomov6.4.2中就失败了:
Python 3.11.0 (v3.11.0:deaf509e8f, Oct 24 2022, 14:43:23) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> fr
我正在尝试创建多个具有不同名称的相等集合。我尝试了类似的方法:
model.j=model.i
我在操作章节(4.2)的Pyomo文档中看到了一些东西,但当我运行该程序时,我得到了以下错误:
RuntimeError: Attempting to re-assign the component 'i' to the same
block under a different name (j).
This behavior is not supported by Pyomo; components must have a
single owning block (or model
对于我的应用程序,我尝试使用输出列表的函数规则来初始化具体模型的参数。我用来索引这个参数的pyomo集是多维的。对于这个集合来说,多维是很重要的,因为它使得访问我正在为参数提取的值的数据结构更加简单。但是,当我试图以这种方式进行索引时,我会收到一个索引错误。
下面是一个简单的测试代码,说明了我的问题。
首先,我有必要的进口品。
## Testing pyomo sets and indexing
import pyomo.environ as pyo
import numpy as np
import itertools as iter
然后我定义了一个具体的模型和一些numpy数组。
M =
这个链接包含一个ALNS算法,用于优化MINLP铁路网模型(应用于马德里的网络)。虽然评论是用西班牙语写的,但我相信这不会有多大问题,因为谷歌翻译在这方面会有帮助。当我运行ALNP.py文件时,它一直工作到madridALNS.py文件中的代码的这个阶段,其中整个模型是在Pyomo的帮助下开发的:
#1 // output flow from each origin "wo" equal to demand of the destination origin pair "w"
def resd1_rule(model,w):
wo=model.tab
对于使用python进行优化编程,我是新手,我在为MILP问题在pyomo和PuLP中定义变量时遇到了问题。我正在使用基因表达数据,我对如何将变量定义为MXN矩阵感到困惑。我正在尝试使用pyomo或PuLP。我知道如何使用MATLAB和定义它,所以我是说,它使它更有助于任何人理解。
y =优化变量(‘y’,M,N,'Type',‘整型’,'LowerBound',0,‘上界’,1)
此外,如果您认为有更好的python包,请给我您的建议。
提前谢谢!
我不确定问题是依赖于Im使用的版本,还是im不导入某些东西,但我从哪里得到这个示例的源没有提到任何其他环境,而是提到了pyomo.environ (im在python3.6上工作)。我下载coopr是因为我认为它很重要,但是没有任何变化。我已经尝试创建一个.dat文件,但是当我运行解决程序时,会得到相同的错误消息。有什么建议吗?我正在读“皮奥莫之书”(2012),这是最容易声明数据的方法,所以我想学习它。另外,如果你知道一个皮奥莫课程(正式或非正式),请分享。非常感谢你抽出时间。
from pyomo.environ import*
from coopr.pyomo import*
mode
我在阅读python 中的集合时,弄不清楚python中的集合元素必须是可变的还是不可变的?因为在定义部分中,他们说:“集合包含唯一和不可变对象的无序集合。”如果它是真的,那么一个集合如何能够包含列表,因为列表是可变的?
有人能澄清我的疑虑吗?
>>> x = [x for x in range(0,10,2)]
>>> x
[0, 2, 4, 6, 8] #This is a list x
>>> my_set = set(x) #Here we are passing list x to create a set
>&
我有一个具有稀疏值集的Pyomo模型,但是当我试图根据这个稀疏集索引一个二进制变量时,我得到了错误Cannot index a component with an indexed set。简单的例子是:
model = ConcreteModel()
model.S = Set([1, 4, 6])
model.V = Var(model.S, within=Binary)
我试图编写一个Pyomo模型,其中我有一组变量,由j在{1,2,…,N}中索引,对于每个j,在{1,.,N_j}中有一个i。
我现在的代码是:
n0=28
n1=8
n2=8
n3=8
n4=10
N=[n0, n1, n2, n3, n4]
rN=range(5)
model = ConcreteModel()
model.J = [RangeSet(1,N[i]) for i in rN]
model.X = [Var(model.J[i], within=NonNegativeReals) for i in rN]
当我试图访问一个变量时,我会得到以下错误:
>>>
我编辑我的代码,包括所有涉及的参数和变量:
(D是从Python导入的numpy矩阵)
import pyomo
from pyomo.environ import *
from array import *
import numpy as np
import scipy as sp
from diff_matrix import D ##N=10????
print(D)
m =ConcreteModel()
...
m.n = Param(initialize = 10, within = Integers)
m.Ns = Set(initializ
如果我有这样的限制阅读:
For all a in A there exists a b in B so that for all c in C it holds
that a variable x(a, b + c) is equal to a parameter m(a, c)
短:
forall a in A, exists b in B, forall c in C: x(a,b+c)=m(a,c)
我试图按以下方式创建约束:
constr = lambda model, a: any(all(model.x[a, b + c] <= model.m[a, c] for c i
我正在尝试用Pyomo定义一组变量,如下所示: def initA ( i , model ):
for i in range(p)
yield -1
def initB ( i , model ):
for i in range(p)
yield random.randrage(-999999, 999999)
# variables
model.A = Set()
model.B = Set()
model.a = Var(model.A, within=IntegerSet, bounds=(-1,1), initialize=initA)
mo
我正在使用pyomo处理LP模型,但当我创建约束时,它显示了一个关键错误‘无法找到某个组合’。我知道列出所有可以解决这个问题的组合。但是真实的数据有很多组合。有什么简单的方法来解决这类问题吗?谢谢!这里有一个简单的例子: 这是一个类似的问题供参考:Is there an easier way to avoid this kind of index key error of pyomo? from pyomo.environ import *
import pandas as pd
data = [['tom','A', 10], ['nick'
我正在寻找一个pyomo函数,如果pyomo模型中存在一个元素,它将返回True。
例如,如果我创建一个简单的pyomo模型,我希望它的响应如下所示。或者,也许有一种方法可以输出Pyomo模型中所有元素的列表,然后我可以检查某个元素?
import pyomo.environ as pe
model = pe.AbstractModel()
model.t = pe.Set()
model.A = pe.Param(model.t)
# Do functions such as has_element() or list_elements() exist?
model.has_elemen