【精品】LINGO软件灵敏度分析

合集下载

Lingo与线性规划

Lingo与线性规划

Lingo 与线性规划线性规划的标准形式是Minz c 1 x 1 c n x na 11x1a 1n xnb 1 s..ta m1 x1a mnxn(1)b mx i 0, i 1,2,, n其中 z c 1 x 1 c n x n 称为目标函数, 自变量 x i 称为决策变量 ,不等式组 (1)称为约束条件 .满足不等式组 (1)的所有 ( x 1, , x n ) 的集合称为可行域,在可行域里面使得z取最小值的 ( x 1* , , x n * ) 称为最优解,最优解对应的函数值称为最优值。

求解优化模型的主要软件有 Lingo 、Matlab 、Excel 等。

其中 Lingo 是一款专业求解优化模型的软件, 有其他软件不可替代的方便功能。

本文将简要介绍其在线性规划领域的应用。

一、基本规定1、目标函数输入格式max=函数解析式; 或者 min=函数解析式;2、约束条件输入格式利用: >、<、>=、<=等符号。

但是 >与 >=没有区别。

Lingo 软件默认所以自变量都大于等于 0.3、运算 加 (+), 减(-), 乘(*), 除(/), 乘方 (x^a) ,要注意乘号 (*) 不能省略。

4、变量名不区分大小写字母,不超过 32 个字符,必须以字母开头。

5、标点符号每个语句以分号“;”结束,感叹号“!”开始的是说明语句(说明语句也需要以分号“ ; ”结束)。

但是,model ,sets ,data 以“:”结尾。

endsets ,enddata , end 尾部不加任何符号。

6、命令不考虑先后次序7、MODEL 语句一般程序必须先输入 MODEL :表示开始输入模型,以“ END ”结束。

对简单的模型,这两个语句也可以省略。

8、改变变量的取值范围 @bin(变量名 ) ;@bnd(a, 变量名 ,b ) ;@free( 变量名 ) ; @gin(变量名 ) ;例 1 求目标函数 z 2x 1限制该变量为 0 或 1.限制该变量介于 a,b 之间 .允许该变量为负数 .限制该变量为整数 .3x 2 的最小值,约束条件为s..t x1x2350x11002x12x2600x1 , x20输入 Lingo 程序:min = 2*x1 + 3*x2;x1 + x2 >= 350;x1 >= 100;2*x1 + x2 <= 600;有两种运行方式:1、点击工具条上的按钮即可。

案例lingo分析

案例lingo分析

Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 50.00000 10.00000 6.666667 3 480.0000 53.33333 80.00000 4 100.0000 INFINITY 40.00000 “资源”的影子价格的进一步分析: 影子价格的作用(即在最优解下“资源”增加1个单位时“效 益”的增量)是有限制的。每增加1桶牛奶利润增长48元(影子价 格),但上面输出CURRENT RHS的ALLOWABLE INCREASE、ALLOWABLE DECREASE中,给出了影子价格有意义条件下约束右端的限制范围: milk原料最多增加10(桶牛奶),time劳动时间最多增加53(小时 )。 现回答附加问题1)第2问: 虽然应该批准用35元买1桶牛奶的投资,但每天最多购买10桶 牛奶。同理,可以用低于每小时2元的工资聘用临时工人以增加劳 动时间价格概念回答附加问题: 1)用35元可以买到1桶牛奶,低于1桶牛奶的影子价格48,当然 应该作这项投资。 2)聘用临时工人以增加劳动时间,付给的工资低于劳动时间影 子价格才可增加利润,所以工资最多是每小时2元。
Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease X1 72.00000 24.00000 8.000000 X2 64.00000 8.000000 16.00000
案例
根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每 公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正 式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤 A1,乙车间的加工能力没有限制。 试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下 3个附加问题: 1)若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最 多购买多少桶牛奶? 2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最 多是每小时几元? 3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生 产计划?

Lingo教案

Lingo教案

第Ⅱ部分运筹学实验§1 LINGO快速入门一、LINDO/LINGO软件简介LINDO和LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件,这源于芝加哥大学的Linus Schrage教授于1980年前后开发的一套专门用于求解最优化问题的软件包.LINDO用于求解线性规划和二次规划.目前LINGO除了具有LINDO的全部功能外,还可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解以及代数方程求根等.LINDO和LINGO软件的最大特色是可以求解决策变量为整数的优化问题,而且执行速度很快. LINGO实际上是一种最优化问题的建模语言,简单易学、包括许多常用的函数可调用,并提供与其它数据文件的接口,易于输入、求解和分析大规模最优化问题. 由于这些特点,LINDO和LINGO软件在教学、科研、工业、商业和服务等领域得到广泛应用.本章着重在Microsoft Windows系统下,介绍lingo9.0在运筹学中的使用和课本中相关问题求解的LINGO实现.二、LINGO软件的安装LINGO软件的安装非常简单,在Windows系统下双击运行安装光盘(或其它源)中的安装程序setup.exe,接受安装协议,选择安装目录,选择默认的LINGO 语法(recommended),最后完成(finish)安装.安装完成后,第一次运行LINGO软件,这时提示要输入密码,输入正版的密码输入,即可以使用LINGO软件;当然可以选择测试/试用(demo)版本,这时求解变量不能超过300个.运行成功后得到如下窗口:图1.1图1.1中:File(文件)、Edit(编辑)、LINGO、Window(窗口)和Help为下拉菜单项,下面一行为菜单项中的一些快捷工具按钮.主窗口LINGO Model为输入模型的窗口,在没有命名保存(save)模型时,LINGO自动命名为LINGO1,LINGO2等.点击help菜单的About LINGO 可以获得版本的相关信息,如约束(constrain)、变量(variable)、整数变量(integer variable)、非线性变量(nonlinear variable)的限定个数,可用内存(generator memory)使用等.§2求解规划问题一、LINGO 求解LP 问题下面就用简单的例子来说明LINGO 中线性规划问题的求解. 例2.1求如下线性规划问题:2132min x x z +=⎪⎪⎩⎪⎪⎨⎧≥≤+≥≥+0,600210035026..2121121x x x x x x x t s 在LINGO 模型窗口中图2.1输入:图2.1学习要点:(1) 输入max ,min 后LINGO 就会识别优化类型;数学运算符“乘号,除号,乘方”分别输入“*,/,^”; 关系运算符“≥,≤”分别输入“>=,<=” 来表示; 每行命令结束用“;”来表示.(2)算术运算符按优先级从高到低排序为:-(负号);^;*,/;+,-(减号) (3)关系运算符按优先级从高到低排序为:<,=,>. 输入完毕后,点击求解按钮(或依次点击菜单LINGO/Solve ,或按Ctrl+S),求解状态窗口(LINGO Solve Status )被激活,如图2.2:图2.2此窗口显示:当前的求解状态,包括模型的类型(Model ),解的状态类型(State ),目标值(objective )等,如果模型由于陷入循环等一时无法得到解,可以点击中断求解按钮(Interrupt Solver ).学习要点:(1)LINGO 默认所有变量非负.(2)LINGO 关于求解的种类一般有如下几种(在asibility 处显示):0 全局最优(Global Optimum ) 1 不可行(Infeasible ) 2 无界(Unbounded )3 不确定(Undetermined )4 可行(Feasible )5 可行或者无界(Infeasible or Unbounded )6 局部最优(Local Optimum )7 局部不可行(Locally Infeasible ) 8 目标函数的截断值被达到(Cutoff ) 9 算术运算错误而停止(Numeric Error )当关闭(Close )求解状态窗口时,求解报告窗口(Solution Report )被激活,如图2.3:图2.3求解报告显示:求解所需的迭代次数(iteration )(线性规划默认单纯形法);变量的值(value );及变量变化一个单位时,目标值发生的变化量(Reduced Cost );以及松弛或剩余变量(Slack or Surplus ,按模型输入行的顺序显示)的值和对偶价格(Dual Price ).二、LINGO 求解ILP 问题例2.2 求如下整数规划问题:2123max x x z +=⎪⎩⎪⎨⎧≥≤+≤+且为整数0,14325.45.0..212121x x x x x x t s 在LINGO 模型窗口中按如图2.4输入:图2.4点击求解按钮,就会得到:求解状态窗口显示为纯整数规划(PILP ),全局最优解得到.求解报告窗口显示最优解为x1=4,x2=1,最优值为14. 学习要点:(1)“!”后面可添加为注释语句(注释以英文标识下“;” 结束); “title ” 命令可以添加文档的标题和注释,在解的报告里会显示; LINGO 只有在“!”和“title ” 命令后才可以使用中文字符. (2)LINGO 不区分大小写;(3)LINGO 模型的目标、约束和约束之间的顺序可以颠倒; (4)变量界定函数:@gin(x) :限制x 为整数. @bin(x) : 限制x 为0或1; @bnd(L,x,U) : 限制L ≤ x ≤ U ;@free(x) : 取消对变量x 的默认下界为0的限制,即x 可以为任意 实数;其中符号“@”表示调用函数;三、LINGO 求解非线性规划(NLP)问题例2.3 求如下非线性规划问题:322312119210max x x x x x z -+-+= ⎩⎨⎧≥≤+0,5..2121x x x x t s在模型窗口中输入:max=10*x1+2*x1^2-*x1^3+9*x2-x2^3;x1+x2<=5;运行结果为:x1=2.61,x2=1.73,z=32.33.§3 灵敏度分析对模型的目标函数的系数,约束右端项进行灵敏度分析,首先要激活灵敏度分析.依次点击菜单LINGO|Option|General Solver Tab ,在Dual Computations 列表框中,选择Prices and Ranges 选项.当求解模型时,也作出了灵敏度分析,可以点击菜单LINGO 中的Range (Ctrl+R )来查看.例2.4 对例1.1的线性规划模型,按照上述步骤作灵敏度分析,打开灵敏度分析报告(Range Report )显示如图3.1:图3.1灵敏度分析报告中显示,当前模型中的目标系数(Current Coefficient),约束右端项( Current RHS), 对应参数在其它条件不变的情况下,可允许的增加量和减少量(Allowable Increase, Allowable Decrease),INFINITY 表示无穷.本例显示在其它参数不变的情况下,参数在下列变化范围内,最优基保持不变:目标函数中1x 的系数为2,其允许变化范围为)0,()22,(-∞=--∞,2x 的系数为3,其允许变化范围为)0,()33,(-∞=--∞;第一个约束右端项为350,其允许变化范围为)600,()250350,(-∞=+-∞,第二个右端项为100,其可变化范围为)300,3333.58()200100,6667.41100(=+-,第三个右端项600,其可变化范围为),200(),400600(+∞=+∞-.§4 LINGO中集合的定义与操作当模型的变量、数据较多时,按照前面按照模型逐个输入的办法,就显得力不从心了.LINGO是一种建模语言,使用LINGO语言可以通过输入简单的文字而代替大规模变量和约束,处理大型问题就得心应手.理解LINGO语言,最重要的是理解集合(sets)和属性(atrribute)的概念.下面我们从简单例子出发来说明这些问题.一、定义一个基本集(原始集)基本集的格式为:集合名/成员1,成员2,…/:属性1,属性2,…;例 4.1 产生表示价格的向量x=[35 26 45 78 69 66]:在模型窗口中输入如图4.1:图4.1运行得到:Variable ValueX(1) 35.00000X(2) 26.00000X(3) 45.00000X(4) 78.00000X(5) 69.00000X(6) 66.00000例 4.2 定义一个名为产品的的基本集(可记为products),包括三种产品A,B和C(即它具有成员A,B和C),现在想研究它们对应的单位价格120、100和80以及对应的质量等级1、2和3(即属性可以记为price, quality)在模型窗口中输入如图4.2:图4.2运行结果为:Variable ValuePRICE(A) 120.0000PRICE(B) 100.0000 PRICE(C) 80.00000 QUALITY(A) 1.000000 QUALITY(B) 2.000000 QUALITY(C) 3.000000学习要点:(1)定义一个基本集:集合名/集合的成员/:属性,属性,…,属性; (2)集合要夹在sets 和endsets 之间;(3)连续可编号的n 个成员可以使用1..n 或用带字母的编号表示如w1..wn 来输入,也可以直接以逗号间隔,将n 个成员输入为w1,…,wn ;(4)数据部分要夹在data 和enddata 之间; (5)成员可以当作数据输入.二、定义一个派生集派生集的基本格式:派生集名(基本集1,基本集2,…):属性1,属性2,…;例4.3 导入矩阵⎥⎦⎤⎢⎣⎡=645241A . 在模型窗口中输入如图4.3:图4.3运行结果为:Variable Value A(1,1) 1.000000 A(1,2) 2.000000 A(1,3) 4.000000 A(2,1) 4.000000 A(2,2) 5.000000 A(2,3) 6.000000例4.4 产生矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=314022221221B ,其中“-”表示对应位置没有数据. 在模型窗口中输入如图4.4:图4.4运行结果为:Variable ValueB(1,1) 21.00000B(1,3) 40.00000B(2,1) 12.00000B(2,2) 22.00000B(3,2) 22.00000B(3,3) 31.00000例4.5 在模型窗口中输入:sets:product/1..2/;quality/1..2/;cost/1..2/;links(product,quality,cost):x;endsets运行后会发现:派生集合links产生八个成员:(1,1,1), (1,1,2),(1,2,1),(1,2,2) ,(2,1,1),(2,1,2),(2,2,1),(2,2,2).学习要点:(1)派生集的基本格式为:派生集名(基本集1,基本集2):属性1,属性2,…,属性n;利用派生集可以产生多维数组,它是基本集合成员的所有可能组合;(2)对于派生集,可以定义其具体的成员,其格式与基本集的格式类似:派生集名(基本集1,基本集2)/成员/:属性1,属性2,…,属性n;(3)在例4.4中只取了派生集links中的一些元素,也称为稀疏集.三、集循环函数集循环函数是指对集合的元素进行循环操作的函数,其格式为:@函数名(集合(指标)|过滤条件:表达式)函数有for,max,min,prod,sum五种,分别表示对集合满足过滤条件的每一元素:独立生成表达式,求最大元素,求最小元素,计算乘积,求和.下面以简单例子来介绍@for和@sum函数的使用:1、@for例4.6 产生序列{4 9 16 25 36 49}.在模型窗口中输入:model:sets:number/1..7/:x;endsets@for(number(i)|i#ge#2:x(i)=i^2);end运行结果为:X(2) 4.000000X(3) 9.000000X(4) 16.00000X(5) 25.00000X(6) 36.00000X(7) 49.000002)@sum 求和例4.7 对数列1 2 5 4 6求和.在模型窗口中输入:model:sets:number/1..5/:x;endsetsS=@sum(number(I):x(I));data:x=1 2 5 4 6 ;enddataend运行结果为:Variable ValueS 18.00000X(1) 1.000000X(2) 2.000000X(3) 5.000000X(4) 4.000000X(5) 6.000000学习要点:(1)一个模型可写在model和end之间,这是为了表示一个完整的模型,不至于与模型窗口中的其它模型混淆;(2)集合中使用符号“|”表示其后为过滤条件,只有集合中满足条件的指标才执行其后的表达式;(3)如使用循环函数时,其中number(i) 表示集合number中的第i个元素,循环函数就会遍历number中满足条件的每个元素,执行其后所有表达式;(4)“ge”为逻辑符号,表示“大于等于”,逻辑运算符使用时要夹在“#”之间;所有逻辑运算符按优先级顺序由高到低排序为:not(非);eq(等于),ne(不等于),gt(大于),lt(小于);ge(大于等于),le(小于等于);and(与),or(或).§5 求解运输问题学习了LINGO的集合操作之后,运输问题就可以编写成简单的LINGO程序来求解.例5.1计算有5个产地A1—A5,8个销地B1-B8的运输问题的最优调运方案.分析:六个产地的总产量和为160,8个销售地的销量和为264,故产销不平衡,销大于产.定义集合workshop为有六个成员的产地,shop为有八个成员的销地,a为产量,b为销量,c为单位运价,x为待求调运量,编写程序如图5.1:图5.1运行部分结果为:Objective value: 272.0000X(W1,V1) 0.000000X(W1,V2) 0.000000X(W1,V3) 8.000000X(W1,V4) 0.000000X(W1,V5) 12.00000. . . . . . . .X(W5,V5) 0.000000X(W5,V6) 0.000000X(W5,V7) 0.000000X(W5,V8) 0.000000学习要点:(1)当销大于产时,对任意的销地j,从各个产地调往j的调运量之和不大于b(j),即有需求约束中为小于等于号;若产大于销,则产量约束中为小于等于号;(2)目标函数可以进一步简化为:min=@sum(links: c*x)不影响结果.§6求解网络问题一、最短路问题例6.1 用LINGO 求解图论中§6.3中例6.3.1所示的图6.3.1中从始点1到终点8的最短路问题的求解.分析:图中有8个顶点,需求出从结点1到结点8的最短路;设决策变量⎩⎨⎧=其它,的最短路上到于结点)(当081位,弧,1j i x ij 可把最短问题转化成一个规划问题,∑∈=Ej i ijijxw z ),(min⎪⎪⎩⎪⎪⎨⎧∈≥⎪⎩⎪⎨⎧-=-∑∑∈=∈=E j i x i ,i ,i ,x x ijEi j j ji Ej i j ij ),(,008111s.t.8),(18),(1为中间点为终点为始点 其中ij w 为弧),(j i 上的权(即结点i 与结点j 之间的距离) 在模型窗口中编写程序如图6.1:图6.1运行后部分结果为:Objective value: 12.00000Variable ValueX(1,6) 1.000000 X(5,8) 1.000000 X(6,7) 1.000000 X(7,5) 1.000000这表明路线85761→→→→为从始点1到终点8的最短路,长度为12.学习要点:(1)对无向图要把始点出发的弧和到达终点的弧当作单向弧,其余的等价为双向弧;(2)终点约束与其余约束线性相关可以省略;二、最大流问题例6.2下面介绍运用LINGO 求解§6.4中例6.4.1中图6.4.1所示的从始点s 到终点t 的最大流问题的求解.分析:根据最大流问题的要求和平衡条件,用flow 表示可行流量,可以把它转化成一个规划问题,flow max⎪⎪⎩⎪⎪⎨⎧∈≤≤⎪⎩⎪⎨⎧-=-∑∑∈∈∈∈Aj i c f i ,ti flow ,s i flow ,f f ij ij Ai j V i ji Aj i V j ij ),(,00s.t.),(),(为中间点为终点为始点 在模型窗口中编写程序如图6.2:图6.2运行得到一种最大流方案为:FLOW 22.00000F(S,4) 8.000000 F(2,3) 4.000000F(2,5) 10.00000 F(3,T) 4.000000 F(4,5) 8.000000 F(5,3) 0.000000 F(5,T) 18.00000三、最小费用最大流问题例6.3用LINGO 求解书中§6.5中图6.5.1所示的从始点s 到终点t 的最小费用最大流问题的求解.分析:根据最大流问题的要求和平衡条件,用F 表最大流量,可以把它转化成一个规划问题,∑∈Aj i ij ijf b),(min⎪⎪⎩⎪⎪⎨⎧∈≤≤⎪⎩⎪⎨⎧-=-∑∑∈∈∈∈Aj i c f i ,ti F ,s i F ,f f ij ij Ai j V i ji A j i V j ij ),(,00s.t.),(),(为中间点为终点为始点 根据最大流的求法可求得此网络的最大流量Q=15,编写程序如图6.3:图6.3运行得到一种最小费用最大流方案为:Objective value: 69.00000 F(S,2) 8.000000 F(S,3) 7.000000 F(2,3) 0.000000F(3,4) 7.000000F(4,2) 1.000000F(4,T) 6.000000这与增广链和最短路标号法求得的结果一致.§7 LINGO中外部数据文件的调用一、LINGO中调用文本文件数据调用文本数据函数@file(‘filename’)用于将文本文件中的数据调入LINGO 模型中,可以写相对和绝对路径,文件中的每组数据之间用符号“~”间隔,LINGO 将按照此函数在模型中出现的顺序依次读取每组数据.下面以简例说明之.例7.1 对x=[2 5 8]求和,对y=[3 6 1 4]取其最小元.按如图7.1在模型窗口中编写程序:图7.1其中data1.txt文件与此模型放在同一目录下,内容编写如图7.2:图7.2运行结果可得:S 15.00000,P 1.000000二、LINGO中调用excel数据电子表格数据调用函数@ole(‘filename’)用于将excel表中的数据导入LINGO,文件路径设置与@file函数一致,例7.2 对例7.1,可编程如图7.3:图7.3其中data2.xls文件与模型放在同一目录,编辑如图7.4:图7.4其中要定义单元格A3:A5为集合的名称price,B3:B5定义为x,C3:C6定义为y.定义单元格名称的方法是:选定要定义的单元格,依次打开菜单插入|名称|定义,输入想要定义的名称即可.学习要点:(1)@file和@ole函数可以在模型的集合段,数据段和开始段使用,其他段落不能使用.(2)@ole函数的完整格式为:@ole(‘filename.xls’,[rangelist]),其中rangelist为包含数据的单元范围(与excel表格中的记法一致)(3)这两个函数在集合段可以直接采用@file(‘filename’)和@ole(‘filename’)的形式,而在数据段要采用x=@file(‘filename’)或@ole(‘filename’)格式.。

灵敏度分析,计算软件

灵敏度分析,计算软件

2011年9月
山东大学 软件学院
14
计算软件
CPLEX Lindo / Lingo Matlab
2011年9月
山东大学 软件学院
15
启动CPLEX
1. 在命令行输入cplex,出现CPLEX提示符“CPLEX>”,进 入CPLEX状态。
2011年9月
山东大学 软件学院
16
输入问题实例
2. 输入enter命令,输入要优化的问题实例。
1 bs B( b B1b B1b B1 b b b bs s ) 。
2011年9月
山东大学 软件学院
10
改变右端向量b
如果 b 0 ,则原最优解还是可行解;并且,检验数向 量没有发生变化,仍然 0,因此原最优解仍是最优解。 否则当前解是新问题的一个基本解(但不可行) ,且单 纯形表上蕴含着对偶问题的一个可行解(因为检验数向量 0) 。因此可利用对偶单纯形算法继续求解新问题。
2011年9月 山东大学 软件学院 13
例2.6.2
得到新问题的单纯形表为:
x1 z x3 x1 0 0 1 x2 1/2 1/2 2 x3 0 1 0 x4 11/4 1/4 1/2 x5 9/4 1/4 3/2 13/4 3/4 5/2
由于右端向量不 0,因此下面可用对偶单纯形算法继 续求得新问题的最优解。
由于检验数向量 0, 当前解 xT = (1/2, 0, 1/4, 0, 0)仍是新问 题的最优解。
2011年9月
山东大学 软件学院
8
例2.6.1(2)
(2)变量 x3 的系数由 21 变为 5。 解:由于 x3 为基变量,将最优单纯形表 x3 对应的第 1 行乘

Lingo基本用法总结

Lingo基本用法总结

Lingo基本用法总结(除集函数部分)LINGO是用来求解线性和非线性优化问题的简易工具。

Lingo免费版可以支持30个未知数,lingo破解版可以支持几万个未知数、几万个约束条件。

当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。

下面举两个例子。

例1.1 如何在LINGO中求解如下的LP问题:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮即可。

得到如下结果:所以当x1为250,x2为100时目标函数得到最大值。

算术运算符Lingo 中变量不区分大小写,以字母开头不超过32个字符算术运算符是针对数值进行操作的。

LINGO 提供了5种二元运算符: ^ 乘方 ﹡ 乘 / 除 ﹢ 加 ﹣ 减 LINGO 唯一的一元算术运算符是取反函数“﹣”。

这些运算符的优先级由高到底为:高 ﹣(取反) ^ ﹡/ 低 ﹢﹣运算符的运算次序为从左到右按优先级高低来执行。

运算的次序可以用圆括号“()”来改变。

例:在x1+x2>=350,x1>=100,2*x1+x2<=600的条件下求2*x1+3*x2的最小值 在代码窗口中编写 min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后单击上面菜单lingo 菜单下solve 键即可。

数学函数标准数学函数:@abs(x) 返回x 的绝对值@sin(x) 返回x 的正弦值,x 采用弧度制 @cos(x) 返回x 的余弦值 @tan(x) 返回x 的正切值 @exp(x) 返回常数e 的x 次方 @log(x) 返回x 的自然对数@lgm(x) 返回x 的gamma 函数的自然对数 @sign(x) 如果x<0返回-1;否则,返回1@floor(x) 返回x 的整数部分。

LINDO与LINGO软件介绍

LINDO与LINGO软件介绍
15
查看模型的统计信息, 用Reports/statistics查看模型的统计信息, 查看模型的统计信息
第一行:模型有 行 约束4行),2个变量 个变量, 个整数变量 个整数变量( 个 变量 变量), 第一行:模型有5行(约束 行), 个变量,0个整数变量(0个0-1变量), 不是二次规划. 不是二次规划 第二行:非零系数10个 约束中非零系数6个 其中 个为1或 , 其中5个为 第二行:非零系数 个,约束中非零系数 个(其中 个为 或-1),模型密度 密度=非零系数 行数* 变量数+ 为0.667(密度 非零系数 行数*(变量数+1)]) . 密度 非零系数/[行数 变量数 第三行的意思:按绝对值看,系数最小、最大分别为1和 第三行的意思:按绝对值看,系数最小、最大分别为 和8. 第四行的意思:模型目标为极大化;小于等于、等于、 第四行的意思:模型目标为极大化;小于等于、等于、大于等于约束分别有 广义上界约束(GUBS)不超过 个;变量上界约束 不超过2个 变量上界约束(VUBS)不 2、0、2个;广义上界约束 不超过 不 少于0 所谓GUBS,是指一组不含有相同变量的约束;所谓 少于0个。所谓 ,是指一组不含有相同变量的约束;所谓VUBS,是 , 指一个蕴涵变量上界的约束,如从约束X1+X2-X3=0可以看出,若X3=0,则 可以看出, 指一个蕴涵变量上界的约束,如从约束 可以看出 , X1=0,X2=0(因为有非负限制),因此 ),因此 是一个VUBS约束。 约束。 , (因为有非负限制),因此X1+X2-X3=0是一个 是一个 约束 第五行的意思:只含1个变量的约束个数=0 冗余的列数=0 第五行的意思:只含1个变量的约束个数 0个;冗余的列数 0个

版本信息,可以通过 查询.我们还 版本信息,可以通过help/about查询 我们还 查询 可以查到允许的变量个数、约束个数、 可以查到允许的变量个数、约束个数、整数 变量个数、非零系数个数等. 变量个数、非零系数个数等

线性规划问题的Lingo求解

线性规划问题的Lingo求解

Lingo中参数设置与调整
01
参数设置
02
调整策略
Lingo允许用户设置求解器的参数, 如求解方法、迭代次数、收敛精度等 。这些参数可以通过`@option`进行 设置。
如果求解过程中遇到问题,如无解、 解不唯一等,可以通过调整参数或修 改模型来尝试解决。常见的调整策略 包括放松约束条件、改变目标函数权 重等。
02
比较不同方案
03
验证求解结果
如果存在多个可行解,需要对不 同方案进行比较,选择最优方案。
可以通过将求解结果代入原问题 进行验证,确保求解结果的正确 性和合理性。
感谢您的观看
THANKS
问题,后面跟随线性表达式。
02 03
约束条件表示
约束条件使用`subject to`或简写为`s.t.`来引入,后面列出所有约束条 件,每个约束条件以线性表达式和关系运算符(如`<=`, `>=`, `=`, `<`, `>`)表示。
非负约束
默认情况下,Lingo中的变量是非负的,如果变量可以为负,需要使用 `@free`进行声明。
问题的解通常出现在约束条件的边界上 。
变量通常是连续的。
特点 目标函数和约束条件都是线性的。
线性规划问题应用场景
生产计划
确定各种产品的最优生产量, 以最大化利润或最小化成本。
资源分配
在有限资源下,如何最优地分 配给不同的项目或任务。
运输问题
如何最低成本地将物品从一个 地点运输到另一个地点。
金融投资
03
求解结果
通过Lingo求解,得到使得总加工时间最短的生产计划安 排。
运输问题优化案例
问题描述
某物流公司需要将一批货物从A地运往B地,可以选择不同的运输方式和路径,每种方式和路径的运输时间和成本不 同。公司需要在满足货物送达时间要求的前提下,选择最优的运输方式和路径,使得总成本最低。

Lingo solution report中各项的含义

Lingo solution report中各项的含义

即以此功德,庄严佛净土。

上报四重恩,下救三道苦。

惟愿见闻者,悉发菩提心。

在世富贵全,往生极乐国。

(一)优化模型的组成优化模型包括以下3部分:l Objective Function:目标函数是一个能准确表达所要优化问题的公式。

l Variables:Decision variables(决策变量),在模型中所使用的变量。

l Constraints:约束条件。

(二)Lingo软件使用的注意事项(1)LINGO中不区分大小写字母,变量(和行名)可以使用不超过32个字符表示,且必须以字母开头。

(2)在命令方式下(Command Window中),必须先输入MODEL:表示开始输入模型。

LINGO中模型以“MODEL:”开始,以“END”结束。

对简单的模型,这两个语句也可以省略。

(3)LINGO中的语句的顺序是不重要的,因为LINGO总是根据“MAX=”或“MIN=”语句寻找目标函数,而其它语句都是约束条件(当然注释语句和TITLE除外)。

(4)LINGO模型是由一系列语句组成,每个语句以分号“;”结束。

(5)LINGO中以感叹号“!”开始的是说明语句(说明语句也需要以分号“;”结束)。

(6)LINGO中解优化模型时假定所有变量非负(除非用限定变量取值范围的函数@free或@sub或slb另行说明)。

(7)当您要判断表达式输入是否有错误时,也可以使用菜单“Lingo“的”Picture“选项。

(8) 用命令"@BND(下界, 变量名, 上界)"设置变量的上界和下界(9) 用命令"@free(x1)"取消变量x1的非负限制,x1可以取正实数和负实数(10)一般整数变量可以用"@GIN(变量名)"来标识,0-1型变量可以用"@BIN(变量名)"来标识(三)Solution Report各项的含义例1 将以下模型粘贴到Lingo中求解,其中第一行MODEL和最后一行END在Lingo Model 窗口下可以不要。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【精品】LINGO软件灵敏度分析
LINGO是一种非常实用的数学建模软件,可用于线性规划、非线性规划、整数规划、
混合整数规划、二次规划、非线性二次规划、全局优化、动态规划等方面。

在LINGO中,
灵敏度分析可以帮助用户更好地理解线性规划问题的解,并探究约束、变量、最优值等因
素的变化对于优化结果的影响。

下面将详细介绍LINGO软件的灵敏度分析功能。

一、约束灵敏度分析
在LINGO中,可以通过在“呼出”窗口中选择“求解”菜单,再选中“灵敏度分析”,来进行约束灵敏度分析。

当我们需要对某一约束条件进行灵敏度分析时,可以在“PSens”一栏中选中要进行分析的约束条件,并选择需要分析的灵敏度类型:
1. 左侧界(Lower Bound)灵敏度分析:在该约束条件的左侧界上下浮动,观察最优
解随着左侧界的变化而产生的变化情况。

进行变量灵敏度分析时,LINGO会输出一个名为“Variable Sensitivity”的窗口,
其中包含了与所选中变量相关的数据,如灵敏度系数、上/下限边界、最小可行解等。

另外,该窗口还提供了一个“Graph”选项卡,可以展示出灵敏度分析的图表,帮助用户更
直观地理解灵敏度的变化情况。

在LINGO中,最优解灵敏度分析可以探究最优解随着目标函数系数的变化而产生的变
化情况。

用户可以在“呼出”窗口中选择“求解”菜单,再选中“灵敏度分析”,然后在“Objective Sensitivity”选项卡中选中需要进行分析的目标函数变量。

总之,LINGO软件的灵敏度分析功能可以在优化过程中帮助用户更好地了解问题的解,探究约束、变量、目标函数系数等因素对应问题的影响,帮助用户优化模型,从而达到更
好的优化效果。

相关文档
最新文档