首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBM cplex ilog VS python中的docplex

IBM cplex ilog VS python中的docplex
EN

Stack Overflow用户
提问于 2020-07-10 02:56:35
回答 3查看 235关注 0票数 0

目前,我正在开发python上的docplex。

我刚刚发现IBM cplex Ilog和docplex的结果是完全不同的。

尽管它们的约束、目标函数、一切都是相同的,但它们的解决方案却非常不同。

在某些情况下,docplex说不可行,即使它在Ilog中是可行的。

我试图在docplex公差中限制完整性和最小间隙,但同样的问题也发生了。

有没有人知道为什么会这样?如何解决这个问题呢??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-10 14:24:44

为了了解其中的不同之处,您可以将模型导出为lp文件。

看见

代码语言:javascript
复制
mdl.export("c:\\temp\\buses.lp")

在……里面

代码语言:javascript
复制
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)

mdl.solve()

mdl.export("c:\\temp\\buses.lp")

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


"""
which gives
nbBus40  =  6.0
nbBus30  =  2.0
"""
票数 1
EN

Stack Overflow用户

发布于 2020-07-10 16:01:03

补充一下Alex的回答:在Docplex中,Model.export_as_lp(路径‘c:/temp/mymodel.lp’)是从Docplex模型生成LP文件的方法。在Cplex的Python API中,您有一个Cplex实例,使用cpx.write('c:/temp/mymodel_cplex.lp')生成LP文件。

如果您的模型是相同的,那么两个LP文件也应该是相同的(除了变量顺序上的一些差异,例如x2+x1而不是x1+x2)。如果您需要在两个API中使用相同的模型,则必须首先达到此相等,然后才能进一步操作。

DOcplex有一些工具可以调查不可行的模型,但在确保两个模型完全相同之前,没有任何意义。

票数 1
EN

Stack Overflow用户

发布于 2020-07-10 08:09:29

两个版本之间一定有不同之处。您可以使用refine_conflict来了解不可行性的来源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62821830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档