Strategies 策略 Analytical 解析法 Crash Initial Solution 生成初始解 Quadratic Recognition 识别二次规划 Selective Constraint Eval 有选择地检查约束 SLP Directions SLP方向 Steepest Edge 最陡边策略 选项 Level Min Seconds 用解析法计算导数(仅对只含有算术运算符的函数使用) 选择该选项, LINGO将用启发式方法生成初始解;否则不生成(缺省值) 选择该选项, LINGO将判别模型是否为二次规划,若是则采用二次规划算法(包含在线性规划的内点法中);否则不判别(缺省值) 选择该选项, LINGO在每次迭代时只检查必须检查的约束(如果有些约束函数在某些区域没有定义,这样做会出现错误);否则,检查所有约束(缺省值) 选择该选项, LINGO在每次迭代时用SLP (Successive LP,逐次线性规划)方法寻找搜索方向(缺省值) 选择该选项, LINGO在每次迭代时将对所有可能的变量进行尝试,找到使目标值下降最多的变量进行迭代;缺省值为不使用最陡边策略 含义 控制采用启发式搜索的次数(缺省值为3,可能的值为0-100). 启发式方法的目的是从分枝节点的连续解出发,搜索一个好的整数解。 每个分枝节点使用启发式搜索的最小时间(秒) 控制采用探测(Probing)技术的级别(探测能够用于混合整数线性规划模型,收紧变量的上下界和约束的右端项的值)。可能的取值为: ·Solver Decides:LINGO自动决定(缺省设置) ·1-7:探测级别逐步升高。 控制在分枝定界树中,哪些节点需要增加割(平面),可能的取值为: ·Root Only:仅根节点增加割(平面) ·All Nodes:所有节点均增加割(平面) ·Solver Decides:LINGO自动决定(缺省设置) 控制生成的割(平面)的个数相对于原问题的约束个数的上限(比值),缺省值为0.75 为了寻找合适的割,最大迭代检查的次数。有两个参数: ·Root:对根节点的次数(缺省值为200) ·Tree:对其他节点的次数(缺省值为2) 控制生成的割(平面)的策略,共有12种策略可供选择。 (如想了解细节,请参阅整数规划方面的专著) (5)Integer Pre-Solver(整数预处理求解器)选项卡 选项组 Heuristics 启发式方法 Probing Level 探测水平(级别) Application 应用节点 Constraint Cuts 约束的割(平面) Relative Limit 相对上限 Max Passes 最大迭代检查的次数 Types 类型 (6)Integer Solver(整数求解器)选项卡 整数预处理程序只用于整数线性规划模型(ILP模型),对连续规划和非线性模型无效。 选项组 选项 Direction Branching 分枝 Priority Absolute Integrality 绝对误差限 整性 Relative 相对误差限 含义 控制分枝策略中优先对变量取整的方向,有三种选择: ·Both:LINGO自动决定(缺省设置) ·Up:向上取整优先 ·Down:向下取整优先 控制分枝策略中优先对哪些变量进行分枝,有两种选择: ·LINGO Decides:LINGO自动决定(缺省设置) ·Binary:二进制(0-1)变量优先 当变量与整数的绝对误差小于这个值时,该变量被认为是整数。缺省值为10-6 当变量与整数的相对误差小于这个值时,该变量被认为是整数。缺省值为8*10-6 页 第29
LP Solver LP求解程序 Warm Start 热启动 Optimality 最优性 Tolerances 误差限 Cold Start 冷启动 Absolute 目标函数的绝对误差限 Relative 目标函数的相对误差限 Time To Relative 在程序开始运行后这么多秒内,不采用相对误差限策略;此后才使用相开始采用相对误差对误差限策略。缺省值为100秒。 限的时间(秒) Hurdle 同上一章LINDO部分的介绍 篱笆值 控制如何选择节点的分枝求解,有以下选项: ·LINGO Decides: LINGO自动选择(缺省设置) Node Selection ·Depth First:按深度优先 节点选择 ·Worst Bound:选择具有最坏界的节点 ·Best Bound:选择具有最好的界的节点 当以前面的求解结果为基础,热启动求解程序时采用的算法,有四种可能的设置: ·LINGO Decides:LINGO自动选择算法(缺省设置) ·Primal Simplex:原始单纯形法 ·Dual Simplex:对偶单纯形法 ·Barrier: 障碍法 (即内点法) 当不以前面的求解结果为基础,冷启动求解程序时采用的算法,有四种可能的设置:(同上,略) 当当前目标函数值与最优值的绝对误差小于这个值时,当前解被认为是最优解(也就是说:只需要搜索比当前解至少改进这么多个单位的解)。-8缺省值为8*10 当当前目标函数值与最优值的相对误差小于这个值时,当前解被认为是最优解(也就是说:只需要搜索比当前解至少改进这么多百分比的解)。-8缺省值为5*10 Strong Branch 强分枝的层数 控制采用强分枝的层数。也就是说,对前这么多层的分枝,采用强分枝策略。所谓强分枝,就是在一个节点对多个变量分别尝试进行预分枝,找出其中最好的解(变量)进行实际分枝。 (7)Global Solver(全局最优求解器)选项卡 选项组 选项 含义 Use Global Solver 选择该选项,LINGO将用全局最优求解程序求解模型,尽可能得到使用全局最优求解全局最优解(求解花费的时间可能很长);否则不使用全局最优求程序 解程序,通常只得到局部最优解 有两个域可以控制变量上界(按绝对值): Variable Bound 变量上界 1、 Value:设定变量的上界,缺省值为1010; Upper 2、 Application列表框设置这个界的三种 应用范围: ·None: 所有变量都不使用这个上界; ·All: 所有变量都使用这个上界; ·Selected:先找到第1个局部最优解,然后对满足这个上界的变量使用这个上界(缺省设置) 有两个域可以控制变量上界(按绝对值): 1、 Optimality:只搜索比当前解至少改进这么多个单位的解(缺省值为10-6); 2、 Delta:全局最优求解程序在凸化过程中增加的约束的误差限(缺省值为10-7)。 Global Solver 全局最优求解程序 Tolerances 误差限 页 第30
Strategies 策略 Multistart Solver 多初始点求解程序 Attempts 尝试次数 可以控制全局最优求解程序的三类策略: 1、Branching:第1次对变量分枝时使用的分枝策略: ·Absolute Width(绝对宽度) ·Local Width(局部宽度) ·Global Width(全局宽度) ·Global Distance(全局距离) ·Abs (Absolute) Violation(绝对冲突) ·Rel (Relative) Violation(相对冲突,缺省设置) 2、Box Selection: 选择活跃分枝节点的方法: ·Depth First(深度优先) ·Worst Bound(具有最坏界的分枝优先,缺省设置) 3、Reformulation:模型重整的级别: ·None(不进行重整) ·Low(低) ·Medium(中) ·High(高,缺省设置) 尝试多少个初始点求解,有以下几种可能的设置: ·Solver Decides:由LINGO决定(缺省设置,对小规模NLP问题为5次,对大规模问题不使用多点求解) ·Off:不使用多点求解 ·N(>1的正整数):N点求解 ·Barrier: 障碍法 (即内点法) 5.4 窗口菜单(Windows Menu) 1. 命令行窗口(Open Command Window)
从窗口菜单中选用“Open Command Window”命令或直接按Ctrl+1可以打开LINGO的命令行窗口。在命令行窗口中可以获得命令行界面,在“:”提示符后可以输入LINGO的命令行命令。
2. 状态窗口(Status Window)
从窗口菜单中选用“Status Window”命令或直接按Ctrl+2可以打开LINGO的求解状态窗口。
如果在编译期间没有表达错误,那么LINGO将调用适当的求解器来求解模型。当求解器开始运行时,它就会显示如下的求解器状态窗口(LINGO Solver Status)。 求解器状态窗口对于监视求解器的进展和模型大小是有用的。求解器状态窗口提供了一个中断求解器按钮(Interrupt Solver),点击它会导致LINGO在下一次迭代时停止求解。在绝大多数情况,LINGO能够交还和报告到目前为止的最好解。一个例外是线性规划模型,返回的解是无意义的,应该被忽略。但这并不是一个问题,因为线性规划通常求解速度很快,很少需
页 第31
要中断。注意:在中断求解器后,必须小心解释当前解,因为这些解可能根本就不最优解、可能也不是可行解或者对线性规划模型来说就是无价值的。 在中断求解器按钮的右边的是关闭按钮(Close)。点击它可以关闭求解器状态窗口,不过可在任何时间通过选择Windows|Status Window再重新打开。
在中断求解器按钮的右边的是标记为更新时间间隔(Update Interval)的域。LINGO将根据该域指示的时间(以秒为单位)为周期更新求解器状态窗口。可以随意设置该域,不过若设置为0将导致更长的求解时间——LINGO花费在更新的时间会超过求解模型的时间。 变量框(Variables)
Total显示当前模型的全部变量数,Nonlinear显示其中的非线性变量数,Integers显示其中的整数变量数。非线性变量是指它至少处于某一个约束中的非线性关系中。例如,对约束
X+Y=100;
X和Y都是线性变量。对约束
X*Y=100;
X和Y的关系是二次的,所以X和Y都是非线性变量。对约束
X*X+Y=100;
X是二次方是非线性的,Y虽与X构成二次关系,但与X*X这个整体是一次的,因此Y是线性变量。被计数变量不包括LINGO确定为定值的变量。例如:
X=1;
X+Y=3;
这里X是1,由此可得Y是2,所以X和Y都是定值,模型中的X和Y都用1和2代换掉。 约束(Constraints)框
Total显示当前模型扩展后的全部约束数,Nonlinear显示其中的非线性约束数。非线性约束是该约束中至少有一个非线性变量。如果一个约束中的所有变量都是定值,那么该约束就被剔除出模型(该约束为真),不计入约束总数中。 非零(Nonzeroes)框
Total显示当前模型中全部非零系数的数目,Nonlinear显示其中的非线性变量系数的数目。
内存使用(Generator Memory Used,单位:K)框
显示当前模型在内存中使用的内存量。可以通过使用LINGO|Options命令修改模型的最大内存使用量。
已运行时间(Elapsed Runtime)框
显示求解模型到目前所用的时间,它可能受到系统中别的应用程序的影响。 求解器状态(Solver Status)框
显示当前模型求解器的运行状态。域的含义如下。
含义 可能的显示 当前模型的类型(请参LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP Model Class 阅本书第1章) (以I开头表示IP,以PI开头表示PIP) \Optimum\\Optimum\\\(不可行), State 当前解的状态 \(无界), \(中断), \(未确定) Objective 当前解的目标函数值 实数 当前约束不满足的总量实数(即使该值=0,当前解也可能不可行,因为这Infeasibility (不是不满足的约束的个量中没有考虑用上下界形式给出的约束) 个数) Iterations 目前为止的迭代次数 非负整数 域名 页 第32