并发优化器


并发优化器

并发优化是利用多个处理器的简单方法。它在模型上启动多个独立的解决方案,使用每个策略。优化在第一个完成时终止。通过同时追求多种不同的策略,并发优化器通常可以更快地获得解决方案,如果它必须选择单一策略。

并发优化是解决LP模型的默认选择,以及用于解决MIP模型的用户可选择的选项。并发优化器可以以几种不同的方式控制。这些部分将在本节中讨论。为了避免在报告多个同时解决的结果时混淆,我们选择简化生产日志回调执行并发优化时。这些也将在本节中讨论。

控制并发优化

如果您希望使用并发优化器来解决您的模型,则需要采取的步骤取决于模型类型。如前所述,并发优化器是LP模型的默认选择。这种选择是由方法范围。对于MIP模型,您可以通过修改并发优化程序来选择并发镜范围。

使用这些参数控制并发优化程序时,会自动选择用于不同独立求解的策略。虽然我们保留将来改变选择的权利,但对于LP模型,我们目前将第一个并发线程投入到双单位,第二到第四到单个并行屏障解决,以及第五到原始单纯x。额外的线程致力于一个平行的屏障解决。因此,例如,使用四个线程的并发LP求解将一个线程投入到双单位和三个到平行屏障。对于MIP,我们将可用的线程均匀地划分为独立的解决方案,我们为此选择了不同的值mipfocus.种子每个参数。

如果您想要更多控制并发优化(例如,选择用于每个独立解决的确切策略),可以通过创建两个或更多来执行此操作并发环境。这些可以通过API例程创建(在CC ++java.。网, 或者Python),或者它们可以从中创建.prm.文件使用Concurrentettings.参数如果您使用的命令行界面。一旦创建了这些,随后的优化调用将为您创建的每个并发环境开始一个独立的解决方案。要控制每个解决的策略,只需将每个环境中的参数设置为您希望它们相应的解决方案的值。例如,如果您创建了两个并发环境并设置了mipfocus.参数为1在第一和2中的第二个,后续MIP优化呼叫将并行执行两个求解,一个mipfocus = 1另一种mipfocus = 2

伐木

您的第一个指示正在使用的并发优化器正在看起来像这样的gurobi日志中......

并发LP优化器:双单简单和屏障显示障碍日志...
......或者喜欢这个......
并发MIP优化器:2并发实例(每隔2个线程)
这些日志线表示将启动多少个独立的解决方案。对于LP案例,线路还指示每种方法将用于每个方法。

由于在单个日志中互动的多个解决方案的结果非常令人困惑,因此我们选择使用简化的日志格式以进行并发优化。对于并发LP,我们只介绍单一解决的日志。对于并发MIP,日志类似于我们的标准MIP日志,除了它仅提供定期摘要信息(参见MIP Logging.如果您不熟悉我们的标准MIP日志,则部分。每个并发MIP日志线都显示了任何独立解决的最佳可行解决方案的目标,以任何独立的解决方案,由任何独立的解决方案证明的最佳客观统治以及这两个值之间的相对差距:

节点|当前节点|目标界限|.工作解释概述|OBJ深度Intinf |现任者最畅销的差距|它/ node time 0 0  -   -   -  24.00000 13.00000 45.8%0s 0 0  -   -   -  16.50000 13.9%0s 0 0  -   -   -  16.50000 13.25000 19.7%0s 0 0  -   -   -  16.50000 13.37500 18.9%0s 0 0  -   -   -   -  16.5000013.37500 18.9%0 0 0 0  -   -   -  16.50000 13.37500 13.7%0s 310 149  -   -   -  15.00000 13.87%0s 3873 1634  -   -   -  15.00000 14.00000 6.67%5s 9652 4298  -   -   -  15.00000 4298  -   -   -  15.0000014.12500 5.83%10s 16535 6991  -   -   -  15.00000 14.18056 5.46%15s 23610 9427  -   -   -  15.00000 14.22333 5.18%20s ...
我们还包括来自一个独立的解决方案以及经过的时间的节点计数,以提供一些前进进度的指示。

确定主义

并发优化基本上设置了多个线程之间的竞争来解决您的模型,其中获奖线程返回找到的解决方案。在多个线程在大致相同的时间内解决模型的情况下,从一个运行到下一个运行时的小变化可能意味着每次中获胜线程都不相同。如果您的模型具有多个最佳解决方案(LP和MIP中很常见),则可以在同一模型上多次运行并发解算器可以产生不同的最佳解决方案。手机万博登录这被称为非确定性行为。

默认情况下,Gurobi并发求解器都产生非确定性行为。手机万博登录您可以通过设置来获得并发LP解决符的确定性行为手机万博登录方法参数到值4.此设置通常会略微增加Runtims,但如果您的应用程序依赖于确定性行为,则确定性化并发LP通常是最佳选择。并发MIP求解器没有类似的设置。手机万博登录

回调

我们同时从多个独立的解决方案提供回调,而是再次选择以简化并发优化器的行为。特别是,我们只能从单一解决方案提供回调。这个选择的一些后果:

  • 由您的回调(解决方案,客观界等)检索的信息将来自单个模型。
  • 用户切割平面仅应用于单个模型。
  • 您不允许使用并发MIP使用延迟约束,因为它们只能应用于一个模型。