修改我的代碼,包括所有的參數和所涉及的變量: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