Я изо всех сил пытаюсь сделать несколько ограничений, используя для l oop в Python Pyomo. Моя концепция кода выглядит следующим образом:
T = 504
model.times = RangeSet(0, T-1)
model.Machines = Set(initialize = Machines_parameters.keys())
Затем я разделил model.times на 3 набора одинаковой длины, и теперь я хочу написать определенные c ограничения для каждой из этой части набора. Ниже приведена эквивалентная, но упрощенная версия кода:
for k in range(3): #number of parts in which I've divided the set [(0,167),(168,335),(336,503)]
for j in range(cluster_index[k][0], cluster_index[k][1]): #respectively first and last number of the subset
def logic_constr(model,i):
if j >= const1[k] and j < const2[k]:
return model.z[i, j + 1] - model.z[i, j] == model.dsu[i, j + 1] - model.dsd[i, j + 1]
else j==const2[k]:
return model.z[i,const2[k]] - model.z[i,j] == model.dsu[i,const1[k]] - model.dsd[i,const1[k]]
model.logic_constr = Constraint(model.Machines, rule = logic_constr)
Я хотел бы создать итеративно создать 504 различных ограничения, каждое из которых имеет свое собственное правило. Есть ли у вас какие-либо предложения о том, как это сделать?