Я хочу итеративно добавить к целевой функции Pyomo основанную на строках в кадре данных pandas.Я создал переменные, основанные на размере кадра данных:
model.A = Var(range(0,len(arc_decvars)), initialize=0,within=Integers,bounds=(0,5))
, где arc_decvars
- это список в том же порядке, что и соответствующий ряд данных pandas.
Я хотел бы создать такую целевую функцию, но без необходимости явно указывать индексы в коде:
model.ObjFcn = ( df.coefficient[0] * model.A[0] * ( 1- df.coefficient[0] * model.A[0]) ) + ( df.coefficient[1] * model.A[1] * ( 1- df.coefficient[1] * model.A[1]) +...+ ( df.coefficient[999] * model.A[999] * ( 1- df.coefficient[999] * model.A[999]) )
Любая идея, как это сделать?
---- Продолжение:
Я добавляю серию подобных ограничений, по одному для каждого узла:
def NodeA(model):
k = sum(
model.ArcVar[i] * node_arc_matrix[i,0]
for i in model.ArcVar
)
return k == 2*model.NodeVar[1]
model.NodeAConstraint=Constraint(rule=NodeA)
Где 0-index в node_arc_matrixссылается на столбец, соответствующий Node_A.Вместо того, чтобы создавать константу для каждого узла вручную, могу ли я создать ограничения как для i (дуги), так и для j (узлы)?