【问题标题】:how do I fix the docplex error? It works well in CPLEX如何修复 docplex 错误?它在 CPLEX 中运行良好
【发布时间】:2020-07-07 04:53:19
【问题描述】:

我正在尝试创建一组关于简单 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)

【问题讨论】:

    标签: python cplex docplex


    【解决方案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))
    

    你的模型有效。

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      相关资源
      最近更新 更多