用lingo编程解决运输问题大全 - 图文 下载本文

内容发布更新时间 : 2024/12/23 1:32:48星期一 下面是文章的全部内容请认真阅读。

经济学上称为影子价格,即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。

页 第46

下面对“资源”的影子价格作进一步的分析。影子价格的作用(即在最优解下“资源”增加1个单位时“效益”的增量)是有限制的。每增加1桶牛奶利润增长48元(影子价格),但是,上9 面输出的CURRENT RHS 的ALLOWABLE INCREASE 和 ALLOWABLE DECREASE 给出了影子价格有意

义条件下约束右端的限制范围: milk)原料最多增加10(桶牛奶),time)劳动时间最多增加53(小时)。现在可以回答附加问题1)的第2问:虽然应该批准用35元买1桶牛奶的投资,但每天最多购买10桶牛奶。顺便地说,可以用低于每小时2元的工资聘用临时工人以增加劳动时间,但最多增加53.3333小时。

需要注意的是:灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。比如对于上面的问题,“原料最多增加10(桶牛奶)”的含义只能是“原料增加10(桶牛奶)”时最优基保持不变,所以影子价格有意义,即利润的增加大于牛奶的投资。反过来,原料增加超过10(桶牛奶),影

页 第47

子价格是否一定没有意义?最优基是否一定改变?一般来说,这是不能从灵敏性分析报告中直接得到的。此时,应该重新用新数据求解规划模型,才能做出判断。所以,从正常理解的角度来看,我们上面回答“原料最多增加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 (状态栏) Status Window (状态窗口) Terse Output (简洁输出) Toolbar (工具栏) Solution Cutoff (解的截断) 如果选择该选项,则LINGO每次启动时会在屏幕上弹出一个对话框,显示LINGO的版本和版权信息;否则不弹出 如果选择该选项,则LINGO系统在主窗口最下面一行显示状态栏;否则不显示 如果选择该选项,则LINGO系统每次运行LINGO|Solve命令时会在屏幕上弹出状态窗口;否则不弹出 如果选择该选项,则LINGO系统对求解结果报告等将以简洁形式输出;否则以详细形式输出 如果选择该选项,则显示工具栏;否则不显示 小于等于这个值的解将报告为“0”(缺省值是10) -9File Format (文件格式) Syntax Coloring (语法配色) lg4 (extended) 模型文件的缺省保存格式是lg4格式(这是一种二进制文件,只有(lg4,扩展格式) LINGO能读出) lng (text only) 模型文件的缺省保存格式是lng格式(纯文本) (lng,纯文本格式) 语法配色的行数限制(缺省为1000)。LINGO模型窗口中将LINGO关Line limit 键此显示为兰色,注释为绿色,其他为黑色,超过该行数限制后则不(行数限制) 再区分颜色。特别地,设置行数限制为0时,整个文件不再区分颜色。 Delay (延迟) 设置语法配色的延迟时间(秒,缺省为0,从最后一次击键算起)。 页 第48

Paren Match (括号匹配) 如果选择该选项,则模型中当前光标所在处的括号及其相匹配的括号将以红色显示;否则不使用该功能 Send Reports to Command Window 如果选择该选项,则输出信息会发送到命令窗口;否则不使用该功能 (报告发送到命令窗口) Command Window (命令窗口) Echo Input (输入信息反馈) 如果选择该选项,则用File|Take Command命令执行命令脚本文件时,处理信息会发送到命令窗口;否则不使用该功能 命令窗口能显示的行数的最大值为Maximum(缺省为800);如果要显Line Count Limits 示的内容超过这个值,每次从命令窗口滚动删除的最小行数为(行数限制) Minimum(缺省为400) Page Size Limit(页面大小限制) 命令窗口每次显示的行数的最大值为Length(缺省为没有限制),显示这么多行后会暂停,等待用户响应;每行最大字符数为Width(缺省为74,可以设定为64-200之间),多余的字符将被截断 (2)General Solver(通用求解器)选项卡 选项组 选项 含义 Generator Memory Limit (MB)矩阵缺省值为32M,矩阵生成器使用的内存超过该限制,LINGO将报告\生成器的内存限制(兆) model generator ran out of memory\Iterations 迭代次数 Time (sec) 运行时间(秒) 求解一个模型时,允许的最大迭代次数(缺省值为无限) Runtime Limits 运行限制 求解一个模型时,允许的最大运行时间(缺省值为无限) 求解时控制对偶计算的级别,有三种可能的设置: ·None: 不计算任何对偶信息; ·Prices:计算对偶价格(缺省设置); ·Prices and Ranges:计算对偶价格并分析敏感性。 控制重新生成模型的频率,有三种可能的设置: ·Only when text changes:只有当模型的文本修改后才再生成模型; ·When text changes or with external references:当模型的文本修改或模型含有外部引用时(缺省设置); ·Always:每当有需要时。 决定求解模型时线性化的程度,有四种可能的设置: Solver Decides:若变量数小于等于12个,则尽可能全部线性化;否则不做任何线性化(缺省设置) ·None:不做任何线性化 ·Low:对函数@ABS(), @MAX(), @MIN(), @SMAX(), @SMIN(),以及二进制变量与连续变量的乘积项做线性化 ·High:同上,此外对逻辑运算符#LE#, #EQ#, #GE#, #NE#做线性化 设置线性化的大M系数(缺省值为10)。 设置线性化的误差限(缺省值为10)。 -66Dual Computations (对偶计算) Model Regeneration (模型的重新生成) Degree (线性化程度) Linearization(线性化) Big M(线性化的大M系数) Delta(线性化的误差限) 页 第49

Allow Unrestricted Use of 选择该选项可以保持与LINGO4.0以前的版本兼容:即允许使用基本集合Primitive Set Member Names 的成员名称直接作为该成员在该集合的索引值(LINGO4.0以后的版本要(允许无限制地使用基本集合的成员求使用@INDEX函数)。 名) Check for Duplicate Names in Data 选择该选项,LINGO将检查数据和模型中的名称是否重复使用,如基本集and Model(检查数据和模型中的名称合的成员名是否与决策变量名重复。 是否重复使用) Use R/C format names for MPS I/O (在MPS文件格式的输入输出中使用在MPS文件格式的输入输出中,将变量和行名转换为R/C格式 R/C格式的名称) (3)Linear Solver(线性求解器)选项卡 选项组 选项 含义 求解时的算法,有四种可能的设置: ·Solver Decides:LINGO自动选择算法 (缺省设置) ·Primal Simplex:原始单纯形法 ·Dual Simplex:对偶单纯形法 ·Barrier: 障碍法 (即内点法) Method 求解方法 Initial Linear Feasibility Tol -6控制线性模型中约束满足的初始误差限(缺省值为3*10) 初始线性可行性误差限 Final Linear Feasibility Tol. 最后线性可行性误差限 Model Reduction 模型降维 控制线性模型中约束满足的最后误差限(缺省值为10) 控制是否检查模型中的无关变量,从而降低模型的规模: ·Off:不检查 ·On:检查 ·Solver Decides:LINGO自动决定(缺省设置) 有三种可能的设置: ·Solver Decides:LINGO自动决定(缺省设置) ·Partial:LINGO 对一部分可能的出基变量进行尝试 ·Devex:用Steepest-Edge(最陡边)近似算法对所有可能的变量进行尝试,找到使目标值下降最多的出基变量 有三种可能的设置: ·Solver Decides:LINGO自动决定(缺省设置) ·Dantzig:按最大下降比例法确定出基变量 ·Steepest-Edge:最陡边策略,对所有可能的变量进行尝试,找到使目标值下降最多的出基变量 选择该选项,LINGO将尝试将一个大模型分解为几个小模型求解;否则不尝试 选择该选项,LINGO检查模型中的数据是否平衡(数量级是否相差太大)并尝试改变尺度使模型平衡;否则不尝试 选项 含义 -7Primal Solver 原始单纯形法 Pricing Strategies 价格策略(决定出基变量的策略) Dual Solver对偶单纯形法 Matrix Decomposition 矩阵分解 Scale Model 模型尺度的改变 选项组 (4)Nonlinear Solver(非线性求解器)选项卡 Initial Nonlinear Feasibility -3控制模型中约束满足的初始误差限(缺省值为10) Tol. 初始非线性可行性误差限 Final Nonlinear Feasibility Tol. 控制模型中约束满足的最后误差限(缺省值为10) -6 页 第50