【问题标题】:Cplex is not considering multiple initial solutionCplex 没有考虑多个初始解决方案
【发布时间】:2018-05-08 12:36:26
【问题描述】:

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

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

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

节点文件:

2 个 MIP 启动中的 1 个提供了解决方案。 MIP start 'm1' 定义了目标为 2107.1259 的初始解。聚合器已完成 4433 次替换...尝试聚合器 11 次。 MIP Presolve 消除了 121597 行和 66747 列。 MIP Presolve 修改了 423500 个系数。聚合器进行了 4922 次替换。缩减的 MIP 有 87011 行、15912 列和 2020871 个非零值。简化的 MIP 有 15114 个二进制文件、0 个将军、0 个 SOS 和 0 个指标。预求解时间 = 26.58 秒。 (20114.66 滴答声)探测固定 462 个变量,收紧 0 个边界。探测时间 = 14.33 秒。 (2238.26 滴答声)尝试聚合器 2 次。 MIP Presolve 消除了 3295 行和 557 列。 MIP Presolve 修改了 11275 个系数。聚合器进行了 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 of 1 MIP 启动提供了解决方案。 MIP start 'm1' 定义了目标为 80.1562 的初始解。聚合器已完成 4433 次替换...尝试聚合器 11 次。 MIP Presolve 消除了 121597 行和 66747 列。 MIP Presolve 修改了 423500 个系数。聚合器进行了 4922 次替换。缩减的 MIP 有 87011 行、15912 列和 2020871 个非零值。简化的 MIP 有 15114 个二进制文件、0 个将军、0 个 SOS 和 0 个指标。预求解时间 = 25.45 秒。 (20114.66 滴答声)探测固定 462 个变量,收紧 0 个边界。探测时间 = 6.91 秒。 (2238.26 滴答声)尝试聚合器 2 次。 MIP Presolve 消除了 3295 行和 557 列。 MIP Presolve 修改了 11275 个系数。聚合器进行了 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 滴答声)

我是否遗漏了什么或者我需要提供任何其他参数。请帮忙。提前谢谢你。

【问题讨论】:

  • 这个问题被交叉发布并回答了here

标签: java optimization cplex


【解决方案1】:

(无 CPLEX 用户)

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

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

和他们的 C++ counterpart:

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

看来你需要先做一些预处理并调用一次!

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

【讨论】:

  • 嗨,我明白你在说什么,但我的问题是我们可以提供多个初始解决方案,并且 cplex 将选择最佳给定初始解决方案,但在我的情况下,当我提供多个初始解决方案时,它只考虑第一个初始解决方案解决方案。
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 2012-07-19
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多