Я построил исходную модель, а затем попытался использовать результат этой модели во второй модели, в то время как вторая модель имеет много сходств с исходной моделью, но имеет некоторые дополнительные ограничения. Мой подход состоял в том, чтобы скопировать исходную модель во вторую модель, как показано ниже (mdl
- это исходная модель, которую я здесь не привел, а mdll
- это вторичная модель):
mdll=Model('Boarding_test2')
Best_X_values= mdl.getAttr('x', X)
mdll.update()
mdll=mdl.copy()
mdll.getVars()
mdll.getConstrs()
Как вы Можно увидеть, что я скопировал исходную модель, а также ограничения и переменные. Чтобы удалить ограничение, которое присутствовало в исходной модели, но я не хотел его во второй, я реализовал следующее:
Del_cons=mdll.getConstrByName('Stefen')
Del_cons.__dict__
mdll.remove(Del_cons)
mdll.update()
Наконец, я попытался добавить новые ограничения во вторую модель как ниже:
mdll.addConstrs((Y[k,p])==1 for k in K for p in P if k==p and p!=p_sim)
mdll.addConstrs(quicksum(Y[k,p] for k in K if k==k_sim )==1 for p in P if p==p_sim)
mdll.addConstrs(quicksum(Y[k,p] for p in P if p==p_sim)==1 for k in K if k==k_sim)
но я получаю следующую ошибку. Может кто-нибудь, пожалуйста, помогите мне с этим:
GurobiError Traceback (most recent call last)
1 #mdll.remove(mdll.getConstrByName('Stefen'))
----> 2 mdll.addConstrs((Y[k,p])==1 for k in K for p in P if k==p and p!=p_sim)
3 mdll.update()
4 mdll.addConstrs(quicksum(Y[k,p] for k in K if k==k_sim )==1 for p in P if p==p_sim)
5 mdll.update()
model.pxi in gurobipy.Model.addConstrs()
model.pxi in gurobipy.Model.addConstr()
model.pxi in gurobipy.Model.__addConstr()
GurobiError: Variable not in model