отредактировать мой код, включая все параметры и переменные, участвующих:Pyomo суммирования произведения матрицы на вектор
(D является NumPy матрица импортируется из Python)
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