logo资料库

cplex中文版.doc

第1页 / 共64页
第2页 / 共64页
第3页 / 共64页
第4页 / 共64页
第5页 / 共64页
第6页 / 共64页
第7页 / 共64页
第8页 / 共64页
资料共64页,剩余部分请下载后查看
1.简介
2.怎么用Cplex运行模型
3.Cplex概览
3.1线性规划
3.2二次约束规划
3.3混合整数规划
3.4 可行松弛性
3.5 解池:产生和保持多解
4.GAMS选项
5.Cplex选项总结
5.1 预处理和一般选项
5.2 单纯形法选项
5.3 单纯形法的限制选项
5.4 单纯形法的容限选项
5.5 障碍特殊选项
5.6 筛选特殊选项
5.7 混合整数规划选项
5.8 混合整数规划限制选项
5.9 混合整数规划解池选项
5.10 混合整数规划容许度选项
5.11输出选项
5.12 GAMS/Cplex选项文件
6.特殊备注
6.1 物理内存限制
6.2 使用特殊有序集
6.3 使用半连续半整数变量
6.4为求解MIP问题耗尽内存
6.5 不能证明整数最优
6.6 从混合整数规划的解开始
6.7 使用可行松弛性
7.GAMS/ CPLEX日志文件
8.CPLEX选项的详细说明
CPLEX 12
目 录 1. 简介...........................................................................................................................3 2. 怎么用 Cplex 运行模型............................................................................................3 3. Cplex 概览.................................................................................................................3 3.1 线性规划.......................................................................................................... 3 3.2 二次约束规划.................................................................................................. 4 3.3 混合整数规划.................................................................................................. 4 3.4 可行松弛性..................................................................................................... 5 3.5 解池:产生和保持多解................................................................................. 5 4. GAMS 选项............................................................................................................... 9 5. Cplex 选项总结.......................................................................................................10 5.1 预处理和一般选项...................................................................................... 10 5.2 单纯形法选项.............................................................................................. 12 5.3 单纯形法的限制选项.................................................................................. 12 5.4 单纯形法的容限选项.................................................................................. 13 5.5 障碍特殊选项.............................................................................................. 13 5.6 筛选特殊选项.............................................................................................. 13 5.7 混合整数规划选项...................................................................................... 13 5.8 混合整数规划限制选项.............................................................................. 15 5.9 混合整数规划解池选项.............................................................................. 16 5.10 混合整数规划容许度选项........................................................................ 16 5.11 输出选项..................................................................................................... 17 5.12 GAMS/Cplex 选项文件................................................................................17 6. 特殊备注................................................................................................................ 18 6.1 物理内存限制.............................................................................................. 18 6.2 使用特殊有序集.......................................................................................... 18 6.3 使用半连续半整数变量.............................................................................. 19 6.4 为求解 MIP 问题耗尽内存...........................................................................19 6.5 不能证明整数最优...................................................................................... 20 6.6 从混合整数规划的解开始.......................................................................... 20 6.7 使用可行松弛性.......................................................................................... 21 7. GAMS/ CPLEX 日志文件.........................................................................................22 8. CPLEX 选项的详细说明..........................................................................................25
1. 简介 GAMS/Cplex 是一种用于 GAMS (The General Algebraic Modeling System,通用 代数建模系统)的求解器,它使得用户可以把 GAMS(通用代数建模系统的)的高 级建模功能跟 Cplex 优化器的优势结合起来。Cplex 优化器是为能快速、最少用 户干预地解决大型、复杂问题而设计的。求解线性、二次约束和混合整数规划问 题的 Cplex 算法现在已提供访问(针对恰当的许可证)。尽管现存有多种求解工 具,但是,GAMS/Cplex 能自动地为特定问题计算最优值和设置大部分选项。 本文接下来总结了 GAMS/Cplex 的所有 Cplex 选项。 2. 怎么用 Cplex 运行模型 要在 GAMS 中指定使用 Cplex,可以用一下语句: Option LP = Cplex; { or QCP,NIP,NIQCP,RNIP or RNIQCP } 上述语句应该出现在 Solve 语句的前面。MIP 和 QCP 功能是单独许可的,所 以你有可能在你的系统里面不能用 Cplex 来解决这几类问题。如果在安装 GAMS 的过程中,Cplex 是指定默认的求解器,那么上述语句是不必要的。 3. Cplex 概览 3.1 线性规划 Cplex 可以使用几种可选的算法解决线性规划问题。大部分的线性规划问题 最好是使用对偶单纯算法的 Cplex 语句。有一些问题用原始单纯算法、网络优化 器、障碍算法或者筛选算法来求解好一些。并行选项允许并行使用不同的算法。 第一个结束的算法返回最终结果。 求解线性规划问题需要很大的内存。尽管 Cplex 能非常有效地管理内存,但 是当运行大型的线性规划问题时,物理内存不足仍然是最常见的问题之一。当内 存收到限制时,Cplex 会自动地调整那些可能会造成消极影响的功能。如果你正 在解决大规模的模型,一定要仔细研究“物理内存限制”这节。 Cplex 使用默认的选项设置来解决大部分的线性规划问题。这些设置通常提 供了问题的全局最优的优化速度和可靠性。然而,有的时候有某些原因导致更改 选项能改善性能,避免数值难题,控制优化运行时间或控制输出选项。 有些问题用原始单纯算法求解比用对偶单纯算法快。极少的问题用这两种算 法都表现不良。因此,可以在使用对偶单纯算法出现数值难题时考虑使用原始单
纯算法。 对于网络模型,Cplex 有一个非常有效的算法。网络限制包括以下属性:  每个非零的系数不是 1 就是-1;  这些约束的每一列都有两个非零项,一个系数为 1,另一个为-1。 只要他们能转化为具有这些属性,Cplex 能自动提取那些不遵守上述规则的 网络。 障碍算法是用单纯方法解决线性规划的另一选择。它使用了产生一系列严格 正的原始解和对偶解的原——对偶障碍算法。对于大型的稀疏问题,选择障碍算 法可能是有优势的。 Cplex 提供了一种筛选算法,这种算法在变量多于约束的问题中会更有效。 筛选算法解决了一类线性规划问题,这类线性规划的子问题的结果被用来从原始 模型选择列,以列入下一子问题。 GAMS/Cplex 还提供了访问 Cplex 不可行搜索器的接口。不可行搜索器对于 不可行的线性规划,产生不可简化的、不一致的约束集(IIS)。IIS 是这样的集合: 约束和变量范围是不可行的,但是,当丢弃其中一个条件时,就会变成可行的集 合。当 GAMS 方程式和变量命名和包括了 IIS 报告并把它作为正常解列表的一部 分时,GAMS 和 Cplex 就会报告 IIS。IIS 只对线性规划问题有用。 3.2 二次约束规划 Cplex 可以求解带有二次约束的模型。它们在 GAMS 中用 QCP 模型表示。QCP 模型用 Cplex 障碍方法求解。 QP 模型是一种特殊情形,它可转型为含有二次目标函数和线性约束。转型 直接可以从 GAMS QCP 自动转化,并且可以用求解 Cplex QP 的方法(障碍算法、 单纯形法和对偶单纯形法)求解。 对于 QCP 模型,Cplex 只返回原始解,QP 模型还返回对偶解。 3.3 混合整数规划 用来求解纯整数规划和混合整数规划的方法比求解同样规模的纯线性规划 问题的方法需要更多的数学计算。许多相对小一点的整数规划模型都需要大量的 时间来求解。 对于整数变量的问题,Cplex 采用分支定界算法,解决了一系列的线性规划 问题、子问题。由于一个混合整数规划问题产生了许多子问题,即使是小的混合 整数问题,计算强度也是非常大的,并且需要大量的物理内存。
GAMS 和 GAMS/Cplex 支持类型 1、类型 2 和半连续半离散的变量的特殊命 令集。 Cplex 也可以求解 MIQCP(混合整数二次规划)型的 GAMS 模型问题。正如 连续型的情形,如果基本模型是个二次规划(QP),那么在求解中,单纯形法和 对偶单纯刑法均可用。如果基本模型是二次约束规划问题(QCP),那么在求解 中只有障碍算法可用并且只能得到原始值。 3.4 可行松弛性 不可行的寻找者找到通过约束不一致的集合(IIS)的方法找到不可行的原因。 然而,你可能没有诊断就对你的模型进行自动校正,然后继续提交答案。这样做 的另一个方法就是建立带有明确松弛变量和其它建模结构的模型,以使得不可能 出现不可行解。GAMS/Cplex 提供的一种自动的方法就是可行优化方法(For Feasible Optimization),它由 Cplex 选项文件中的 feasopt 参数打开。详情见章节 ——可行松弛性的使用(Using the Feasibility Relaxation)。 3.5 解池:产生和保持多解 本章介绍了存储混合整数规划问题(MIP 和 MIQCP)的多个解的解池。本章 同时还讲解了产生和管理这些解的技术。 解池存储了混合整数规划(MIP 和 MIQCP)的多个解。有了这个特征,你就 可以引导算法产生除了最优解的多个解。例如,有些约束很难有效地表达成线性 表达式,或者目标可能很难精确量化。在这种情况下,获取多个解会帮助你选择 其中一个最符合你所有准则的解。这些准则包括那些不能简单用常规的混合整数 规划或混合二次约束规划模型表达的准则。例如,  你可以在最优解的一定比例内收集解。为了这样做,要应用解池间隙参 数 solnpoolagap 和 solnpoolgap。  你 可 以 收 集 不 同 解 的 集 合 。 为 了 这 样 做 , 要 使 用 解 池 的 替 代 参 数 SolnPoolReplace 来设置解池的替代战略为 2。为了控制解的多样性,使 用多样性过滤器。  在这个特征的高级应用里面,你可以收集具有某些特殊属性的解。为了 这样做,请见现任过滤器(incumbent filter)的使用方法。  你可以收集模型的所有解和最优解。为了这样做,把解池的强度参数
SolnPoolIntensity 设置为它的最大值。 填充解池 填充与模型相关的解池的方法有两个:你可以累计连续的现解或通过移入解 池产生可选的解。这个方法是由参数 SolnPoolPop 选择的。  现 解 一 经 发 现 , 常 规 的 优 化 程 序 就 会 自 动 地 把 它 添 加 到 解 池 (SolnPoolPop=1)。  Cplex 还提供 了一个专门 产生多个解 的程序。 你可以通过 设置选 项 SolnPoolPop=2 来调用这个程序。你可以多次调用该程序去寻找多个解, 特别是第一个找到的解并不是很让人满意的时候。这是通过制定一个 GAMS 程序(选项 SolnPoolPopRepeat)来考察解。在这个 GAMS 程序正 常终止,也就是没有执行或编译错误的情况下,就会继续寻找可选的解 选项 SolnPoolPopRepeat 在解池饱和的情况下,指定替换解的策略。值 0 代 表了根据先进先出规则的方法替换解。值 1 保留了最佳目标值的解。值 2 是以建 立多样性的解集的规则替换解。 如果你获得的解彼此都太过相似,请尝试把 SolnPoolPopRepeat 设为 2。 替换策略仅适用于由当前调用的解的子集,而不影响解池中已有的解。解池 中的解即使满足替换条件,也不会被替换掉。所以每一次完整的重复调用转移程 序,解池就会被新发现的解扩展一个。在 GAMS 程序指定决定继续搜索可选解的 SolnPoolPopRepeat 后,由选项 SolnPoolPopRepeat 指定的文件就会被读入。文件 中解的个数在转移程序被再次调用之前会被删掉。程序执行结束,GAMS/Cplex 会自动删掉这个文件。 详情请参见 GAMS 模型库的模型 solnpool。 枚举所有解 有了解池,你可以收集模型的所有解。为了这么做,须设置解池强度参数 SolnPoolIntensity 为最大值 4 并设 SolnPoolPop=2。 你也可以枚举所有的可行解。例如,如果你想枚举所有可选择的最优解,做 如下设置:  设置池绝对间距参数 SolnPoolAGap=0.0。
 设置池强度参数 SolnPoolIntensity=4。  设 置 转 移 限 制 参 数 PopulateLim 对 于 你 的 模 型 足 够 大 , 例 如 , 2100000000。  设置池转移参数 SolnPoolPop=2。 请注意,但是即使是小模型,解的数目也有可能是很大的。因此,枚举所有 的解需要消耗大量的时间和内存。 连续变量可能会有无数的解,所以实际上在电脑中不可能枚举所有的解。因 此,转移只在一组二进制集合中给出一个解。而对于二进制和整数变量,即使可 能存在着值是一样的几个解,但是对于连续型变量,解的值是不一样的。 同样地,因为同样的原因,转移程序对无限模型并不产生所有的可行解。只 要有无限的迹象,转移程序就会停止。 Cplex 使用有限精度数值的数学方法,因此,解的可行性取决于一定的容差 性。评价解得可行性的容差度由两个参数决定:  完整性容差度 EnInt  可行性容差度 EpRHS 一个解可能因为一对参数的值决定而被认为是可行的,因为另一对不同的参 数值而被认为是不可行的。这个现象在数值上有困难的模型中尤其明显,例如, 在大 M 系数模型。 由于可行解的定义受容差度影响,用不同的枚举解的方法或容差度的精确程 度,所得到的模型的解的数目可能是不同的。在大部分模型中,容差度问题不算 是个问题,但是在数字难题面前,Cplex 可能创造稍微不可行或整数不可行的, 从而可行得出比预期更多的解。 过滤解池 过滤使得你能控制产生和存储在池中的解的属性。Cplex 提供了两种预定义 的方法来过滤解。 如果你想基于与参考解的差异来过滤解,就使用多样性过滤器。这个过滤器 对于大多数目标是切实可行的。然而,如果你需要更好地控制保留哪个解去除哪 个解,就使用现任过滤器(incumbent filter)。
多样性过滤器 一个多样过滤器使你能产生与你为二进制变量集合指定的一组参考值相似 (或不同)解,这个二进制变量集合是使用点选项 divflt 和上下限 divfltlo 和 divfltup 决定的。特殊地,你可以使用多样性过滤器产生更多的与现有的解或部 分解相似的解。如果你需要多于一个多样性过滤器,比如,产生拥有多个不同解 的特征的解,可以通过 Cplex 过滤器文件使用参数 ReadFLT 指定多个过滤器。详 情请见 GAMS 模型库中的例子模型 solnpool。 现任过滤器 如果你约束比较复杂(如非线性约束),就可以使用现任过滤器。现任过滤 器的检查路径是 GAMS BCH 设施的一部分。它会独立于解池接受或拒绝现解。在 转移或其他普通的程序中,现解检查路径是由参数 userincbcall 指定的,当发现 一个新解,尽管新解并没有当前的目标值,现解检查路径就会被调用。现任过滤 器使得你的程序能够基于你自己的标准接受或拒绝新解。如果由 userincbcall 指 定的 GAMS 程序正常终止,解就被拒绝了。如果程序返回一个编译或执行错误, 现任解就会被接受。 评价解池 如果 GAMS/Cplex 链接程序被正确引导,一个包含元素 file1、file2,……名为 SolnPool 的 GDX 文件就会被创建。这些元素相关的文本包含各个独立的 GDX 解 文件的文件名。它的名字是使用前缀 soln(通过选项 SolnPoolPrefix 指定)、模型 的名字和一系列数字组成的。比如,soln loc p1.gdx。GAMS/Cplex 覆盖现存的 GDX 文件而不会被警告。指标集使得我们能方便地遍历解池中得不同解: ... solve mymodel min z using mip; possible solutions in the solution pool /file1*file1000/ set soln solnpool(soln) actual solutions; file fsol; execute_load 'solnpool.gdx', solnpool=Index; loop(solnpool(soln), put_utility fsol 'gdxin' / solnpool.te(soln):0:0; execute_loadpoint; display z.l; );
分享到:
收藏