的次数 Types 类型 ·Tree:对其他节点的次数(默认值为2) 控制生成割(平面)的策略,共有12种策略可供选择.(如果想了解细节,请参阅整数规划方面的专著) LINGO|OPTIONS|Integer Solver(整数求解程序)选项卡 可以控制的参数和选项的含义见表3-13,界面见图3-37.
图3-37 LINGO整数求解程序的选项卡
表3-13 LINGO整数求解程序的选项卡的控制参数和含义 选项组 选项 含义 控制分支策略中优先对变量取整数的方向,有三种选择: ·Both:LINGO自动选择(默认设置) ·Up:向上取整优先 ·Down:向下取整优先 Branching 分支 Direction方向 控制分支策略中优先对哪些变量进行分支,有两种选择: Priority优先级 ·LINGO Decides:LINGO自动选择(默认设置) ·Binary:二进制(0-1)变量优先 Absolute绝对误差 Relative相对误差 Warm Start热但变量与整数的绝对误差小于这个数时,该变量被认为是整数.默认值为10 但变量与整数的相对误差小于这个数时,该变量被认为是整数.默认值为8*10 当以面前的求解结果为基础,热启动求解程序时采用的算46
?6?6Integrality 整性 LP Solver
LP求解程序 启动 法,有四种可能的设置: ·LINGO Decides:LINGO自动选择(默认设置) ·Primal Simplex:原始单纯形算法 ·Dual Simplex:对偶单纯形算法 ·Barrier:障碍法(即内点法) 续表 含义 当不以前面的求解结果为基础,冷启动求解程序时采用的算法,有四种可能的设置:(同上,略) 当目标函数值与最优值的绝对误差小于这个值时,当前解被认为是最优解(也就是说:只需要搜索比当前解至少改进这么多个单位的解)。默认值为8?10?8选项组 选项 Cold Start冷启动 LP求解程序 Absolute目标函数的绝对误差限 Relative目标函数的相对误差限 Optimality最优性 Time To Relative开始采用相对误差限的时间(秒) Tolerances Hurdle篱笆值 当前目标函数值与最优值的相对误差小于这个值时,当前解被认为是最优解(也就是说:只需要搜索比当前解至少改进这么多百分比的解)。默认值为5?10?8 在程序开始运行后这么多秒内,不采用相对误差限策略;此后才使用相对误差限策略,默认值为100秒 同第二章LINDO部分的介绍 控制如何选择节点的分支求解,有以下选项: ?LINGO Decides:LINGO自动选择(默认设置)?Depth First:按深度优先 ?Worst Bound:选择具有最坏界的节点 ?Best Bound:选择具有最好的界的节点 控制采用强分支的层数,也就是说,对前这么多层的分支,采用强分支的策略。所谓强分支,就是在一个节点对多个变量分别尝试进行预分支,找出其中最好的解(变量)进行实际分支 Node Selection节点选择 Strong Branch强分支的层数 ?LINGO|OPTIONS|Global Solver(全局最优解程序)选项卡
控制全局优化程序的参数。可以控制的参数和选项的含义见表3-14,界面如图3-38。
47
图3-38 LINGO全局优化程序的选项卡
表3-14 LINGO全局优化程序的选项卡的控制参数和含义
选项组 选项 Use Global Solver使用全局最优求解程序 含义 选择该选项,LINGO将用全局最优求解程序求解模型,尽可能得到全局最优解(求解花费的时间可能很长);否则不使用全局最优求解程序,通常只得到局部最优解 有两个域可以控制变量上界(按绝对值): 1. Value:设定变量的上界,默认为10; 2. Application列表框设置这个界的三种应用范围: ?None:所以变量都不使用这个上界; ?All:所有变量都使用这个上界; ?Selected:先找到第1个局部最优解,然后对满足这个上界的变量使用这个上界(默认设置) 有两个域可以控制两类误差限(按绝对值): 1. Optimality:只搜索比当前解至少改进这么个单位的解(默认值为10-6); 2. Delta:全局最优求解程序在凸化过程中增加的约束的误差限(默认值为10-7) 10Global Solver全局最优求解程序 Variable Upper Bound变量上界 Tolerances误差限 48
Strategies策略 可以控制最优求解程序的三类策略: 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点求解 ?N(>1的正整数) Multistart Solver多初始点求解程序 Attempts尝试次数 3.5LINGO命令窗口
与LINGO类似,LINGO也有两种命令模式:一种是常用的Windows模式,另一种是命令行(Command-Line)模式。由于在Windows模式下使用LINGO非常方便,所以这里仅仅是简单介绍一下命令行模式下的主要行命令,供有兴趣的读者作为入门参考。
与LINGO类似,你随时可以通过菜单命令(“Window|Command Window(Ctrl+1)”打开命令窗口,在命令窗口下操作。LINGO行命令大多数与LINDO类似,如在命令窗口下的提示苻“:”后面输入COMMANDS(COM)可以看到LINGO的所有命令(图3-39)。
49
图3-39LINGO的所有行命令
可以看出,LINDO的不少行命令在LINGO中不再支持,如DATE,TABL,SDBC,FBS,FPUN,SMPN等。LINGO也增加了一些与LINDO不同的命令,如MEM,MODEL,FRMPS,GEN,HIDE,SMPI,FREEZE,DBUID,DBPWD等,表3-15简要列出了这些新增命令的基本功能。
表3-15 部分LINGO行命令的基本功能
LINGO行命令 MEM MODEL FRMPS GEN HIDE SMPI FREEZE
功能简介 显示距阵生成器(建模语言)的内存使用情况(不包括求解程序使用的内存) 开始输入LINGO模型 读出自由格式的MPS文件(而RMPS命令读出固定格式的MPS文件) 编译并以代数形式生成展开的模型,才参见“LINGO|Generate”菜单命令 用户对模型设定密码,隐藏模型文本的内容(如:为了保护你的知识产权时) 以MPI文件格式保存模型(该文件主要供LINDO API软件阅读,提供接口) 冻结(即保存)系统参数(包括SET命令可50