CPLEX中M0作为决策变量的定义与约束正确性咨询
CPLEX MIP模型中M0作为决策变量的定义与约束问题
我在CPLEX构建的MIP 1模型中,将M0作为参数使用,代码定义为:
Total_P = 8 M0 = np.array([[0,1,0,1,0,0,0,2]]).reshape(Total_P,1)
后续开发调整目标与约束的MIP 2模型时,需将M0设为决策变量并应用于约束中,我编写的相关代码如下:
Total_P = 8 M0 = np.empty((Total_P,1), dtype = object) for l in range(0,Total_P): M0[l][0]= mdl.integer_var(name='M0'+ str(',') + str(l+1)) for l in range(0,Total_P): if M0[l][0] is not None: mdl.add_constraint((M0[1][0] + M0[5][0]) == 1) mdl.add_constraint((M0[3][0] + M0[6][0]) == 1) mdl.add_constraint((M0[0][0] + M0[2][0] + M0[4][0] + M0[7][0]) == 2)
运行后:
- MIP 1的结果为
obj_lambda=213 - MIP 2的结果为
obj_lambda=205.0,且M0取值为[[0,1,1,0,0,0,1,1]]
但我的预期是:MIP 2的M0应与MIP 1中的参数一致(即[[0,1,0,1,0,0,0,2]]),同时obj_lambda=213。我已附上MIP 1和MIP 2的完整代码,想咨询:我对M0作为决策变量的定义及约束添加是否正确?
内容的提问来源于stack exchange,提问作者Nicholas Nicholas
相关产品推荐
相关产品推荐

