0

我正在尝试创建一组关于简单 VRP 问题的约束。

我试过 add_constraint 但我得到一个无效的语法错误

怎么能解决问题??现在我使用 add_constraint,我的错误和代码如下所示。

在此处输入图像描述

from docplex.mp.model import Model
md1 = Model('VRPPD')

K=[0,1,2]

D=[1,2,3,4,5,6]

D_PLUS=[0,1,2,3,4,5,6]

ccost=[2000,2000,2000]
cmax=[2,2,2]

#define decision variables 
c1 = md1.integer_var_dict([(k,i) for k in K for i in D_PLUS], name='c1')
c2 = md1.integer_var_dict([(k,i) for k in K for i in D_PLUS], name='c2')
x = md1.binary_var_dict([(k,i,j) for k in K for i in D_PLUS for j in D_PLUS], name='x')
y = md1.binary_var_dict([(k) for k in K], name='y')


#define objective functions
md1.maximize(md1.sum(y[k]*ccost[k] for k in K))

#********************************** constraint 1 entire job should be served***********************************
md1.add_constraint(md1.sum(x[k,i,j] for k in K for i in D_PLUS for j in D) == 20, 'st1')

#********************************** constraint 2 allocate vehicle***********************************
mdl.add_constraint(md1.sum(x[k,i,j] for i in D_PLUS for j in D_PLUS) <= 1000*y[k] for k in K, 'st2')

#solve and print outputs
md1.solve_details
solution = md1.solve(log_output=True)
print(solution)
4

1 回答 1

1

如果将 st2 重写为

for k in K:
   md1.add_constraint((md1.sum(x[k,i,j] for i in D_PLUS for j in D_PLUS) <= 1000*y[k]), 'st2'+str(k))

你的模型有效。

于 2020-07-05T11:30:01.927 回答