线性及非线性规划计算软件 哈工程大 LINGO Lingo是一个目前求解非线性规划的常用软件包,同 学时它也能够求解线性规划,但是,如果将Lngo用于求解线 性规划,则其计算速度要比只能求解线性规划的软件 数 Lindo慢得多。因此,如果专门求解线性规划,而且自变 学量个数或者限定条件较多,请使用 Lindo,这两个软件都 建是同一个公司开发的。或者使用 mathematica,它也是计 模算线性规划的较好的软件包。 电 Lingo和Lindo可从htp:/www.lindo.com下载,并且下 子 载后即可安装使用,不过安装后都是demo版本,demo版 案本对变量的个数、限定条件的个数等等都有限制,因此, 实际使用价值不大。 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 线性及非线性规划计算软件 LINGO Lingo是一个目前求解非线性规划的常用软件包,同 时它也能够求解线性规划,但是,如果将Lingo用于求解线 性规划,则其计算速度要比只能求解线性规划的软件 Lindo慢得多。因此,如果专门求解线性规划,而且自变 量个数或者限定条件较多,请使用Lindo,这两个软件都 是同一个公司开发的。或者使用mathematica,它也是计 算线性规划的较好的软件包。 Lingo和Lindo可从http://www.lindo.com下载,并且下 载后即可安装使用,不过安装后都是demo版本,demo版 本对变量的个数、限定条件的个数等等都有限制,因此, 实际使用价值不大
安装完成后,启动 Lingo,你会看到如下窗口 LINGO-LINGO Model-LINGO1 日回 File Edit LINGO Window Help 囗倒叫卧(网回吗国?k 哈工程大学数学建模电子教案 LINGO Model-LINGO1 MAX=2*Ⅹ+3*Y Ⅹ+Y<=100; 命令窗口 求解按钮 Ready MOD 将求解内容填入窗口后,按求解按钮,则得到计算结 果如下图: 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 安装完成后,启动Lingo, 你会看到如下窗口: 命令窗口 求解按钮 将求解内容填入窗口后,按求解按钮,则得到计算结 果如下图:
Solution Report-LINGO1 回回囟 哈 工R0os= vars 2N。, integer vars= all are linear Nonzeros= 5 Constraint non= 2 are +-1) Density=o 833 程 Smallest and largest elements in abs value 1.000 100.0o0 No.: 0, ObJ=MAX, GUBs 学 Global optimal solution found at step: Objective value 300.00o 数 variabl Reduced Cost 学 0.0000oo0 100.D0 建 0. 000000 模 ROU slack or surplus Dual Price 300.000 1.000ooo 0. 0000000 3.00000o 电 子 教 案最后计算结果是:x=0,y=100 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 最后计算结果是:x=0, y=100
可见, L INGO是一个简便的线性规划与非线性规划计 哈算程序,下面用一个例子来说明 LINGO的基本概念,启动 工 LINGO后,在命令窗口中输入: 程大学 MAX=2*Ⅹ+3*Y x+Y=也均代表>=。 LINGO中的注解命令也是符 号 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 可见,LINGO是一个简便的线性规划与非线性规划计 算程序,下面用一个例子来说明LINGO的基本概念,启动 LINGO后,在命令窗口中输入: MAX = 2* X + 3 * Y; X+Y<= 100; 这就是一个最简单的线性规划,输入后,按求解键,LI NGO就会给出计算结果。其中结果用求解窗口的形式给出, 具体参见LINGO的帮助文件给出的详细说明。此处,2X +3Y称为目标函数,本例中求最大值。X+Y<=100为 约束条件。而X、Y为变量。请注意,LINGO中的每一行 都以分号结束。如果有多个约束条件,就从上面的第三行一直 往下写。与LINDO一样,LINGO中<与<=均代表< =,>与>=也均代表>=。LINGO中的注解命令也是符 号!
若一个命令或语句一行写不下,可以分多行写,但是, 最后结束命令时,一定别忘了打个分号“;”,一行内也可 哈 工 写多个命令,只要每个用分号分开即可,也就是说,分号是 程 LINGO的分隔符。 LINGO的命令从来不区分大小写, 大当你在 L INGO中定义变量时,每个变量都要以26个字 学 母开始,后面可跟数字或者下划线,最多可以32个字符长。 数下面是2个例子。 学例1下面是一个最简单的非线性规划,它实质上是求(x 建 模y2+(x2-2+4的最小值。在 LINGO中输入下式后,按 求解图标,看一看LING0会给出什么结果 电子教案 MN=x^2-2*x*y+y^2+z^2-4*z+8; x>=0;y>=0;z>=0; 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 若一个命令或语句一行写不下,可以分多行写,但是, 最后结束命令时,一定别忘了打个分号“;”,一行内也可 写多个命令,只要每个用分号分开即可,也就是说,分号是 LINGO的分隔符。LINGO的命令从来不区分大小写, 当你在LINGO中定义变量时,每个变量都要以26个字 母开始,后面可跟数字或者下划线,最多可以32个字符长。 下面是2个例子。 例1 下面是一个最简单的非线性规划,它实质上是求(xy)^2+(z-2)^2+4 的最小值。在LINGO中输入下式后,按 求解图标,看一看LINGO会给出什么结果。 MIN=x^2-2*x*y+y^2+z^2-4*z+8; x>=0; y>=0; z>=0;
2 LINGO-Solution Report-LINGO1 File Edit LINGO Window Help 哈园 LINGO Model- LINGO1 MI=x^2-2*x+y+y2+z^2-4+z+8 x>=0;y>=0;z>=0; 2/ Solution Report-LING01 工程大学数学建模电子教案 3 No. integer vars= Nonlinear rows= 1 Nonlinear vars= 3 Nonlinear constraints Nonzero 7 Constraint nonz- 3 Density=0. 438 O No 0No,> 3, ob]=MIN Single cols- Local opt imal solution found at step Objective value: 4.000000 Variable va⊥ue Reduced Cost 0. 0000000 0. 0000000 0.0000o0 0.±440892E-08 Row Slack or surplus Dual Price 4.000o00 1 000000 0.000o0o 0. 0000000 0. 0000000 2 000000 0.00o0 用 LINGO求解规划问题,那真是方便极了! 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 用LINGO求解规划问题,那真是方便极了! 上页 下页 退出
例2下面目标函数的原型是 (x1+2*x2+3x3+4*x4+…+8*x8+9x9)^2 哈 在 LINGO中输入下列命令: 工 程 MIN= 学x142+4X1X2+4*x22+6x1x3+12*x2x3+9x342+8*x12x4 +16*x2*x4+24*x3*x4+16x4^2+10*x1x5+20*x2出x5+30x3 数x5+40 X4x5+25*x5^2+12*x1x6+24*x2x6+36*x3*x6+48*x 学4*x6+60*x5*X6+366~2+14*x1*x7+28x2*x7+42*x3x7+56 建模 x4*x7+70*x5*x7+84*x6x7+49*x7^2+16*x1x8+32*x2x8+ 48*x3x8+64x4*x8+80*x5x8+96x6*x8+112x7*x8+64*x8 电2+18*x1*x9+36*x2*x9+54*x3x972*x4*x9+90+x5*x9+108* 子x6*x9+126*x7x9+1448x9+81+x9~2; 教 案3*x3+4*X4>=1;5*x5+6X6+7*x7>=2;8*x8+9*x9>=3 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 例2 下面目标函数的原型是 (x1+2*x2+3*x3+4*x4+...+8*x8+9*x9)^2 在LINGO中输入下列命令: MIN= x1^2+4*x1*x2+4*x2^2+6*x1*x3+12*x2*x3+9*x3^2+8*x1*x4 +16*x2*x4+24*x3*x4+16*x4^2+10*x1*x5+20*x2*x5+30*x3* x5+40*x4*x5+25*x5^2+12*x1*x6+24*x2*x6+36*x3*x6+48*x 4*x6+60*x5*x6+36*x6^2+14*x1*x7+28*x2*x7+42*x3*x7+56 *x4*x7+70*x5*x7+84*x6*x7+49*x7^2+16*x1*x8+32*x2*x8+ 48*x3*x8+64*x4*x8+80*x5*x8+96*x6*x8+112*x7*x8+64*x8^ 2+18*x1*x9+36*x2*x9+54*x3*x9+72*x4*x9+90*x5*x9+108* x6*x9+126*x7*x9+144*x8*x9+81*x9^2; 3*x3+4*x4>=1; 5*x5+6*x6+7*x7>=2; 8*x8+9*x9>=3;
2 LINGO-Solution Report-LINGOl File Edit LINGO Window Help 哈 M工N x1^2+4+x1+x2+4+x22+6+x1+x3+12+x2+x3+9+x3^2+8+x1+x4+16+x2+x4+ 4+x3·x4+16x4^2+10*X1*x5+20+x2+x5+30+x3·x5+40+x4+x5+25*x5^2 2+x1+x6+24+x2+x6+36+x3+x6+48+x4+x6+60tx5+x6+36+x62+14+x1+x7+ 28*x2+x7+42+x3+x7+56*x4+x7+70*x5*x7+84*x6*x7+49+x7^2+16*x1+xB+ 工程大学数 32+x2+x8+48+x3+x8+64+x4+x8+80*x5+x8+96+x6+x8+112tx7x8+64x8^2 18+x1+x9+36+x2+x9+54+x3+x9+72+x4+x9+90+x5+x9+108+x6+x9+126+x7+x9+ 144x8·x9+81x9^2 3+x3+4+x4==1;5*x5+6+x6+7x7>=2;8+x8+9+x9>=3 Solution Report-LINGO 4 vars= er va Nonlinear rows 1 Nonlinear vars= 9 Constraint none 7 Density. 47. 3,b3=MINs1ng⊥ Loca1。 pima1s。1 ution found at step 36.00000 数学建模电子教案 Variable Value Reduced Cost 0,000o0o 12.00000 X2 24.00D 0.333060哇 0.2047170E-03 0.1124654E-05 0,3299642 0.5804265E-01 0.7246945E-06 0,3748948 0.9351717E一0 0.1642293E-05 slack or surplus -12.0000o 0.0oo0o0 最后得到最小值36 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 最后得到最小值36
在 LINGO中,输入限制条件时,如果限制条件很多, 那么如果某个限制条件出错, L INGO给出的错误信息是 哈工程大学 个行号,告诉你某行出现错误,但如果你在限制条件前面加上 用方括号括起来的某个字符串,参见 LINGO目录下的SA MPLE\BOⅩ程序,那么此时限制条件出错, LINGO 给出的错误信息会一目了然,而且 LINGO最后给出的分析 结果你也会看得清清楚楚,不过这个字符串应该符合变量的定 数义规则,建议你用这种方法输入限制条件。通过以上介绍,就 学完全可以计算了,下面我们介绍LNGO的语法 建◆算术运算符:+,-,,,^,用括号括起来的式子优先级最高 模◆逻辑运算符:#NOT#,#EQ并,扑NE#,#GT#,#GE共,#T共#E# 电#AND共,#OR这与 FORTRAN一致主要用 子在:@MIN@ MAX, @SUM@FOR中 教◆关系运算符:=,>请注意,LNGO中没有严格的>或 案如果你真要用到的话比如A<B,请将它转化为Ae<B,其中e是 个近似于零的数 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 在LINGO中,输入限制条件时,如果限制条件很多, 那么如果某个限制条件出错,LINGO给出的错误信息是一 个行号,告诉你某行出现错误,但如果你在限制条件前面加上 用方括号括起来的某个字符串,参见LINGO目录下的SA MPLE\BOX程序,那么此时限制条件出错,LINGO 给出的错误信息会一目了然,而且LINGO最后给出的分析 结果你也会看得清清楚楚,不过这个字符串应该符合变量的定 义规则,建议你用这种方法输入限制条件。通过以上介绍, 就 完全可以计算了, 下面我们介绍LINGO的语法. ◆算术运算符: +, -, *, /, ^, 用括号括起来的式子优先级最高. ◆逻辑运算符: #NOT#, #EQ#, #NE#, #GT#, #GE#, #LT#, #LE#, #AND#, #OR#.这与FORTRAN一致, 主要用 在:@MIN,@MAX,@SUM,@FOR中. ◆关系运算符: =, =. 请注意,LINGO中没有严格的>或<, 如果你真要用到的话,比如A<B, 请将它转化为A+e<B, 其中e是 一个近似于零的数
◆数学函数:aABS(X),aCOS(X),aEXP(X), FLOOR(X)(返 哈 回X的整数部分,若X>0,它返回小于X的最大整数,若X LINGO'S OPERATORS AND FUNCTIONS--->PROBABILITY 学 FUNCTIONS 建◆变量域函数:如果不用下面的函数明确修改变量的取值范 模围,LNGO认为每个变量都是非负实数你可用下面的命令修改 电LNGO的默认值@BN(var)限制变量VR为一个二进制数,即 子VR取值为0或,@BND(A,arB限制变量VR在区间AB内, 教@ FREE(var))取消变量VAR是非负数的限制即它可以是负数, 案aGIN(vn)限制变量VR为一个整数 上页下页退出
哈 工 程 大 学 数 学 建 模 电 子 教 案 上页 下页 退出 ◆数学函数: @ABS(X), @COS(X), @EXP(X), @FLOOR(X)(返 回X的整数部分,若X>0,它返回小于X的最大整数,若XLINGO’S OPERATORS AND FUNCTIONS--->PROBABILITY FUNCTIONS. ◆变量域函数: 如果不用下面的函数明确修改变量的取值范 围,LINGO认为每个变量都是非负实数, 你可用下面的命令修改 LINGO的默认值. @BIN(var)限制变量VAR为一个二进制数,即 VAR取值为0或1, @BND(A,var,B)限制变量VAR在区间[A,B]内, @FREE(var)取消变量VAR是非负数的限制,即它可以是负数, @GIN(var)限制变量VAR为一个整数