修改我的代码,包括所有的参数和所涉及的变量:Pyomo总和由矢量
(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(initialize = range(0,value(m.n)))
m.x1 = Var(m.N, domain = Reals)
m.D = Param(m.N, m.N, initialize=D)
m.f_x1 = Var(m.N)
def f_x1_definition(model,i):
return m.f_x1[i] == sum(m.x1[j]*m.D[i,j] for j in range(value(m.n)))
m.f_x1_const = Constraint(m.Ns, rule = f_x1_definition)
,但我得到下一个错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
任何帮助吗?
非常感谢!我改变了它,但我仍然有一个错误... ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()任何想法? :) – Michael
在我们诊断您的问题之前,您需要提供更多的模型。具体来说,你如何定义'm.f_x1','m.x1'和'm.D'。还要注意:如果你使用'model'作为规则(函数)的第一个参数,那么你需要在函数内部使用'model'。 – jsiirola