Cplex没有考虑多个初始解决方案

时间:2017-11-24 13:21:18

标签: java optimization cplex

当我为cplex提供多个初始解决方案时。它只考虑第一个初始解决方案。

案例1:我给出了2个初始解决方案。下面是代码和节点文件代码:

cplex.addMIPStart(startVar1,startVal1); cplex.addMIPStart(startVar,startVal);

节点文件:

2个MIP中的1个开始提供解决方案。 MIP启动'm1'定义了具有目标2107.1259的初始解。 Aggregator完成了4433次替换...尝试了聚合器11次。 MIP Presolve消除了121597行和66747列。 MIP Presolve修改了423500系数。 Aggregator做了4922次换人。减少的MIP具有87011行,15912列和2020871非零。减少的MIP有15114个二进制文件,0个将军,0个SOS和0个指示符。预先计算时间= 26.58秒。 (20114.66 ticks)探测固定的462个变量,收紧0个界限。探测时间= 14.33秒。 (2238.26 ticks)尝试聚合器2次。 MIP Presolve消除了3295行和557列。 MIP Presolve修改了11275个系数。 Aggregator做了13次替换。减少的MIP具有83703行,15342列和1963759非零。减少的MIP有14557个二进制文件,9个将军,0个SOS和0个指标。预先计算时间= 13.25秒。 (5471.85蜱)探测固定的17个大炮,收紧0界限。探测时间= 3.92秒。 (285.75 ticks)Clique表成员:997492。MIP重点:平衡最优和可行性。 MIP搜索方法:动态搜索。并行模式:确定性,最多使用12个线程。根松弛溶液时间= 289.55秒。 (57735.17蜱)

案例:2我只给出了一个初始解决方案 代码:cplex.addMIPStart(startVar,startVal); 节点文件: 1个MIP启动提供的解决方案。 MIP启动'm1'定义了具有目标80.1562的初始解决方案。 Aggregator完成了4433次替换...尝试了聚合器11次。 MIP Presolve消除了121597行和66747列。 MIP Presolve修改了423500系数。 Aggregator做了4922次换人。减少的MIP具有87011行,15912列和2020871非零。减少的MIP有15114个二进制文件,0个将军,0个SOS和0个指示符。预先计时= 25.45秒。 (20114.66 ticks)探测固定的462个变量,收紧0个界限。探测时间= 6.91秒。 (2238.26 ticks)尝试聚合器2次。 MIP Presolve消除了3295行和557列。 MIP Presolve修改了11275个系数。 Aggregator做了13次替换。减少的MIP具有83703行,15342列和1963759非零。减少的MIP有14557个二进制文件,9个将军,0个SOS和0个指标。预先计时= 7.50秒。 (5471.85蜱)探测固定的17个大炮,收紧0界限。探测时间= 0.91秒。 (285.75 ticks)Clique表成员:997492。MIP重点:平衡最优和可行性。 MIP搜索方法:动态搜索。并行模式:确定性,最多使用12个线程。根松弛溶液时间= 127.17秒。 (57735.17蜱)

我错过了什么或者我需要提供任何其他参数。请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

(没有CPLEX用户)

根据docs(我无法直接链接到该部分;丑陋的文档......):

  

没有一种方法可以从多维变量数组创建MIP启动。为了从多维变量数组创建MIP,首先必须将所有这些变量复制到一个平面数组中。请参阅主题"从解决方案开始:MIP启动"在CPLEX用户手册中,获取具有多维数组的此方法的示例。

和他们的C ++ counterpart

  

与setStart方法不同,方法addMIPStart不是增量方法。换句话说,每次调用addMIPStart都会创建一个新的MIP启动。

似乎你需要先进行一些预处理,然后调用一次!

但是我认为Java-docs中没有提到非增量性质(在C ++文档中提到),所以对于我来说非CPLEX用户这很令人困惑,但在你观察之后,我会想到我需要在C ++中提到的方法 - docs。