当前位置:首页 > 编程笔记 > 正文
已解决

CPLEX获取模型的解池中的解方案

来自网友在路上 165865提问 提问时间:2023-11-01 21:26:45阅读次数: 65

最佳答案 问答题库658位专家为你答疑解惑

文章目录

  • 1、前序
  • 2、解池中的解方案获取
  • 3、CPLEX求解模型的时间
  • THE END

1、前序

\qquad CPLEX求解模型C++API继续解读。最近在进行Bender decompostion的实验时,需要获取到CPLEX求解的所有的解方案信息,所以又头大翻了一通“gou pi不通”的CPLEX API官方文档,最终加上自己的一些联想,终于实现了自己的想法。获取到CPLEX求解过程中解方案池中的所有解方案信息,包括可行解方案的数量,每一个解方案信息,CPLEX模型的求解时间。

2、解池中的解方案获取

\qquad 在CPLEX求解完模型之后(这里默认的MIP模型),若模型有可行解方案存在,首先可以采用IloCplex::getSolnPoolNsolns来获取求解过程中找到的可行解方案的数量,此处不保证找到所有可行的解方案;之后针对于每一个解方案,
\qquad 可以采用IloCplex::getValue或者IloCplex::getValues来获取解方案中变量的值,其中,最后一个参数是当前解方案的索引。注意到,若最后一个解方案的索引参数取值为0,则返回的就是最优解的变量值。
\qquad 可以采用IloCplex::getObjValue来获取某个解方案的目标函数值,缺省值为0,表示最优解的目标函数值。

3、CPLEX求解模型的时间

\qquad 先放一个官方介绍大家看一下,
在这里插入图片描述
\qquad 其中,测试发现,里面的getStartTime 测试没有这个函数,可能我使用的类不太对(IloCplex)。最终测试发现,IloCplex::getDetTime基本上是以毫秒为单位计量的模型求解时间,所以可以直接使用这个作为模型的求解时间。

THE END

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"CPLEX获取模型的解池中的解方案":http://eshow365.cn/6-29616-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!