为了账号安全,请及时绑定邮箱和手机立即绑定

CPLEX python API 热启动

CPLEX python API 热启动

HUX布斯 2021-11-30 16:57:59
我正在尝试在 CPLEX python API 中实现热启动。我知道我必须使用以下功能:set_start(self, col_status, row_status, col_primal, row_primal, col_dual, row_dual)假设我有五个变量 ["x1", "x2", "x3", "x4", "x5"] 并且我想为它们分配以下值 [0, 1, 0, 0, 1]热启动。我想做类似的事情:set_start(col_status=[],          row_status=[],          col_primal=["x1", "x2", "x3", "x4", "x5"],          row_primal=[0, 1, 0, 0, 1],          col_dual=[],          row_dual=[])但在文档中是这样写的:col_primal 和 row_primal 的每个条目必须是一个浮点数,分别指定列和行的起始原始值。我不明白为什么。我如何在实践中做到这一点?
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

在set_start的文档中,它还说:


参数 col_status、col_primal 和 col_dual 是长度等于变量数或为空的列表。如果 col_status 为空,则 row_status 也必须为空。如果 col_primal 为空,则 row_primal 也必须为空。


例如,我们可以set_status像这样调用:


>>> import cplex

>>> c = cplex.Cplex()

>>> indices = c.variables.add(names=["x" + str(i) for i in range(5)])

>>> c.start.set_start(col_status=[],

...                   row_status=[],

...                   col_primal=[0., 1., 0., 0., 1],

...                   row_primal=[],

...                   col_dual=[],

...                   row_dual=[])

在示例中,请注意与 对应的变量索引["x1", "x2", "x3", "x4", "x5"]是[0, 1, 2, 3, 4],并且5模型中共有变量。传递给的值col_primal也必须与该索引列表相对应(例如,对于索引为 0 的变量,值为 0.0,对于索引为 1 的变量,值为 1.0 等)。


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 343 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信