如何达到最佳绑定和mipgap(CPLEX_CMD)?

问题描述 投票:0回答:1

我正在使用CPLEX_CMD,因为我需要使用MIP_start。在使用CPLEX_PY和执行这些操作的命令之前:

a = prob.solverModel
GAP = a.solution.MIP.get_mip_relative_gap ()
BestBound = a.solution.MIP.get_best_objective ()

我如何从CPLEX_CMD获得此信息?因为我对a = prob.solverModel

非常感谢

python cplex pulp
1个回答
0
投票
from docplex.mp.model import Model mdl = Model(name='buses') nbbus40 = mdl.integer_var(name='nbBus40') nbbus30 = mdl.integer_var(name='nbBus30') mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids') mdl.minimize(nbbus40*500 + nbbus30*400) warmstart=mdl.new_solution() warmstart.add_var_value(nbbus40,8) warmstart.add_var_value(nbbus30,0) mdl.add_mip_start(warmstart) sol=mdl.solve(log_output=True) for v in mdl.iter_integer_vars(): print(v," = ",v.solution_value)

并且让我使用zoo example向您展示如何获得所要的内容:

from docplex.mp.model import Model

mdl = Model(name='buses')


nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')



mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')


mdl.minimize(500*nbbus40+400*nbbus30)
sol=mdl.solve(log_output=True)

for v in mdl.iter_integer_vars():
    print(v," = ",v.solution_value)

print("objective = ",sol.get_objective_value())
print("best bound = ",mdl.solve_details.best_bound)
print("mip gap = ",mdl.solve_details.mip_relative_gap)

给出

nbBus40  =  6.0
nbBus30  =  2.0
objective =  3800
best bound =  3800.0
mip gap =  0.0
© www.soinside.com 2019 - 2024. All rights reserved.