运筹系列25:Cplex的分布式求解

实际生产中很多的组合优化问题包含上百万甚至上亿的变量,很容易出现内存溢出和计算超时的问题。在试探计算机“底线”的过程中,我们如果能利用分布式的优势,会让很多问题的求解规模成倍增加。

1. 多线程优化

在Cplex多进程分确定性和机会性两种。确定性指的是重复求解时遵循相同的求解路径,而机会性则是随机应变。可以使用并行方式开关 (ParallelMode/CPX_PARAM_PARALLELMODE) 来控制机会性算法的调用。 在使用其缺省设置 0 时,除非线程参数更改为严格大于 1 的值,否则将使用确定性算法。要强制 CPLEX 在所有情况下使用确定性算法,请将并行方式参数设置为 1。要允许 CPLEX 在所有情况下使用机会性算法,请将并行方式参数设置为 -1。

2. 分布式算法

混合整数规划的基本方法是分支定界法。分布式算法的主要流程是:

  1. 预求解:在master node上预求解 MIP。
  2. 提升:将简化模型发送到各个work node构建搜索树。当master node断定至少work node创建了足够大的搜索树时,提升将停止。
  3. 分发:master node将获胜的搜索树分发到所有机器,进行分支定界搜索。

在 CPLEX 实现的分布式并行分支定界中,master node保留全局搜索树的大量节点。 如果某个work node变为空闲状态,那么master node会将其中一些节点发送到该work node。 然后,该node将此节点视为新的 MIP,并预求解该 MIP、使用分支定界法找到该节点的最优解。 换而言之,work node不仅仅求解单个节点,而是求解根位于该节点处的整个子树。
下面说一下ssh方式的配置。首先在集群所有节点上安装python和cplex。不妨假设cplex安装目录为/nfs/CPLEX,然后创建配置文件configuration.vmc(虚拟机配置文件是一个 XML 文件,用于指定分布式并行优化应用程序中主控与工作程序之间的通信协议,以及每个工作程序的配置。):

<?xml version="1.0"?>
<vmc>
  <machine name="host2">
    <transport type="process">
      <cmdline>
         <item value="ssh"/>
         <item value="host2"/>
         <item value="/nfs/CPLEX/cplex"/>
         <item value="-worker=process"/>
         <item value="-stdio"/>
         <item value="-libpath=/nfs/CPLEX"/>
      </cmdline>
    </transport>
  </machine>

  <machine name="host3">
    <transport type="process">
      <cmdline>
         <item value="ssh"/>
         <item value="host2"/>
         <item value="/nfs/CPLEX/cplex"/>
         <item value="-worker=process"/>
         <item value="-stdio"/>
         <item value="-libpath=/nfs/CPLEX"/>
      </cmdline>
    </transport>
  </machine>
</vmc>

其中host2和host3为work node的别名。然后从主节点host1上启动cplex即可,关键语句是:

cplex.read_copy_vmconfig(“configuration.vmc”)

找到配置文件后,Cplex会自动执行分布式MIP优化。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值