量:原料增加1个单位(1桶牛奶)时利润增长48(元),劳动时间增加1个单位(1小时)时利润增长2(元),而增加非紧约束车间甲的能力显然不会使利润增长。这里,“效益”的增量可以看作“资源”的潜在价值,经济学上称为影子价格,即1桶牛奶的影子价格为48元,1小时劳动的影子价格为2元,车间甲的影子价格为零。读者可以用直接求解的办法验证上面的结论,即将输入文件中原料约束milk)右端的50改为51,看看得到的最优值(利润)是否恰好增长48(元)。用影子价格的概念很容易回答附加问题1):用35元可以买到1桶牛奶,低于1桶牛奶的影子价格48,当然应该作这项投资。回答附加问题2):聘用临时工人以增加劳动时间,付给的工资低于劳动时间的影子价格才可以增加利润,所以工资最多是每小时2元。
目标函数的系数发生变化时(假定约束条件不变),最优解和最优值会改变吗?这个问题不能简单地回答。上面输出给出了最优基不变条件下目标函数系数的允许变化范围:x1的系数为(72-8,72+24)=(64,96);x2的系数为(64-16,64+8)=(48,72)。注意:x1系数的允许范围需要x2系数64不变,反之亦然。由于目标函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。用这个结果很容易回答附加问题3):若每公斤A1的获利增加到30元,则x1系数变为30×3=90,在允许范围内,所以不应改变生产计划,但最优值变为90×20+64×30=3720。
下面对“资源”的影子价格作进一步的分析。影子价格的作用(即在最优解下“资源”增加1个单位时“效益”的增量)是有限制的。每增加1桶牛奶利润增长48元(影子价格),但是,上9
面输出的CURRENT RHS 的ALLOWABLE INCREASE 和 ALLOWABLE DECREASE 给出了影子价格有意义条件下约束右端的限制范围: milk)原料最多增加10(桶牛奶),time)劳动时间最多增加53(小时)。现在可以回答附加问题1)的第2问:虽然应该批准用35元买1桶牛奶的投资,但每天最多购买10桶牛奶。顺便地说,可以用低于每小时2元的工资聘用临时工人以增加劳动时间,但最多增加53.3333小时。 需要注意的是:灵敏性分析给出的只是最
优基保持不变的充分条件,而不一定是必要条件。比如对于上面的问题,“原料最多增加10
页 第21
(桶牛奶)”的含义只能是“原料增加10(桶牛奶)”时最优基保持不变,所以影子价格有意义,即利润的增加大于牛奶的投资。反过来,原料增加超过10(桶牛奶),影子价格是否一定没有意义?最优基是否一定改变?一般来说,这是不能从灵敏性分析报告中直接得到的。此时,应该重新用新数据求解规划模型,才能做出判断。所以,从正常理解的角度来看,我们上面回答“原料最多增加10(桶牛奶)”并不是完全科学的。
5. 模型通常形式...(Generate...)
从LINGO菜单中选用“Generate...”命令或直接按Ctrl+G组合键可以创建当前模型的代数形式、LINGO模型或MPS格式文本。
6. 选项...(Options...)
从LINGO菜单中选用“Options...”命令、单击“Options...”按钮或直接按Ctrl+I组合键可以改变一些影响LINGO模型求解时的参数。该命令将打开一个含有7个选项卡的窗口,你可以通过它修改LINGO系统的各种参数和选项。如上图。
修改完以后,你如果单击“Apply(应用)”按钮,则新的设置马上生效;如果单击“OK(确定)”按钮,则新的设置马上生效,并且同时关闭该窗口。如果单击“Save(保存)”按钮,则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效。单击“Default(缺省值)”按钮,则恢复LINGO系统定义的原始默认设置(缺省设置)。 (1)Interface(界面)选项卡 选项组 选项 Errors 含义 In 如果选择该选项,求解程序遇到错误时将打开一个对话框Dialogs(错误对话显示错误,你关闭该对话框后程序才会继续执行;否则,框) Splash Screen (弹出屏幕) General Status Bar 错误信息将在报告窗口显示,程序仍会继续执行 如果选择该选项,则LINGO每次启动时会在屏幕上弹出一个对话框,显示LINGO的版本和版权信息;否则不弹出 如果选择该选项,则LINGO系统在主窗口最下面一行显示状态栏;否则不显示 如果选择该选项,则LINGO系统每次运行LINGO|Solve命令时会在屏幕上弹出状态窗口;否则不弹出 如果选择该选项,则LINGO系统对求解结果报告等将以简洁形式输出;否则以详细形式输出 如果选择该选项,则显示工具栏;否则不显示 (一般选(状态栏) 项) Status Window (状态窗口) Terse Output (简洁输出) Toolbar (工具栏) 页 第22
Solution Cutoff (解的截断) File Format (文件格式) 小于等于这个值的解将报告为“0”(缺省值是10-9) lg4 (extended) 模型文件的缺省保存格式是lg4格式(这是一种二进制文(lg4,扩展格式) 件,只有LINGO能读出) lng (text only) (lng,纯文本格模型文件的缺省保存格式是lng格式(纯文本) 式) 语法配色的行数限制(缺省为1000)。LINGO模型窗口中Line limit 将LINGO关键此显示为兰色,注释为绿色,其他为黑色,超过该行数限制后则不再区分颜色。特别地,设置行数限制为0时,整个文件不再区分颜色。 设置语法配色的延迟时间(秒,缺省为0,从最后一次击键算起)。 如果选择该选项,则模型中当前光标所在处的括号及其相匹配的括号将以红色显示;否则不使用该功能 Syntax Coloring (行数限制) (语法配Delay (延迟) 色) Paren Match (括号匹配) Send Reports to Command Window 如果选择该选项,则输出信息会发送到命令窗口;否则不(报告发送到命令使用该功能 窗口) Echo Input (输入信息反馈) 如果选择该选项,则用File|Take Command命令执行命令脚本文件时,处理信息会发送到命令窗口;否则不使用该功能 命令窗口能显示的行数的最大值为Maximum(缺省为800);如果要显示的内容超过这个值,每次从命令窗口滚动删除的最小行数为Minimum(缺省为400) 命令窗口每次显示的行数的最大值为Length(缺省为没有Page Size Limit限制),显示这么多行后会暂停,等待用户响应;每行最(页面大小限制) 大字符数为Width(缺省为74,可以设定为64-200之间),多余的字符将被截断 Command Window (命令窗口) Line Count Limits (行数限制) 页 第23
(2)General Solver(通用求解器)选项卡
选项组 选项 含义 Generator Memory Limit (MB)缺省值为32M,矩阵生成器使用的内存超过该限制,LINGO将报矩阵生成器的内存限制(兆) Runtime Limits 运行限制 Iterations 迭代次数 Time (sec) 运行时间(秒) 告\求解一个模型时,允许的最大迭代次数(缺省值为无限) 求解一个模型时,允许的最大运行时间(缺省值为无限) 求解时控制对偶计算的级别,有三种可能的设置: Dual Computations (对偶计算) ·None: 不计算任何对偶信息; ·Prices:计算对偶价格(缺省设置); ·Prices and Ranges:计算对偶价格并分析敏感性。 控制重新生成模型的频率,有三种可能的设置: ·Only when text changes:只有当模型的文本修改后才再生Model Regeneration (模型的重新生成) 成模型; ·When text changes or with external references:当模型的文本修改或模型含有外部引用时(缺省设置); ·Always:每当有需要时。 决定求解模型时线性化的程度,有四种可能的设置: Solver Decides:若变量数小于等于12个,则尽可能全部线性化;否则不做任何线性化(缺省设置) Degree ·None:不做任何线性化 (线性化程度) ·Low:对函数@ABS(), @MAX(), @MIN(), @SMAX(), @SMIN(),Linearization(线性化) 以及二进制变量与连续变量的乘积项做线性化 ·High:同上,此外对逻辑运算符#LE#, #EQ#, #GE#, #NE#做线性化 Big M(线性化的大M系数) Delta(线性化的误差限) 设置线性化的大M系数(缺省值为106)。 设置线性化的误差限(缺省值为10-6)。 页 第24
Allow Unrestricted Use of Primitive Set Member Names (允许无限制地使用基本集合的成员名) Check for Duplicate Names in Data and Model(检查数据和模型中的名称是否重复使用) Use R/C format names for MPS 选择该选项可以保持与LINGO4.0以前的版本兼容:即允许使用基本集合的成员名称直接作为该成员在该集合的索引值(LINGO4.0以后的版本要求使用@INDEX函数)。 选择该选项,LINGO将检查数据和模型中的名称是否重复使用,如基本集合的成员名是否与决策变量名重复。 I/O (在MPS文件格式的输入输在MPS文件格式的输入输出中,将变量和行名转换为R/C格式 出中使用R/C格式的名称) (3)Linear Solver(线性求解器)选项卡 选项组 选项 含义 求解时的算法,有四种可能的设置: ·Solver Decides:LINGO自动选择算法 Method 求解方法 (缺省设置) ·Primal Simplex:原始单纯形法 ·Dual Simplex:对偶单纯形法 ·Barrier: 障碍法 (即内点法) Initial Linear Feasibility Tol 初始线性可行性误差限 Final Linear Feasibility Tol. 最后线性可行性误差限 控制线性模型中约束满足的初始误差限(缺省值为3*10-6) 控制线性模型中约束满足的最后误差限(缺省值为10-7) 控制是否检查模型中的无关变量,从而降低模型的规模: Model Reduction 模型降维 ·Off:不检查 ·On:检查 ·Solver Decides:LINGO自动决定(缺省设置) 页 第25