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 1 v.feaspref 1 v.feaspref('i1',*) 2 v.feaspref('i1','j2') 0 e.feaspref(*,'j1') 0 e.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使用先进的基础