欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Lingo软件编程求解规划问题-数学建模.ppt

    • 资源ID:5437886       资源大小:3.25MB        全文页数:65页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Lingo软件编程求解规划问题-数学建模.ppt

    用Lingo软件编程求解规划问题,什么是规划问题?,求目标函数在约束条件下的最大值或最小值的问题,统称为规划问题。决策变量、约束条件、目标函数是线性规划的三要素.主要解决最优生产计划、最优分配、最优设计、最优决策、最佳管理等最优化问题。,线性规划非线性规划实数规划整数规划0-1规划,例1加工奶制品的生产计划,50桶牛奶,时间480小时,至多加工100公斤A1,每天:,一奶制品加工厂用牛奶生产 A1,A2两种奶制品,1 桶牛奶可以在甲车间用12 小时加工成 3 公斤 A1,或者在乙车间用 8 小时加工成 4 公斤 A2。根据市场需求,生产的 A1,A2全部能售出,且每公斤 A1获利 24 元,每公斤 A2获利 16 元。现在加工厂每天能得到 50 桶牛奶的供应,每天正式工人总的劳动时间 480 小时,并且甲车间每天至多能加工 100 公斤 A1,乙车间的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大.,并进一步讨论以下3个附加问题:1)若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶?2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?,例1加工奶制品的生产计划,50桶牛奶,时间480小时,至多加工100公斤A1,每天:,x1桶牛奶生产A1,x2桶牛奶生产A2,获利 243x1,获利 164 x2,原料供应,劳动时间,加工能力,决策变量,目标函数,每天获利,约束条件,非负约束,线性规划模型(LP),例1加工奶制品的生产计划,求 的最大值?,求 的最大值?,用Lingo软件求解,Lingo结果中其它项的意思!更多信息,例1加工奶制品的生产计划,max=sin(x)*2*exp(-x);x0;,Lingo软件,LINGO Help:LINGO is a simple tool for utilizing the power of linear and nonlinear optimization to formulate large problems concisely,solve them,and analyze the solution.Optimization helps you find the answer that yields the best result;attains the highest profit,output,or happiness;or the one that achieves the lowest cost,waste,or discomfort.Often these problems involve making the most efficient use of your resourcesincluding money,time,machinery,staff,inventory,and more.,Lingo 是一个可以简洁地阐述、解决和分析复杂问题的简便工具。其特点是程序执行速度很快,易于输入、修改、求解和分析一个数学规划问题。,lingo软件擅长于解决运筹问题,即最有问题,常见的是线性规划。而matlab则功能比较多,主要是以矩阵为基础的运算,也能解决运筹问题。matlab 的功能更强大一些,也比较难学,东西多lingo主要用于优化问题,matlab功能强大,几乎什么都能做,但是碰到循环时速度较慢,而且对机器要求较高,lingo主要用以解线性规划,方程之类,使用比matlab简单,解决线性问题速度也不错,有些东西不能做。不过现在国外有将2者结合的。matlab都能解,就是麻烦点LINGO是使建立和求解线性、非线性和整数最佳化模型更快更简单更有效率的综合工具。LINGO提供强大的语言和快速的求解引擎来阐述和求解最佳化模型。,原则上还是lingo要快,特别是变量较多的时候,但是这里面不能比较非线性规划,因为非线性规划的求解速度不仅取决于问题的规模,还要看非线性程度以及初始.简单的模型表示LINGO可以将线性、非线性和整数问题迅速得予以公式表示,并且容易阅读、了解和修改。方便的数据输入和输出选择LINGO建立的模型可以直接从数据库或工作表获取资料。同样地,LINGO可以将求解结果直接输出到数据库或工作表。强大的求解引擎LINGO内建的求解引擎有线性、非线性(convex and nonconvex)、二次、二次限制和整数最佳化。Model Interactively or Create Turn-key ApplicationsLINGO提供完全互动的环境供您建立、求解和分析模型。LINGO也提供DLL和OLE界面可供使用者由撰写的程序中呼叫。,0 Global Optimum(全局最优)1 Infeasible(不可行)2 Unbounded(无界)3 Undetermined(不确定)4 Feasible(可行)5 Infeasible or Unbounded(通常需要关闭“预处理”选项后重新求解模型,以确定模型究竟是不可行还是无界)6 Local Optimum(局部最优)7 Locally Infeasible(局部不可行,尽管可行解可能存在,但是LINGO并没有找到一个)8 Cutoff(目标函数的截断值被达到)9 Numeric Error(求解器因在某约束中遇到无定义的算术运算而停止),LP:线性规划 linear programming QP 二次规划 NLPNONLINEAR PROGRAMMINGILP 线性整数 IQP 二次整数PILP 线性纯整数PIQP 二次纯整数NLP 非线性 NLPNONLINEAR PROGRAMMINGINLP 整数非线性PINLP 纯整数非线性,例2军队供给问题,军队有某种先进武器302台分别放在6个补给站(depot)中,现由于战争需要,8个军团(corps)分别需要此种武器数目如表中所示,并且给出了从各补给站送一台武器到任一军团的费用,问如何运输可使成本最小?,number(i,j)n(i,j),例2军队供给问题,例2军队供给问题,用Lingo软件求解,结果,Lingo软件,集合段(SETS ENDSETS)目标与约束段 数据段(DATA ENDDATA)初始段(INIT ENDINIT),LINGO模型的构成:4个段,Lingo 是一个可以简洁地阐述、解决和分析复杂问题的简便工具。其特点是程序执行速度很快,易于输入、修改、求解和分析一个数学规划问题。,Lingo软件集合,概念 集是相联系的对象的集合,比如工厂、消费者群体、交通工具和雇工等等;集是 LINGO 建模语言的基础,是程序设计最强有力的基本构件目标与约束段;借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型;集有成员和属性。,集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。,Lingo软件基本集合元素的列举,setname/member_list/:attribute_list;,sets:students/John Jill,Rose Mike/:sex,age;endsets,一个原始集是由一些最基本的对象组成的。,集、集成员和集属性,集成员无论用何种字符标记,它的索引都是从1开始连续计数。在attribute_ list可以指定一个或多个集成员的属性,属性之间必须用逗号隔开。,定义一个原始集,用下面的语法:setname/member_list/:attribute_list;注意:用“”表示该部分内容可选。下同,不再赘述。Setname是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(AZ)、下划线、阿拉伯数字(0,1,9)组成的总长度不超过32个字符的字符串,且不区分大小写。注意:该命名规则同样适用于集成员名和属性名等的命名。,Member_list是集成员列表。采取显式罗列和隐式罗列两种方式。,Lingo软件基本集合元素的隐式列举,集成员不放在集定义中,而在随后的数据部分来定义。,sets:students:sex,age;endsets data:students,sex,age=John 1 16 Jill 0 14 Rose 0 17 Mike 1 13;enddata,注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行。,Lingo软件派生集,setname(parent_set_list)/member_list/:attribute_list;,一个派生集是用一个或多个其它集来定义的。也就是说,它的成员来自于其它已存在的集。,稠密集:派生集成员由父集成员所有组合构成;稀疏集:其成员为父集成员所有组合构成的集合的一个子集。,显式:links(depot,corps)/d1 c2,d2 c3,d3 c6,d4 c3,d5 c1,d6 c8/:cost,number;过滤:links(depot,corps)|capacity(,派生集的成员列表有两种方式生成:显式罗列;设置成员资格过滤器。,sets:product/A B/;machine/M N/;week/1.2/;allowed(product,machine,week):x;endsetsLINGO生成了三个父集的所有组合共八组作为allowed集的成员。列表如下:编号 成员1(A,M,1)2(A,M,2)3(A,N,1)4(A,N,2)5(B,M,1)6(B,M,2)7(B,N,1)8(B,N,2),例sets:!学生集:性别属性sex,1表示男性,0表示女性;年龄属性age.;students/John,Jill,Rose,Mike/:sex,age;!男学生和女学生的联系集:友好程度属性friend,0,1之间的数。;linkmf(students,students)|sex(enddata用竖线(|)来标记一个成员资格过滤器的开始。#eq#是逻辑运算符,用来判断是否“相等”,可参考4.&1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有成员;&2可看作派生集的第2 个原始父集的索引,它取遍该原始父集的所有成员;&3,&4,以此类推。,集合 派生集合 基本集合 稀疏集合 稠密集合 元素列表法 元素过滤法 直接列举法 隐式列举法,Lingo软件集合,setname/member_list/:attribute_list;,setname(parent_set_list)/member_list/:attribute_list;,Lingo软件数据段与初始段,数据段:输入集成员和数据,提供了模型相对静止部分和数据分离的可能性。object_list=value_list;对象列数值列;,初始段:为决策变量设置初始值。,在初始部分输入的值仅被 LINGO 求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值。以“init:”开始,以“endinit”结束。初始部分的初始声明规则和数据部分的数据声明规则相同。,sets:set1/A,B,C/:X,Y;endsetsdata:X,Y=1 4 2 5 3 6;enddata,data:X=1,2,3;Y=4,5,6;enddata,和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值。,例init:X,Y=0,.1;endinitY=log(X);X2+Y2=1;,三类运算符:算术运算符 逻辑运算符 关系运算符,Lingo软件运算符与优先级,#not#否定该操作数的逻辑值,not是一个一元运算符#eq#若两个运算数相等,则为true;否则为flase#ne#若两个运算符不相等,则为true;否则为flase#gt#若左边的运算符严格大于右边的运算符,则为true;否则为flase#ge#若左边的运算符大于或等于右边的运算符,则为true;否则为flase#lt#若左边的运算符严格小于右边的运算符,则为true;否则为flase#le#若左边的运算符小于或等于右边的运算符,则为true;否则为flase#and#仅当两个参数都为true时,结果为true;否则为flase#or#仅当两个参数都为false时,结果为false;否则为true,Lingo软件函数,数学函数,Lingo软件函数,变量定界函数,min和max返回指定的集成员的一个表达式的最小值或最大值。,qrand(seed)产生服从(0,1)区间的拟随机数。qrand只允许在模型的数据部分使用,它将用拟随机数填满集属性。通常,声明一个mn的二维表,m表示运行实验的次数,n表示每次实验所需的随机数的个数。在行内,随机数是独立分布的;在行间,随机数是非常均匀的。这些随机数是用“分层取样”的方法产生的。例4.5 model:data:M=4;N=2;seed=1234567;enddatasets:rows/1.M/;cols/1.N/;table(rows,cols):x;endsetsdata:X=qrand(seed);enddataend如果没有为函数指定种子,那么LINGO将用系统时间构造种子。,data:N=6;enddatasets:number/1.N/:x;endsetsdata:x=5 1 3 4 6 10;enddata minv=min(number(I)|I#le#5:x);end,输入和输出函数,1file函数 该函数用从外部文件中输入数据,可以放在模型中任何地方。该函数的语法格式为file(filename)。这里filename是文件名,可以采用相对路径和绝对路径两种表示方式。,例 以例1.2来讲解file函数的用法。注意到在例1.2的编码中有两处涉及到数据。第一个地方是集部分的6个warehouses集成员和8个vendors集成员;第二个地方是数据部分的capacity,demand和cost数据。为了使数据和我们的模型完全分开,我们把它们移到外部的文本文件中。修改模型代码以便于用file函数把数据从文本文件中拖到模型中来。修改后(修改处代码黑体加粗)的模型代码如下:model:!6发点8收点运输问题;sets:warehouses/file(1_2.txt)/:capacity;vendors/file(1_2.txt)/:demand;links(warehouses,vendors):cost,volume;endsets!目标函数;min=sum(links:cost*volume);!需求约束;for(vendors(J):sum(warehouses(I):volume(I,J)=demand(J);!产量约束;for(warehouses(I):sum(vendors(J):volume(I,J)=capacity(I);!这里是数据;data:capacity=file(1_2.txt);demand=file(1_2.txt);cost=file(1_2.txt);enddataend,模型的所有数据来自于1_2.txt文件。其内容如下:!warehouses成员;WH1 WH2 WH3 WH4 WH5 WH6!vendors成员;V1 V2 V3 V4 V5 V6 V7 V8!产量;60 55 51 43 41 52!销量;35 37 22 32 41 32 43 38!单位运输费用矩阵;6 2 6 7 4 2 5 94 9 5 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3,把记录结束标记()之间的数据文件部分称为记录。如果数据文件中没有记录结束标记,那么整个文件被看作单个记录。,2 text函数该函数被用在数据部分用来把解输出至文本文件中。它可以输出集成员和集属性值。其语法为text(filename)这里filename是文件名,可以采用相对路径和绝对路径两种表示方式。如果忽略filename,那么数据就被输出到标准输出设备(大多数情形都是屏幕)。text函数仅能出现在模型数据部分的一条语句的左边,右边是集名(用来输出该集的所有成员名)或集属性名(用来输出该集属性的值)。我们把用接口函数产生输出的数据声明称为输出操作。输出操作仅当求解器求解完模型后才执行,执行次序取决于其在模型中出现的先后。,例 借用例4.12,说明text的用法。model:sets:days/mon.sun/:required,start;endsetsdata:!每天所需的最少职员数;required=20 16 13 16 19 14 12;text(d:out.txt)=days 至少需要的职员数为 start;enddata!最小化每周所需职员数;min=sum(days:start);for(days(J):sum(days(I)|I#le#5:start(wrap(J+I+2,7)=required(J);end,例 Lingo与Excel的连接,3、ole函数 是从 EXCEL 中引入或输出数据的接口函数,它是基于传输的 OLE 技术。OLE传输直接在内存中传输数据,并不借助于中间文件。,例3Lingo与Excel的连接,OLE 可以同时读集成员和集属性(读写),OLE 只能读一维或二维的 Ranges,绝对路径 ole(data.xls);相对路径 ole(D:data.xls);,例题,求 的最大值?,用Lingo软件求解,Lingo结果中其它项的意思!更多信息,例1加工奶制品的生产计划,Global optimal solution found at iteration:3 Objective value:280.0000 Variable Value Reduced Cost DESKS 2.000000 0.000000 TABLES 0.000000 5.000000 CHAIRS 8.000000 0.000000 Row Slack or Surplus Dual Price 1 280.0000 1.000000 2 24.00000 0.000000 3 0.000000 10.00000 4 0.000000 10.00000 5 5.000000 0.000000,“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。其中基变量的reduced cost值应为0,对于非基变量 Xj,相应的 reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量(max型问题)。本例中:变量tables对应的reduced cost值为5,表示当非基变量tables的值从0变为 1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值=280-5=275。,“Value”给出最优解中各变量的值:造2个书桌(desks),0个餐桌(tables),8个椅子(chairs)。所以desks、chairs是基变量(非0),tables是非基变量(0)。,灵敏度的分析,灵敏度分析的结果是Ranges in which the basis is unchanged:Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease DESKS 60.00000 20.00000 4.000000 TABLES 30.00000 5.000000 INFINITY CHAIRS 20.00000 2.500000 5.000000 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 48.00000 INFINITY 24.00000 3 20.00000 4.000000 4.000000 4 8.000000 2.000000 1.333333 5 5.000000 INFINITY 5.000000,(56,80),(,35),48-24,48+=24,,文件菜单(File Menu)1 新建(New)从文件菜单中选用“新建”命令、单击“新建”按钮或直接按F2键可以创建一个新的“Model”窗口。在这个新的“Model”窗口中能够输入所要求解的模型。2 打开(Open)从文件菜单中选用“打开”命令、单击“打开”按钮或直接按F3键可以打开一个已经存在的文本文件。这个文件可能是一个Model文件。3 保存(Save)从文件菜单中选用“保存”命令、单击“保存”按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。4 另存为(Save As)从文件菜单中选用“另存为”命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在“另存为”对话框中输入的文件名。利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。5 关闭(Close)在文件菜单中选用“关闭”(Close)命令或按F6键将关闭当前活动窗口。如果这个窗口是新建窗口或已经改变了当前文件的内容,LINGO系统将会提示是否想要保存改变后的内容。6 打印(Print)在文件菜单中选用“打印”(Print)命令、单击“打印”按钮或直接按F7键可以将当前活动窗口中的内容发送到打印机。7 打印设置(Print Setup)在文件菜单中选用“打印设置”命令或直接按F8键可以将文件输出到指定的打印机。8 打印预览(Print Preview)在文件菜单中选用“打印预览”命令或直接按Shift+F8键可以进行打印预览。12退出(Exit)从文件菜单中选用“Exit”命令或直接按F10键可以退出LINGO系统。,

    注意事项

    本文(Lingo软件编程求解规划问题-数学建模.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开