【问题标题】:SCIP: Getting lower bounds and upper bounds in various modes at a specific nodeSCIP:在特定节点以各种模式获取下限和上限
【发布时间】:2019-07-21 20:41:07
【问题描述】:

我想在各种模式下获取分支定界树的特定节点的下限和上限。它将帮助我比较各种强调设置。

为此(下界示例),

  • 我使用SCIPCopy() 在那个节点获得了一个单独的 SCIP 实例的 MIP 的全局副本
  • 然后设置separating/emphasisaggressivepresolve为False,limits/nodes为1
  • optimize模特

此过程在退出之前在单个节点上进行多次单纯形迭代。

  • 如果在分支定界树中处理节点之前将设置设置为separating/emphasis/aggressive,此下限是否与获得的下限相似? (通过更改heuristics/emphasis/aggressive 对上限有类似的疑问)

  • 是否有一个函数 - SCIPComputeLowerBound(setting=1) 用于 SCIP_NODE。 (同样,SCIPComputeUpperBound(setting=1)?

  • 如果我决定在separating 中使用aggressivefast,如何将节点的结果复制回原始 SCIP 的节点? (同样对于“启发式”,我需要更新原始解决方案)。 我可以考虑将原始 SCIP 树中的设置更改为所需的级别,并使用更改后的设置进行求解,但这需要求解该节点两次。

【问题讨论】:

    标签: scip


    【解决方案1】:

    下界可能不一样,尤其是对于分离。原因是许多分隔符在根节点中运行的时间比在树中的更下方运行时间更长。此外,SCIP 中的分隔符和启发式算法有一个frequency,这意味着它们不会在每个节点上都被调用。因此,可能在您当前的节点上不会运行启发式算法,但是如果您创建一个新的 subscip 并解决根节点,那么启发式算法将运行。

    这个函数SCIPcomputeLowerBound应该做什么?解决整个节点但不改变任何东西? (不存在)

    您可以复制绝对复制一个解决方案,例如在heur_rens.c 中查看createNewSolution。您想从分离中复制什么?

    【讨论】:

    • 如果我在求解过程中途将重点从默认切换到激进,是否会重置所有用于启发式和分离的计数器?
    • 我看到启发式和分离中有一些算法有freq=-1。那些是在每个节点上调用的那些吗?具体来说,这些设置的基础是什么?如何在每个节点上决定使用哪种启发式/分离?
    • counters 是什么意思?频率设置等将被更改。 freq = -1 表示默认禁用,每个节点都是freq = 1。启发式方法和分隔符按其优先级顺序调用。此外,启发式算法有一个时间,确定何时调用它们,例如lp解决后。请务必查看常见问题解答scip.zib.de/doc/html/FAQ.php,因为您的许多问题(例如频率)已经在那里得到解答。
    • 抱歉,我将频率与配额混淆了。 mfc 上的 freq=10 是什么意思?这是否意味着它将在每个节点上运行 mfc 启发式 10 次?我的困惑是求解器如何决定在任何节点上调用哪个启发式或分隔符?有一些meta-heuristic 吗?这些设置是否决定让求解器与 CPLEX 竞争?
    • 文档已经完全回答了你的问题,所以我只留下相关部分的链接scip.zib.de/doc/html/HEUR.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多