完整word版cplex翻译完全版Word文档格式.docx
《完整word版cplex翻译完全版Word文档格式.docx》由会员分享,可在线阅读,更多相关《完整word版cplex翻译完全版Word文档格式.docx(58页珍藏版)》请在冰豆网上搜索。
障碍算法是用单纯方法解决线性规划的另一选择。
它使用了产生一系列严格正的原始解和对偶解的原——对偶障碍算法。
对于大型的稀疏问题,选择障碍算法可能是有优势的。
Cplex提供了一种筛选算法,这种算法在变量多于约束的问题中会更有效。
筛选算法解决了一类线性规划问题,这类线性规划的子问题的结果被用来从原始模型选择列,以列入下一子问题。
GAMS/Cplex还提供了访问Cplex不可行搜索器的接口。
不可行搜索器对于不可行的线性规划,产生不可简化的、不一致的约束集(IIS)。
IIS是这样的集合:
约束和变量范围是不可行的,但是,当丢弃其中一个条件时,就会变成可行的集合。
当GAMS方程式和变量命名和包括了IIS报告并把它作为正常解列表的一部分时,GAMS和Cplex就会报告IIS。
IIS只对线性规划问题有用。
3.2二次约束规划
Cplex可以求解带有二次约束的模型。
它们在GAMS中用QCP模型表示。
QCP模型用Cplex障碍方法求解。
QP模型是一种特殊情形,它可转型为含有二次目标函数和线性约束。
转型直接可以从GAMSQCP自动转化,并且可以用求解CplexQP的方法(障碍算法、单纯形法和对偶单纯形法)求解。
对于QCP模型,Cplex只返回原始解,QP模型还返回对偶解。
3.3混合整数规划
用来求解纯整数规划和混合整数规划的方法比求解同样规模的纯线性规划问题的方法需要更多的数学计算。
许多相对小一点的整数规划模型都需要大量的时间来求解。
对于整数变量的问题,Cplex采用分支定界算法,解决了一系列的线性规划问题、子问题。
由于一个混合整数规划问题产生了许多子问题,即使是小的混合整数问题,计算强度也是非常大的,并且需要大量的物理内存。
GAMS和GAMS/Cplex支持类型1、类型2和半连续半离散的变量的特殊命令集。
Cplex也可以求解MIQCP(混合整数二次规划)型的GAMS模型问题。
正如连续型的情形,如果基本模型是个二次规划(QP),那么在求解中,单纯形法和对偶单纯刑法均可用。
如果基本模型是二次约束规划问题(QCP),那么在求解中只有障碍算法可用并且只能得到原始值。
3.4可行松弛性
不可行的寻找者找到通过约束不一致的集合(IIS)的方法找到不可行的原因。
然而,你可能没有诊断就对你的模型进行自动校正,然后继续提交答案。
这样做的另一个方法就是建立带有明确松弛变量和其它建模结构的模型,以使得不可能出现不可行解。
GAMS/Cplex提供的一种自动的方法就是可行优化方法(ForFeasibleOptimization),它由Cplex选项文件中的feasopt参数打开。
详情见章节——可行松弛性的使用(UsingtheFeasibilityRelaxation)。
3.5解池:
产生和保持多解
本章介绍了存储混合整数规划问题(MIP和MIQCP)的多个解的解池。
本章同时还讲解了产生和管理这些解的技术。
解池存储了混合整数规划(MIP和MIQCP)的多个解。
有了这个特征,你就可以引导算法产生除了最优解的多个解。
例如,有些约束很难有效地表达成线性表达式,或者目标可能很难精确量化。
在这种情况下,获取多个解会帮助你选择其中一个最符合你所有准则的解。
这些准则包括那些不能简单用常规的混合整数规划或混合二次约束规划模型表达的准则。
例如,
●你可以在最优解的一定比例内收集解。
为了这样做,要应用解池间隙参数solnpoolagap和solnpoolgap。
●你可以收集不同解的集合。
为了这样做,要使用解池的替代参数SolnPoolReplace来设置解池的替代战略为2。
为了控制解的多样性,使用多样性过滤器。
●在这个特征的高级应用里面,你可以收集具有某些特殊属性的解。
为了这样做,请见现任过滤器(incumbentfilter)的使用方法。
●你可以收集模型的所有解和最优解。
为了这样做,把解池的强度参数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提供了两种预定义的方法来过滤解。
如果你想基于与参考解的差异来过滤解,就使用多样性过滤器。
这个过滤器对于大多数目标是切实可行的。
然而,如果你需要更好地控制保留哪个解去除哪个解,就使用现任过滤器(incumbentfilter)。
多样性过滤器
一个多样过滤器使你能产生与你为二进制变量集合指定的一组参考值相似(或不同)解,这个二进制变量集合是使用点选项divflt和上下限divfltlo和divfltup决定的。
特殊地,你可以使用多样性过滤器产生更多的与现有的解或部分解相似的解。
如果你需要多于一个多样性过滤器,比如,产生拥有多个不同解的特征的解,可以通过Cplex过滤器文件使用参数ReadFLT指定多个过滤器。
详情请见GAMS模型库中的例子模型solnpool。
现任过滤器
如果你约束比较复杂(如非线性约束),就可以使用现任过滤器。
现任过滤器的检查路径是GAMSBCH设施的一部分。
它会独立于解池接受或拒绝现解。
在转移或其他普通的程序中,现解检查路径是由参数userincbcall指定的,当发现一个新解,尽管新解并没有当前的目标值,现解检查路径就会被调用。
现任过滤器使得你的程序能够基于你自己的标准接受或拒绝新解。
如果由userincbcall指定的GAMS程序正常终止,解就被拒绝了。
如果程序返回一个编译或执行错误,现任解就会被接受。
评价解池
如果GAMS/Cplex链接程序被正确引导,一个包含元素file1、file2,……名为SolnPool的GDX文件就会被创建。
这些元素相关的文本包含各个独立的GDX解文件的文件名。
它的名字是使用前缀soln(通过选项SolnPoolPrefix指定)、模型的名字和一系列数字组成的。
比如,solnlocp1.gdx。
GAMS/Cplex覆盖现存的GDX文件而不会被警告。
指标集使得我们能方便地遍历解池中得不同解:
...
solvemymodelminzusingmip;
setsolnpossiblesolutionsinthesolutionpool/file1*file1000/
solnpool(soln)actualsolutions;
filefsol;
execute_load'
solnpool.gdx'
solnpool=Index;
loop(solnpool(soln),
put_utilityfsol'
gdxin'
/solnpool.te(soln):
0:
0;
execute_loadpoint;
displayz.l;
);
4.GAMS选项
下列的GAMS选项是在GAMS/Cplex中使用的:
选项Bratio=x;
决定是否使用高级基础。
数值1.0表示GAMS不用高级基础引导Cplex。
数值0.0表示GAMS从任意可用信息构造基础。
默认值0.25通常会使得GAMS在求解语句执行过的时候用到高级基础。
选项IterLim=n;
设置单纯迭代极限。
单纯形算法会终止或传递现解给GAMS。
在前解pre-solve完成后,后解路径就会在报告解决方案前被激活。
Cplex处理MIP(混合整数规划)问题的迭代限制时与别的GAMS求解器不同。
每个节点都会应用迭代限制,而不是所有的节点一起应用迭代限制。
对于MIP问题,有限使用通过限制执行时间(ResLim)控制解运行的时间。
同样地,当使用筛选算法时,每次筛选迭代都会应用到迭代极限(例如,每次Lp)。
筛选迭代的数目可通过设置Cplex参数siftitlim,它代表使用迭代时报告给GAMS的筛选迭代次数。
选项ResLim=x;
以秒为单位设置时间限制。
该算法会终止或传递当前解给GAMS,在前解pre-solve完成后,后解路径就会在报告解决方案前被激活。
选项SysOut=On;
(WillechoCplexmessagestotheGAMSlistingfile.)这个选项在求解失败时有用。
ModelName.Cheat=x;
Cheat的值:
每一个新的整数解肯定比前一个解至少优x。
它可以加速搜索,但是你可能错失最优解。
Cheat参数指定为绝对值(如OptCA选项)。
Cplex选项objdif能覆盖GAMScheat参数。
ModelName.Cutoff=x;
Cutoff的值:
当分支定界搜索开始时,如果树中有部分分支的目标值比x差,就会被剪枝。
这也同样可以缩短分支定界算法的初始阶段的时间。
ModelName.NodLim=x;
处理混合整数规划问题的最大节点数。
ModelName.OptCA=x;
混合整数规划问题的绝对最优判据。
ModelName.OptCR=x;
混合整数规划的相对最优判据。
注意,Cplex使用与GAMS通常使用的定义不同。
当满足下式时OptCR要求Cplex停止:
BF是当前最优整数解的目标函数值,而BP是可能最优的整数解的目标函数值。
GAMS的定义是:
ModelName.OptFile=1;
指导Cplex读取选项文件,选项文件的名字是cplex.opt。
ModelName.PriorOpt=1;
指导Cplex使用GAMS通过变量.prior参数传递的优先分支信息。
ModelName.TryInt=x;
促使GAMS/Cplex求解混合整数规划时使用当前变量值。
如果变量值在x范围内,那么这个变量就会被移动到这个范围内,同时它的首选分支方向被设置为指向这个范围。
首选分支方向仅在优先权被使用时有效。
优先权和Tryint有时不是很有效,但它们一般都优于GAMS/CPLEX的默认设置。
如果想了解有关用不同方法把已知解传递给GAMS/CPLEX的知识,请阅读章节——从混合整数规划问题的解开始。
5.Cplex选项总结
这里以目录的形式列了各种Cplex选项,还以简短的文字介绍了其功能。
在本文的最后一节,将会再次以字母顺序详细介绍这些选项。
5.1预处理和一般选项
advind高级基础使用
aggfill聚合器填充参数
aggind聚合器开/关
clocktype计算时间的时钟类型
coeredind系数降低开/关
depind依赖性检查开/关
feasopt计算使得不可行模型可行的最小消耗松弛性。
feasoptmodeFeasOpt模式
.feaspref可行性偏好
interactive允许在Control-C之后允许交互选项设置
lpmethod用于LP问题的算法
memoryemphasis减少内存的使用
names加载GAMS名字到Cplex中
numericalemphasis在数值不稳定或困难问题中加强精确度。
objrng做目标范围
parallelmode并行优化模式
predual把对偶问题给优化器
preind打开/关掉预先求解器
prelinear线性还原指标
prepass演示预先求解器应用的数目
printoptions列出GAMS列表文件的所有选项的值
qpmethod用于求解QP问题的算法
reduce原始和对偶还原模型
relaxpreind打开/关掉初始松弛性的预先求解
rerun如果预先求解不可行或无界,重新运行该问题
rhsrng做右测距
rngrestart写GAMS可读排列信息文件
scaind矩阵缩放开/关
solutiontarget求解凸连续二次模型时解得类型
threads全局默认线程数
tilim重写GAMSResLim选项
tuning调用参数自动调整工具
tuningdisplay自动调整工具报告信息的层次
tuningmeasure评价一套模型进展的方法
tuningrepeat在受扰动版本中的调整次数
tuningtilim在每个模型或每组模型中调整次数限制
workdir工作文件目录
workmem可用内存
5.2单纯形法选项
craind碰撞策略(用来获取开始依据)
dpriind对偶单纯形法评价
epper扰动常量
iis如果问题不可行运行IIS搜索器
netfind尝试网络提取
netppriind网络单纯形法评价
perind实行初始扰动
perlim在扰动前陷于停顿迭代的次数
ppriind初始单纯形法评价
pricelim评价候选名单
reinv重构频率
5.3单纯形法的限制选项
itlim迭代极限
netitlim网络单纯形法的迭代极限
objllim目标函数值下限
objulim目标函数值上限
singlim特别修复限制
5.4单纯形法的容限选项
epmrkMarkowitz中心宽容度
epopt最优宽容度
eprhs可行性宽容度
netepopt网络单纯形法的最优宽容度
neteprhs网络单纯形法的可行性宽容度
5.5障碍特殊选项
baralg算法选择
barcolnz密集柱处理
barcrossalg障碍交叉方法
barepcomp收敛宽容度
bargrowth无界face检测
baritlim迭代限制
barmaxcor最大修正限制
barobjrng最大目标函数
barorder算法选择排序
barqcpepcomp求解QCP问题的障碍优化法的收敛宽容度
barstartalg障碍起点算法
5.6筛选特殊选项
siftalg筛选子问题算法
siftitlim筛选迭代限制
5.7混合整数规划选项
bbinterval最优间隔范围
bndstrenind边界加强
brdir设置分支方向
bttol回溯限制
cliques派系剪切代
covers覆盖剪切代
cutloff为树搜索先下剪切
cuts默认剪切代
cutsfactor剪切限制
cutup树搜索向上剪切
disjcuts分离剪切代
divetype混合指数规划潜水策略
eachcutlim设置剪切类型的限制
flowcovers流动覆盖剪切代
flowpaths流动路径剪切代
fpheur可行性泵启发式
fraccuts戈莫里分数剪切代
gubcovers覆盖剪切代上界
heurfreq启发式频率
implbd隐含约束剪切代
lbheur局部分支启发式
mcfcuts多物品流剪切代
mipemphasis混合整数规划解策略
mipkappastats混合整数规划kapa计算
mipordind最优列表开/关
mipordtype最优顺序排列代
mipsearch混合整数规划的搜索策略
mipstart使用混合整数规划初始值
miqcpstrat混合整数二次规划松弛性选项
mircuts混合整数粗略剪切代
node_leind节点存储文件指标
nodesel节点选择策略
preslvnd节点欲求解选择器
probe在解决混合整数规划之间搜索
qpmakepsdind调整混合整数二次约束公式,以使二次矩阵正半明确
relaxfixedinfeas在解决固定问题时获得不可行性
repeatpresolve在预处理后重新从根开始预求解
rinsheur邻域搜索引导的松弛性
solvefinal用固定离散变量转化解决问题
startalg混合整数规划开始算法
strongcandlim强分支候选名单的大小
strongitlim强分支的每个数值的迭代限制
subalg求解子问题的算法
submipnodelim在RINS子混合整数规划的节点数限制
symmetry对称性破坏剪切
varsel每个节点上的变量选择策略
zerohalfcuts零——半剪切
5.8混合整数规划限制选项
aggcutlim剪切代的算法限制
auxrootthreads根节点辅助任务的线程数
cutpassmaximumnumberofcuttingplanepasses剪切平面的最大数目
fraccand产生格莫瑞分数剪枝的候选限制
fracpass产生格莫瑞剪枝的最大流程次数
intsollim整数解的最大数目
nodelim要求解的最大节点数目
polishafterepagap开始求解可行解前的绝对混合整数规划差距
polishafterepgap开始求解可行解前的相对混合整数规划差距
polishafternode开始求解可行解前进程节点
polishafterintsol开始求解可行解前找到的绝对混合整数规划整数解
polishaftertime开始求解可行解前的时间
probetime搜索花费的时间
repairtries尝试修复不可行MIP的开始
trelim树的最大内存空间
5.9混合整数规划解池选项
divtup多样性的上界
divfltlo多样性的下界
.divflt解池范围过滤系数
populatelim通过转移方法为解池产生的解的限制
readflt读取Cplex解池过滤文件
solnpool解池文件名字
solnpoolagap解池中的解的绝对容忍度
solnpoolcapacity解池中保留的解的限制
solnpoolgap解池中的解的相对容忍度
solnpoolintensity能够产生多个解