CPLEX 求解器手册(IBM ILOG CPLEX)

目录

1. 引言

GAMS/CPLEX 是一个 GAMS 求解器,允许用户将 GAMS 的高级建模能力与 CPLEX 优化器的强大功能相结合。CPLEX 优化器旨在快速求解大规模困难问题,只需最少的用户干预。在适当的许可下,用户可以访问 CPLEX 的求解算法,用于线性规划、二次约束规划和混合整数规划问题。虽然提供了许多求解选项,但 GAMS/CPLEX 会自动为特定问题计算并设置大多数选项为最佳值。

所有通过 GAMS/CPLEX 可用的 CPLEX 选项均汇总在本文档末尾。

使用 CPLEX 运行模型

以下语句可在 GAMS 程序内部用于指定使用 CPLEX:

    Option LP = Cplex;     { 或 QCP, MIP, MIQCP, RMIP 或 RMIQCP }

上述语句应出现在 Solve 语句之前。如果在 GAMS 安装期间 CPLEX 被指定为默认求解器,则不需要上述语句。

注意: 之前的免费裸链接模式(以前称为 GAMS/OSICPLEX)已被移除。如果您依赖此裸链接选项,请联系 sales@gams.com 安排 GAMS/CPLEX 求解器链接许可证。

2. 线性规划(LP)

CPLEX 使用几种替代算法求解 LP 问题。大多数 LP 问题使用 CPLEX 最先进的对偶单纯形算法求解效果最好。某些类型的问题受益于使用原单纯形算法、网络优化器、屏障算法(内点法)或筛选算法。并发选项允许使用不同的算法并行求解,由最先完成的算法返回解。

求解线性规划问题是内存密集型的。尽管 CPLEX 非常高效地管理内存,但物理内存不足是运行大型 LP 时最常见的问题之一。当内存有限时,CPLEX 会自动进行调整,这可能会对性能产生负面影响。

CPLEX 设计为使用默认选项设置求解大多数 LP 问题。这些设置通常提供最佳的整体优化速度和可靠性。然而,有时需要更改选项设置以提高性能、避免数值困难、控制优化运行时长或控制输出选项。

一些使用原单纯形算法而非默认对偶单纯形算法的问题求解更快。极少数问题在原单纯形和对偶单纯形中都表现出较差的数值性能。因此,如果使用对偶单纯形时出现数值问题,请考虑尝试原单纯形。

CPLEX 具有非常高效的网络模型算法。网络约束具有以下属性:每个非零系数为 +1 或 -1,出现在这些约束中的每列恰好有两个非零元素,一个 +1 和一个 -1。

LP 算法选项

含义
0自动选择
1原单纯形
2对偶单纯形
3网络单纯形
4屏障算法(内点法)
5筛选算法
6并发

当前自动设置的行为:CPLEX 从头求解 LP 模型时几乎总是调用对偶单纯形算法。当从高级基继续时,它会检查基是原可行的还是对偶可行的,并相应选择原单纯形或对偶单纯形算法。

如果请求了多个线程(在确定或机会模式下),从头求解连续线性规划模型(LP)时,自动设置会选择并发优化算法。当三个或更多线程可用时,机会模式在一个线程上运行对偶单纯形,第二个线程上运行原单纯形,第三个及更多线程上运行并行屏障优化器。确定模式在一个线程上运行对偶优化器,在任何其他可用线程上运行并行屏障优化器。

3. 二次规划(QP/QCP/MIQCP)

CPLEX 可以求解具有二次约束的连续和整数规划问题。CPLEX 处理 QCP 问题的算法基于屏障算法(内点法),对于 MIQCP 问题则结合了分支定界方法。

CPLEX 要求二次约束矩阵是半正定的(对于凸问题)。对于非凸问题,CPLEX 可能无法找到最优解。

4. 混合整数规划(MIP)

CPLEX 包含一个强大的混合整数规划求解器,可以求解具有整数变量、二元变量和特殊有序集(SOS)的问题。CPLEX MIP 求解器使用分支定界算法,并结合了多种预处理技术、割平面生成和启发式方法。

关键 MIP 选项包括:

  • mipcord — MIP 搜索时执行目标函数分块
  • mipemphasis — 控制 MIP 搜索的重点(0=平衡,1=寻找可行解,2=证明最优性,3=寻找最佳可行解,4=寻找隐藏可行解)
  • mipstart — 使用现有 MIP 解作为起点
  • mipper — MIP 预处理级别和模式
  • mippolish — MIP 完成后改善解质量的级别
  • cuts — 全局割平面生成控制(-1=不生成,0=自动,1=适度,2=激进,3=非常激进)
  • heur — 启发式搜索频率控制
  • nodesel — 节点选择策略
  • varsel — 变量选择策略
  • brdir — 分支方向
  • relgap — 相对间隙容差
  • absgap — 绝对间隙容差
  • tilm — MIP 节点限制
  • nod — MIP 节点数限制
  • inttol — 整数容差
  • objdif — 目标函数差异限制

此外,CPLEX 支持针对特定问题类型的专用割平面:cliquecuts、covercuts、disjcuts、flowcuts、fraccuts、gubcuts、implbd、mcfcuts、zerohalfcuts 等。

5. 解池(Solution Pool)

CPLEX 的解池功能允许在 MIP 求解过程中生成和存储多个备选解。

解池容量

solnpoolcap — 解池中存储的整数解方案数量上限。

解池替换策略

solnpoolrep — 决定当解池满时替换哪些解。0=保留第一个解,1=保留多样性最高的解,2=保留最近发现的解,3=保留目标值最优的解,4=保留目标值次优的解。

解池密度

solnpooldensity — 控制在 populate 过程中生成解的密度。

多样化过滤器

多样化过滤器允许您为一组二元变量指定参考值,生成与参考值相似或不同的解。可以使用选项 DivFlt 以及下界和上界 DivFltLo 和 DivFltUp 来设置。

当前解过滤器

可以通过 CPLEX 过滤器文件(参数 ReadFLT)指定多个过滤器。更多细节请参见 GAMS 模型库中的 solnpool 模型。

访问解池

解存储在 GAMS 数据交换(GDX)文件中,可以由 GAMS 程序加载。如果指示 CPLEX 生成数千个解,此方法会变得效率低下。选项 SolnPoolMerge 触发创建包含所有解的单个 GDX 文件。

GAMS/CPLEX 链接会生成一个 GDX 文件(名称由 SolnPool 指定),其中包含一个名为 Index 的集合,元素为 file1、file2... 这些元素的关联文本包含各个 GDX 解文件的名称。文件名由前缀 soln(可通过选项 SolnPoolPrefix 指定)、模型名称和序列号构成。

6. Benders 算法

CPLEX 实现了 Benders 算法。给定问题的公式,CPLEX 可以将模型分解为单个主问题和(可能多个)子问题。为此,CPLEX 使用您为模型提供的注释。这种方法可以应用于混合整数线性规划(MILP)问题。

参数 BendersStrategy 指定您希望如何将 Benders 算法作为求解模型的策略应用。默认情况下,如果您没有注释模型来指定分解,CPLEX 不会尝试分解问题。如果指定了策略,CPLEX 将使用 Benders 分解方法。

参数 benderscutsonly 控制在 Benders 分解中是否仅使用割生成。

7. 指示约束

CPLEX 支持指示约束,允许您将二元变量与约束是否激活关联起来。指示约束的格式为:

    [约束名称] 二元变量 {0|1} ⇒ 线性约束

这意味着当二元变量取指定值时,线性约束被强制满足;当二元变量取相反值时,约束不强制。

8. 冲突精炼器

CPLEX 的冲突精炼器功能可以帮助诊断不可行模型。当模型被证明不可行时,冲突精炼器会识别导致不可行性的最小约束和边界集。

在 GAMS 中使用冲突精炼器:

    solve mymodel using mip min z;
          abort$(mymodel.modelstat = %modelStat.Infeasible%) "Model infeasible";
          option clear = mymodel;
          solve mymodel using mip min z;
          option conflict = 1;
          display conflict;

9. 选项参考

以下按字母顺序列出 CPLEX 的主要选项。

选项描述默认值
absgapMIP 绝对间隙容差0
advind高级基指示:0=关闭,1=自动1
aggressive割平面激进级别(0=自动,1=保守,2=默认,3=激进,4=非常激进)2
algorithmLP 求解算法:0=自动,1=原单纯形,2=对偶单纯形,3=网络单纯形,4=屏障,5=筛选,6=并发0
barcrossalg屏障算法交叉(Crossover)方法0
barstart屏障算法起始点策略0
bendersstrategyBenders 分解策略0
boundstr边界强度容差0
brdirMIP 分支方向:-1=向下优先,0=自动,1=向上优先0
brstat分支策略0
btol屏障算法收敛容差1e-8
cliquecuts集团割控制0=自动
covercuts覆盖割控制0=自动
cuts全局割平面生成控制:-1=不生成,0=自动,1=适度,2=激进,3=非常激进0
datacheck数据检查级别0
depind是否考虑问题依赖性1
disjcuts析取割控制0=自动
divflt多样化过滤器参考值0
divfltlo多样化过滤器下界0
divfltup多样化过滤器上界1
dual对偶优化:-1=自动,0=不取对偶,1=取对偶-1
epgapMIP 相对间隙(optca 的别名)0
epint整数容差1e-5
epopt最优性容差1e-6
epprimal原始可行性容差0
eprhsRHS 可行性容差1e-6
flowcuts流割控制0=自动
fraccuts分数割控制0=自动
gubcuts广义上界割控制0=自动
heurMIP 启发式搜索级别0
implbd隐含边界割控制0=自动
inttol整数可行容差1e-5
itlimLP 迭代限制GAMS iterlim
lpmethodLP 求解方法0=自动
ltol基识别原容差0
mcfcuts多商品流割:-1=不生成,0=自动,1=生成0
mipcordMIP 目标分块0
mipemphasisMIP 搜索重点:0=平衡,1=寻找可行解,2=证明最优性,3=寻找最佳可行解,4=寻找隐藏可行解0
mippolishMIP 解优化级别0
mippriorMIP 分支优先级文件
mipstart使用 MIP 起点文件
nodMIP 节点数限制GAMS nodlim
nodesel节点选择策略:0=深度优先,1=最佳界,2=最佳估值,3=动态0
objdif目标函数差异限制0
objrep对象存储报告频率0
optca绝对最优容差(MIP)0
optcr相对最优容差(MIP)GAMS optcr
optfile读取 CPLEX 选项文件0
ortol障碍算法的正交化容差0
perind周期性重整化指示1
perturb扰动选项0
preind预处理指示:0=关闭,1=开启1
prepass预处理传递次数-1
preslvnd预处理节点指示0
prereform预求解后重整(0=自动,1=结束预处理,2=特定于问题)0
pricing单纯形定价策略0
priopt原始可行性优化级别0
probe探测级别(-1=自动,0=关闭,1=适度,2=激进,3=非常激进)-1
qcscaleQCP 缩放0
reduced简化LP选项:0=关闭,1=开启1
refineriterlim冲突精炼器迭代限制0
refinernodelim冲突精炼器节点限制0
refinertime冲突精炼器时间限制0
relgapMIP 相对间隙容差GAMS optcr
reslim资源限制(秒)GAMS reslim
siftalgor筛选算法0=自动
sifttol筛选算法容差1e-6
simdisplay单纯形显示频率2
simtoler单纯形容差1e-6
singlim奇异性限制5
solnpool解池 GDX 文件前缀solnpool
solnpoolcap解池容量0
solnpoolmerge解池合并为单个 GDX 文件
solnpoolprefix解池文件前缀soln
solnpoolrep解池替换策略0
solnpoolmerge合并解池到单个 GDX 文件
stats统计数据输出0
stop停止条件0
symmetryMIP 对称性检测级别:-1=自动,0=关闭,1=适度,2=激进,3=非常激进-1
threads线程数0
tilim时间限制GAMS reslim
ts时间戳间隔0
usrincbcall用户当前解检查程序
varsel变量选择策略:-1=自动,0=最小不可行性,1=伪成本,2=强分支,3=混合-1
versionCPLEX 版本
walltime挂钟时间限制0
workdir工作目录
workmem工作内存限制(MB)自动
zerohalfcuts零半割控制0=自动

 

 


 

在线留言

尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。

 

 

 

 

联系我们

 

微信公众号

咨询微信

企业店铺

400-621-1085

(节假日期间办公室座机如无人接听,请选择其他联系方式,感谢理解!祝您节日快乐!)

 

联系我们 快速链接 相关产品 上海卡贝信息技术有限公司

©2025  上海卡贝信息技术有限公司

产品中心

下载中心

站点地图

隐私政策

 

销售QQ咨询

产品QQ咨询

淘宝店铺

 

GAMS:概述

最近更新

相关文档

下载试用

购买咨询

Berkeley Madonna

iThink

Stella Architect

IBM SPSS Modeler

DecisionTools Suite

NeuralTools

Frontier Analyst

Vensim

RISKOptimizer

PrecisionTree

LINGO

LINDO API

What'sBest!

@RISK

BARON

BayesiaLab

Oracle Crystal Ball

GEMPACK

GTAP Database

TreeAge