cplex翻译完全版 下载本文

polishafterintsol 开始求解可行解前找到的绝对混合整数规划整数解 polishaftertime 开始求解可行解前的时间 probetime 搜索花费的时间

repairtries 尝试修复不可行MIP的开始 trelim 树的最大内存空间 5.9 混合整数规划解池选项

divtup 多样性的上界 divfltlo 多样性的下界 .divflt 解池范围过滤系数

populatelim 通过转移方法为解池产生的解的限制 readflt 读取Cplex解池过滤文件 solnpool 解池文件名字

solnpoolagap 解池中的解的绝对容忍度 solnpoolcapacity 解池中保留的解的限制 solnpoolgap 解池中的解的相对容忍度

solnpoolintensity 能够产生多个解的解池的强度 solnpoolpop 转移解池的方法

solnpoolpopdel 包含从解池中删除的解的个数的文件 solnpoolpoprepeat 决定是否重复移植解的方法 solnpoolprefix GDX文件的文件名字前缀 solnpoolreplace 在解池中替换解的策略 userincbcall 调用现任检查程序的GAMS命令行 5.10 混合整数规划容许度选项

epagap 绝对停止容忍度 epgap 相对停止容忍度 epint 完整性容忍度

objdif 重写GAMS欺骗参数 relobjdif 相对欺骗参数 5.11输出选项

bardisplay 进展显示水平 clonelog 产生克隆日记 mipdisplay 进展显示水平 mipinterval 进展显示间隔

mpslongnum 数字输出的MPS格式文件精度 netdisplay 网络显示水平 quality 写解的质量统计 siftdisplay 筛选显示水平 simdisplay 单纯形法的显示水平 writebas 产生Cplex基础文件 writet 产生Cplex解池过滤文件 writelp 产生Cplex LP文件 writemps 产生Cplex MPS文件 writemst 产生Cplex mst文件 writeord 产生Cplex ord文件

writeparam 产生包含所有行为选项的Cplex参数文件 writepre 产生包含预求解问题的Cplex LP/MPS/SAV文件 writesav 产生Cplex 二进制问题的文件

5.12 GAMS/Cplex选项文件

GAMS/Cplex 选项文件每行中包含了一个选项或者一条命令。以星号(*)开头的一行将被忽略(即注释),没有星号的一行将被理解为被空白(空格或制表符)分开的选项名字或值。

下面是选项文件cplex.opt的示例:

scaind 1 simdisplay 2

它将导致Cplex用定标方法而不是默认值。迭代日记将能找到每次迭代而不能找到再分解。

6. 特殊备注

6.1 物理内存限制

为了运算速度,Cplex使用物理内存而不是虚拟内存或页内存。当Cplex一旦发现仅剩有限的内存可供使用,它将会自动运行算法进行调整补偿。这些调整几乎都会降低速度。学习发现自动调整的时间,有助于决定什么时候电脑需要添加内存。

在虚拟内存系统中,如果观察到磁盘内存分页,将会损失相当可观的性能。增加可用的内存会显著加速求解过程。同时考虑使用内存重点这一选项保留可能的内存。

Cplex执行一个叫做refactorization的操作的频率是由reinv选项设置决定的。执行refactorization操作的时间间隔越长,就需要越多的内存来完成每次迭代。因此,保留内存的一种方法就是增加refactorization的频率。由于refactorizing是代价昂贵的操作,通过降低reinv选项设置来提高refactorization频率通常会减低性能。在可用内存较低的情况下,Cplex通常会自动增加refactorization的频率。这可以在迭代日志中看到。默认的日志会报告每次refactorization的问题状态。如果迭代日志条目之间的迭代次数正在增加,说明Cplex正在增加refactorization的频率。由于Cplex可能在每次迭代中增加一,这对性能的影响是巨大的。这是提供额外的内存是有好处的。 6.2 使用特殊有序集

对于某些模型,可以利用一种特殊的结构。GAMS允许你声明SOS1和SOS2变量(类型1和2的特殊顺序集)。

在Cplex中SOS1变量的定义是: 最多有一个变量为非零的一组变量。 SOS2变量的定义是:

最多有两个变量为非零的一组变量,如果两个变量非零,那这两个变量在集

合中一定是相邻的。 6.3 使用半连续半整数变量

GAMS允许声明半连续半整数的变量。这些变量类型直接由GAMS/Cplex支持。比如:

SemiCont Variable x; x.lo = 3.2; x.up = 8.7;

SemiInt Variable y; y.lo = 5; y.up = 10;

变量x可以取值0.0或者介于3.2到8.7的任意值,变量y可以取值0或者任意介于5和10的整数值。

请注意,Cplex需要为semi-continuous和semi-integer变量确定一个有限的商界。

6.4为求解MIP问题耗尽内存

在解决混合整数规划中最常见的难题就是内存不足。这一问题出现在当分支定界树变得很大以至于可用内存不足以解决一个线性规划问题。由于内存变得紧迫,在Cplex试图在有限的内存引导多种操作时,你可能会观察到频繁的警告信息。如果一个解没有很快被找到,求解的过程会以一条不可挽回的整数失败信息告终。

内存中保存的数的信息应该是实质性的。Cplex为每个没有被搜索到的节点保存了基础。当利用节点选择中得最优界限方法时,对于大型的或复杂的问题,这种节点的清单会变得非常长。为搜索到的节点的清单有多大完全取决于可用物理内存的实际大小和问题的实际大小。确定的是,增加可用内存的大小能加强问题求解性能。不幸的是,一旦一个问题因为内存不足而失败,你将既无法预计进程还需要继续多远或者还需要多少内存来最终解决它。

内存限制可以使用workmen选项,和其中的nodefileind选项来限制。设置nodefileind为2或3会导致Cplex在分支定界树一长到比workmen选项指点的大小大时,就把分支定界树的一部分保存到磁盘。这个大小应该要比可用物理内存小。

修改求解过程的另一个方法就是利用更少的内存。

? 设置选项nodesel去使用最佳估计策略或者深度优先搜索。深度优先搜

索很少产生很大的未搜索的节点清单,因为Cplex会深深潜入分支定界树,而不是乱跳到树的其他分支。

? 设置选项varsel去使用强壮的分支。强壮的分支会在每个节点上花费额

外的计算时间去选择更好的分支变量,结果产生一个更小的树。这样通常会比较快。

? 在某些问题上,会产生大量的剪枝,而求解速度却没有产生相应大的好

处。使用选项cut可以关掉剪切代。

6.5 不能证明整数最优

解决混合整数规划问题的分解定界技术的一个令人沮丧的方面是求解过程可能会持续很长时间,而最优解却还没找到。记住,分支定界树可能会包含2n个节点,n等于二进制变量的个数。一个只包含30个二进制变量的问题可能产生包含大于一百万个节点的树!如果设置没有其他的终止准则,这个过程可能会无限地进行下去,直到搜索结束或者电脑内存耗尽。

通常来讲,你可以在开始优化前在优化过程设置至少一个限制。设置限制确保了在一棵太大的树会在合理的时间内终止。一旦终止,你可以使用一些不同的选项设置再次运行。考虑到前面提到的改善性能的一些捷径如设置选项mip gap、objective value diffierence、upper cutoff 和 lower cutoff。 6.6 从混合整数规划的解开始

你可以提供一个已知解作为第一个整数解(例如,从一个刚刚解过的混合整数规划问题或者从你对问题的理解得到)。当你提供了这样一个初始解,你可以调用松弛性诱导领域搜索(RINS启发式)或解抛光来改善已知解。第一个整数解可能包括各种连续变量和离散变量,例如半连续变量或特殊的命令集。

如果你为离散变量指定值,GAMS/Cplex会把值当做整数可行解来验证有效性。如果你只为部分离散变量指定值,GAMS/Cplex会试图尽量得到整数可行解的方式来填补空白的变量。如果指定值并没有直接得到整数解,GAMS/Cplex会应用快速启发式尝试修复MIP的初始解。CAMS/Cplex应用启发式算法的次数是由修复尝试参数(RepairTries)控制的。如果这个过程成功了,解就会被认为是当前问题的一个整数解。

一个MIP的初始解只有当MipStart参数被设为1时才被GAMS/Cplex使用。