




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CPLEX 12目录1.简介22.怎么用Cplex运行模型33.Cplex概览33.1线性规划33.2二次约束规划43.3混合整数规划43.4 可行松弛性53.5 解池:产生和保持多解54.GAMS选项85.Cplex选项总结105.1 预处理和一般选项105.2 单纯形法选项125.3 单纯形法的限制选项125.4 单纯形法的容限选项135.5 障碍特殊选项135.6 筛选特殊选项135.7 混合整数规划选项135.8 混合整数规划限制选项155.9 混合整数规划解池选项165.10 混合整数规划容许度选项165.11输出选项175.12 GAMS/Cplex选项文件176.特殊备注186.1 物理内存限制186.2 使用特殊有序集186.3 使用半连续半整数变量196.4为求解MIP问题耗尽内存196.5 不能证明整数最优206.6 从混合整数规划的解开始206.7 使用可行松弛性207.GAMS/ CPLEX日志文件228.CPLEX选项的详细说明251. 简介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有一个非常有效的算法。网络限制包括以下属性:l 每个非零的系数不是1就是-1;l 这些约束的每一列都有两个非零项,一个系数为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)的多个解。有了这个特征,你就可以引导算法产生除了最优解的多个解。例如,有些约束很难有效地表达成线性表达式,或者目标可能很难精确量化。在这种情况下,获取多个解会帮助你选择其中一个最符合你所有准则的解。这些准则包括那些不能简单用常规的混合整数规划或混合二次约束规划模型表达的准则。例如,l 你可以在最优解的一定比例内收集解。为了这样做,要应用解池间隙参数solnpoolagap和solnpoolgap。l 你可以收集不同解的集合。为了这样做,要使用解池的替代参数SolnPoolReplace来设置解池的替代战略为2。为了控制解的多样性,使用多样性过滤器。l 在这个特征的高级应用里面,你可以收集具有某些特殊属性的解。为了这样做,请见现任过滤器(incumbent filter)的使用方法。l 你可以收集模型的所有解和最优解。为了这样做,把解池的强度参数SolnPoolIntensity设置为它的最大值。填充解池填充与模型相关的解池的方法有两个:你可以累计连续的现解或通过移入解池产生可选的解。这个方法是由参数SolnPoolPop选择的。l 现解一经发现,常规的优化程序就会自动地把它添加到解池(SolnPoolPop=1)。l Cplex还提供了一个专门产生多个解的程序。你可以通过设置选项SolnPoolPop2来调用这个程序。你可以多次调用该程序去寻找多个解,特别是第一个找到的解并不是很让人满意的时候。这是通过制定一个GAMS程序(选项SolnPoolPopRepeat)来考察解。在这个GAMS程序正常终止,也就是没有执行或编译错误的情况下,就会继续寻找可选的解选项SolnPoolPopRepeat在解池饱和的情况下,指定替换解的策略。值0代表了根据先进先出规则的方法替换解。值1保留了最佳目标值的解。值2是以建立多样性的解集的规则替换解。如果你获得的解彼此都太过相似,请尝试把SolnPoolPopRepeat设为2。替换策略仅适用于由当前调用的解的子集,而不影响解池中已有的解。解池中的解即使满足替换条件,也不会被替换掉。所以每一次完整的重复调用转移程序,解池就会被新发现的解扩展一个。在GAMS程序指定决定继续搜索可选解的SolnPoolPopRepeat后,由选项SolnPoolPopRepeat指定的文件就会被读入。文件中解的个数在转移程序被再次调用之前会被删掉。程序执行结束,GAMS/Cplex会自动删掉这个文件。详情请参见GAMS模型库的模型solnpool。枚举所有解有了解池,你可以收集模型的所有解。为了这么做,须设置解池强度参数SolnPoolIntensity为最大值4并设SolnPoolPop=2。你也可以枚举所有的可行解。例如,如果你想枚举所有可选择的最优解,做如下设置:l 设置池绝对间距参数SolnPoolAGap=0.0。l 设置池强度参数SolnPoolIntensity=4。l 设置转移限制参数PopulateLim 对于你的模型足够大,例如,2100000000。l 设置池转移参数SolnPoolPop=2。请注意,但是即使是小模型,解的数目也有可能是很大的。因此,枚举所有的解需要消耗大量的时间和内存。连续变量可能会有无数的解,所以实际上在电脑中不可能枚举所有的解。因此,转移只在一组二进制集合中给出一个解。而对于二进制和整数变量,即使可能存在着值是一样的几个解,但是对于连续型变量,解的值是不一样的。同样地,因为同样的原因,转移程序对无限模型并不产生所有的可行解。只要有无限的迹象,转移程序就会停止。Cplex使用有限精度数值的数学方法,因此,解的可行性取决于一定的容差性。评价解得可行性的容差度由两个参数决定:l 完整性容差度EnIntl 可行性容差度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;set soln possible solutions in the solution pool /file1*file1000/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;);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;(Will echo Cplex messages to the GAMS listing file.)这个选项在求解失败时有用。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 计算使得不可行模型可行的最小消耗松弛性。feasoptmode FeasOpt模式.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 单纯形法的容限选项epmrk Markowitz中心宽容度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 根节点辅助任务的线程数cutpass maximum number of cutting plane passes剪切平面的最大数目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 能够产生多个解的解池的强度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 1simdisplay 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选项指点的大小大时,就把分支定界树的一部分保存到磁盘。这个大小应该要比可用物理内存小。修改求解过程的另一个方法就是利用更少的内存。l 设置选项nodesel去使用最佳估计策略或者深度优先搜索。深度优先搜索很少产生很大的未搜索的节点清单,因为Cplex会深深潜入分支定界树,而不是乱跳到树的其他分支。l 设置选项varsel去使用强壮的分支。强壮的分支会在每个节点上花费额外的计算时间去选择更好的分支变量,结果产生一个更小的树。这样通常会比较快。l 在某些问题上,会产生大量的剪枝,而求解速度却没有产生相应大的好处。使用选项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使用。6.7 使用可行松弛性可行松弛性的使用与否是由Cplex求解器选项文件中得FeasOpt参数设置的。通过FeasOpt选项,Cplex用最小化权重惩罚函数的方式接受一个可行模型并选择性地松弛变量范围和约束。本质上,可行松弛性试图说明最小的变化会获得可行性。它返回一个可行解给GAMS,并在列表文件的解区域用INFES标志来标识范围和约束的松弛性。通过默认所有等式是松弛性的候补而且可近似相等,而且没有变量可以再松弛。这种默认行为可以通过设定变量范围和约束的松弛参数选项来修改。这些参数选项可以很方便用feaspref选项来指定。参数值为负数或零,则意味着相关的范围或约束不需要修改。权重罚函数是由三个参数选项构成的,参数值越大,就越可能一个给定的范围或约束会被松弛。然而,没有必要为每一个范围或约束都指定一个参数值。实际上,通常只会用0或1,除非你对问题的理解足以让你可以指定一个明确的参数值。参数值可以通过Cplex求解器选项文件指定,语法如下:(variable or equation).feaspref (value)例如,假如我们有一个GAMS声明:Set i /i1*i5/;Set j /j2*j4/;variable v(i,j); equation e(i,j);那么,cplex.opt文件中的松弛性选项值可以这样指定:feasopt 1v.feaspref 1v.feaspref(i1,*) 2v.feaspref(i1,j2) 0e.feaspref(*,j1) 0e.feaspref(i5,j4) 2首先,我们要打开可行松弛性。此外,我们要指定所有变量v(i,j)都有一个选项值1,除了另设的元素变量i1的参数值为2,j2的参数值为0.请注意,参数选项是通过程序指定的,因此,后面指定的选项值可以覆盖前面的选项值。用来指定等式的选项值得语法是与上述一样的。7. GAMS/ CPLEX日志文件CPLEX通过 GAMS日志文件报告它的进程。通常,GAMS日志文件显示到计算机屏幕上。日志文件显示有关presolve的统计数据,并继续运行迭代日志。对于原始的单纯形算法,迭代日志开始迭代次数的规模是有着巨大的价值。一旦出现可行解,目标函数值就被显示出来。选项simdisplay的默认值是refactorization的每个日志行。屏幕中就会出现下列行:对偶单纯形算法迭代日志是相似的,但对偶不可行和对偶重目标会被显示出来,而不显示相应的原始值,网络算法的日志增加了提取网络和网络迭代日志的统计结果。优化的完成是由单纯形算法完成和迭代日志的产生为依据。障碍算法的日志在迭代开始之前,要添加有关该问题各种算法的具体统计信息。迭代日志包括原始的对偶目标值和不可行的值。一个特殊的日志与一个基本的解决方案有交叉。对于MIP问题,通过分支定界法的搜索,CPLEX会报告的节点数量、目标函数值、有小数值的整数变量的数目、目前最好的整数解,最好的放宽解和迭代次数。最后一栏以百分比的形式显示了当前的最优差距。CPLEX日志中,若发现任何节点最左边的列中有星号(*),则表示有一个整数可行的解决方案。+表示通过启发式方法找到的。8. CPLEX选项的详细说明在设置好GAMS模型名称后应在选项文件夹中输入选项。文件夹参数设置为1,命名为“CPLEX.opt。文件名不区分大小写并应输入完整的关键词advind(整数)使用先进的依据。 GAMS/ CPLEX会自动从之前的处理指令中作为一个先进的基础。 GAMS Bratio选项可用于指定当不使用先进的基础。在CPLEX可以使用选项advind忽略通过GAMS(覆盖Bratio)传递的依据(默认值= 由GAMS Bratio确定)0使用先进的基础1如果有,使不用先前的数据2建造一个数据(使用之前的数据作为依据)aggcutlim(整数)限制可用于生成流覆盖和混合整数的约束的数量。在常见的问题中,默认值是符合要求的。 (默认值=3)aggfill(整数)聚合填补限制。如果一次迭代的最终结果是非零而不是aggfill设置的参数值,迭代将不会进行。 (默认值=10)aggind(整数) 当这个选项设置为非零值时,CPLEX聚合器将会使用迭代以减少问题中行数和列数。如果设置为正值,聚合器将指定迭代的次数,直到无法再进行削减。而当默认值为-1时,聚合器则用来规定线性规划的一次迭代和混合整数问题的无限制迭代 (默认值=-1)-1 Lp一次,MIP无限制0 不使用auxrootthreads(整数)当CPLEX解决问题的根节点时将它用在解决辅助任务的线程数量区分开。在一个提供了N个处理器或N个全局线程的系统中,如果将此参数设置为n,其中N n 0,那么CPLEX最多用n个线程解决辅助任务,N n个线程解决根节点(同样参见参数线程)。 但不能将参数n的值,设为大于或等于N,即系统所提供的处理器或全局线程的数量。换句话说,当您将此参数设置为一个默认值外的数值,那么该值必须严格小于系统中处理器或全局线程的数目。而独立于辅助根线程参数,CPLEX永远不会使用多于全局默认线程参数中定义的数量。CPLEX还确保有至少有一个线程用于主根任务。例如,如果设置全局线程参数为3,辅助根线程参数为4,则CPLEX用于辅助任务的还是只有两个线程,以保持一个线程可用于主根任务。当参数为默认值0时,CPLEX自动确定用于根本任务和辅助任务的线程数。 CPLEX用以解决根节点所使用的线程数取决于以下几个因素:1)系统中可用的处理器数量; 2)系统中可用于处理你的应用程序的线程数(例如,资源限制的结果或与其他应用程序的竞争); 3)全局默认线程总参数的值。(默认值= -1) -1 关闭:在辅助任务上不使用额外的线程0自动:让CPLEX去确定要使用的线程数N n 0 使用n个线程用于辅助任务baralg(整数)选择使用障碍算法。在处于默认设置0的情况下,开始启用适用于解决MIP的子问题和标准障碍算法,选项3适用于其他情况下,此时总是使用标准障碍算法。此外,选项1和2时启用替换算法,可以消除相关不可行的数值难点,但一般会比较慢。 (默认值=0)0对于MIP子问题是相同的,其它问题见31不可行估算开始2不可行的常量启动3标准障碍算法barcolnz(整数)不管纵向数列在专门的算法组织里是否被认为是密集的决定因素,默认值设置为0时,这个参数是被动态决定的。输入数列中0以上的数值时,这个数列是密集的。(默认值=0)Barcrossalg(整数)不管选择什么数值,或者任意的,交叉算法在障碍最优化结束时会用到。(默认值=0)-1没有交叉0自动1最初交叉2双层交叉Bardisplay(整数)障碍算法在运行时,决定显示的进度信息等级(默认值=1)0没有进度信息1显示正常的进度信息2显示诊断信息Barepcomp(真值)决定障碍运算法则集中性的补充公差。如果相关的补充小于这个数值,运算法则会以最佳的解决方案结束。(默认值=1e-008)bargrowth(真值)由障碍算法用于检测无限最优解。值越高,障碍算法将越不可能做出认为这个问题有无限最优解的结论,但如果问题确实有无限最优解,那么可能存在数据问题。(默认值=1E+012)baritlim(整数) 确定障碍算法的最大迭代次数。当设置为0,没有障碍迭代的发生,但存在设置的问题,并且会有有关设置的信息显示(如Cholesky分解信息)。在保持默认值时,不明确限制的迭代次数。(默认值=大)barmaxcor(整数) 每次迭代中,应指定可围绕中心浮动的最大修正值,较大的值可能会提高障碍算法的效果但以计算时间会变长。当为默认值-1时意味着这个数字是自动确定的。(默认值=-1)barobjrng(真值) 确定目标函数的最大绝对值。在此限制之内,障碍算法可以检测无限最优解的的问题。(默认值=1E+020)barorder (整数)确定屏障法要使用的排序算法。当默认值时,CPLEX会选出现有选择中最高效的一个。设定较高值会得出更好的排序结果,但是要花费更长的时间。(默认值=0)0 自动1 最小近似值2 Approximate Minimum Fill3 Nested Dissection (ND)barqcpepcomp (实数)范围:1e-012, 1e+075(默认值=1e-007)barstartalg (整数)这个设置选项可以让算法计算出屏障法的初始起点。默认值起点对大多数问题都适用。由于默认值起始点用于求解基础问题,在使用预对偶参数是可以设置其他的起始点。(默认值=1)1 基础默认值, 对偶为02 基础默认值, 3 基础平均, dual为04 基础平均,estimate dualbbinterval (整数)当搜索最优评估值时,设置间隔值可以选择一个最优的边界结点。当nodesel是2时处于激活状态。最佳评估值有解决方案,但当移动到边界并不能有所提高可以降低间隔值。最优评估结点选项没有整数值的时候可以提高间隔值。设置间隔值为1相当于设置nodesel为1(默认值=7)bndstrenind (整数)解决混合整型规划问题时使用边界加固(bound strengthe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级语文下册 第六单元 24 唐诗三首 《茅屋为秋风所破歌》说课稿 新人教版
- 文言文经典《活板》教学方案
- 天津市2025年天津市体育运动学校公开招聘4人笔试历年参考题库附带答案详解
- 黔东南苗族侗族自治州2025贵州黔东南州直属事业单位招聘工作人员100人笔试历年参考题库附带答案详解
- 2025海南五指山市城市建设投资有限公司招聘6人考试历年参考题附答案详解
- 2025浙江宁波市奉源水利勘测规划设计有限公司招聘11人考试历年参考题附答案详解
- 合同管理制度培训与合同风险识别与防范
- 智能化空调采购、安装与物联网应用合同
- 离婚时宅基地房屋产权分割与搬迁安置协议书
- 生态园区物业管理权移交与环保服务合同
- 机场运行指挥员4级考试试题及答案
- 设备维护保养计划及执行记录模板
- 云南省建设厅安全b证考试题库及答案解析
- 外科感染与无菌操作课件
- 内部审核检查记录表
- 2025年肾脏病学CKD患者透析并发症应对模拟考试答案及解析
- 【《航空发动机最小点火量的计算过程概述》1000字】
- 2025-2026学年七年级上册数学(人教版)教学计划(三篇)
- 八师兵团职工考试题库及答案
- 数据安全国家标准体系(2025 版)
- 潍坊市2026届高三开学调研监测考试物理试题及答案
评论
0/150
提交评论