《詹飞Lingo软件在数学建模中应用.pptx》由会员分享,可在线阅读,更多相关《詹飞Lingo软件在数学建模中应用.pptx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、引例:某人有楼房一幢,室内面积共计180平方米,拟分成两类房间作为旅游客房。大房间每间18平方米,可住游客5名,每名游客每天住宿费40元,小房间每间15平方米,可住游客3名,每名游客每天住宿费50元:装修大房间每间1000元,小房间每间600元。如果他只能筹款8000元用于装修,且游客能住满客房,他隔出大房间和小房间各多少间,能获得最大收益?第1页/共42页解:设大房间x间,小房间y间,每天收益z其中x,y自然数18x+15y180;1000 x+600y8000;z=200 x+150y;根据高中所学的知识,此时应该根据所列方程画图求解。第2页/共42页第3页/共42页由图知当取直线18x+
2、15y=180与1000 x+600y=8000交点时z最大联立两式得x=2072.85y=6078.57试点(2,8),(2,9),(3,8),(3,9)取点(3,8)最大【点(3,9)超出阴影部分】z最大为1800。所以大房间3间,小房间8间。第4页/共42页练习:北京20082008奥运期间,由清华大学480480名学生组成的北京20082008奥运志愿者队伍要前往国家体育场(“鸟巢”)进行志愿活动。清华大学后勤集团有7 7辆小巴、4 4辆大巴,其中小巴能载1616人、大巴能载3232人前往过程中,每辆客车最多往返次数小巴为5 5次、大巴为3 3次,每次运输成本小巴为4848元,大巴为6
3、060元请问应派出小巴、大巴各多少辆,能使总费用最少?第5页/共42页Lingo软件在数学建模中的应用Lingo软件介绍基本操作基本函数Lingo软件在数学建模中的应用基本应用集的操作与应用相关函数的应用第6页/共42页Lingo软件介绍这套软件包由美国芝加哥大学的Linus Scharge教授于1980年前后开发,专门用于求解最优化问题,后经不断完善和扩充,并成立LINDO公司进行商业化运作,取得了巨大的成功。全球财富杂志500强的企业中,一半以上使用该公司产品,其中前25强企业中有23家使用该产品。该软件包功能强大,版本也很多,而我们 使用的只是演示版(试用版),演示版与正式版功能基本上是
4、 类似的,只是能够求解问题的规模受到限制,总变量数不超过30个,这在我们目前的使用过程中,基本上是足够。第7页/共42页Lingo软件介绍Lingo是英文LinearInteractiveandGeneralOptimizer字首的缩写,即“交互式的线性和通用优化求解器”,它可以用来求解线性规划(LP)和二次规划(QP),还可以用来求解非线性规划。Lingo最大特色在于可以允许决策变量是整数,而且执行速度很快;Lingo实际上还是一种建模语言,即使对优化方面的专业知识了解不多的同学,也能方便的进行输入、求解,并能快速的得到复杂优化问题的高质量的解。第8页/共42页Lingo软件介绍Lingo软
5、件求解的优化模型类型见下图:优化模型连续模型整数模型线性规划二次规划非线性规划第9页/共42页Lingo软件的基本操作双击快捷方式即可计入程序编辑界面第10页/共42页解决一个简单的线性规划(LP)问题Lingo软件介绍第11页/共42页Lingo软件介绍第12页/共42页点击图标 运行,屏幕上显示运行状态窗口如下:对于Lingo运行状态窗口,我们给于以下解释:u变量数目:变量总数(Total)、非线型变量数(Nonlinear)、整数变量数(Integer)u约束变量:约束总数(Total)、非线性约束个数(Nonlinear)u非线性系数数量:总数(Total)、非线性项的系数个数(Non
6、linear)u内存使用量:单位为千字节u求解花费时间:显示格式“时:分:秒:”第13页/共42页Lingo软件介绍关闭求解状态窗口,得到结果如下:第14页/共42页第15页/共42页Lingo软件介绍Lingo中变量不区分大小写,变量名可以超过8个,不能超过32个,需以字母开头;用Lingo解优化模型时已假定所有变量非负(除非用限定变量范围的函数free或bnd另行说明);Lingo模型语句由一系列语句组成,每一个语句都必须以“;”结尾;Lingo中以“!”开始的是说明语句,说明语句也以“;”结束。关于Lingo的基本用法的几点注意事项:第16页/共42页Lingo软件介绍ABS(X):绝对
7、值函数,返回X的绝对值;EXP(X):指数函数(以自然对数e为底),返回eX的值;LOG(X):自然对数函数,返回X的自然对数值;POW(X,Y):指数函数,返回XY的值;SQR(X):平方函数,返回X的值;SQRT(X):平方根函数,返回X的平方根;FLOOR(X):取整函数,返回X的整数部分(向靠近0的方向取);三角函数:COS(X),SIN(X),TAN(X);在Lingo中建立的优化模型可以引用大量的内部函数这些函数都以符号打头,其用法比较简单,我们一一列出:基本数学函数第17页/共42页Lingo软件介绍变量定界函数对变量的取值范围附加限制,共有以下四种:变量定界函数BND(L,X,
8、U):限制L =X =U.BIN(X):限制X为0或1。FREE(X):取消对X的符号限制(即可取负数,0或正数).GIN(X):限制X为整数.第18页/共42页0-1规划(线性规划)背包问题一个旅行者的背包最多只能装6kg物品,现有4种物品的重量和价值分别为2kg,3kg,3kg,4kg;1元,1.2元,0.9元,1.1元。问应怎样携带那些物品使得携带物品的价值最大?第19页/共42页建模:记为旅行者携带第件物品的件数,取值只能为0或1。求目标函数在约束条件下的最大值.第20页/共42页模板:用Lingo 软件求解0-1规划Model:Max=x1+1.2*x2+0.9*x3+1.1*x4;
9、2*x1+3*x2+3*x3+4*x4=6;bin(x1);bin(x2);bin(x3);bin(x4);End太多“bin”,咋办?第21页/共42页LINGO中的集什么是集?集的定义格式Lingo中的集合分类第22页/共42页什么是集集是一群相联系的对象,这些对象也称为集的成员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。第23页/共42页模型的集部分 格式:sets:setname/member_list/:attribute_list;endsets注意:用“”表示该部分内容可选。第24页/共42页集合的定义Setname:集名字必须严格符合标准命名规则:以字
10、母或下划线(_)为首字符,其后由拉丁字母(AZ)、下划线、阿拉伯数字(0,1,9)组成的总长度不超过32个字符的字符串,且不区分大小写。注意:该命名规则同样适用于集成员名和属性名等的命名。第25页/共42页Member_list是集成员列表。显式罗列隐式罗列第26页/共42页 当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,允许混合使用。例:可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age:sets:students/JohnJill,RoseMike/:sex,age;endsets第27页/共42页
11、当隐式罗列成员时,不必罗列出每个集成员。可采用如下语法:setname/member1.memberN/:attribute_list;这里的member1是集的第一个成员名,memberN是集的最末一个成员名。LINGO将自动产生中间的所有成员名。LINGO也接受一些特定的首成员名和末成员名,用于创建一些特殊的集。第28页/共42页隐式罗列隐式成员列表格式 示例 所产生集成员 1.n1.5 1,2,3,4,5StringM.StringNCar2.car14Car2,Car3,Car4,Car14DayM.DayNMon.Fri Mon,Tue,Wed,Thu,FriMonthM.Month
12、NOct.JanOct,Nov,Dec,JanMonthYearM.MonthYearNOct2001.Jan2002Oct2001,Nov2001,Dec2001,Jan2002第29页/共42页隐式罗列模板setname/member1.memberN/:attribute_list;Sets:jihe/1.4/:a,b;endsets第30页/共42页 集成员不放在集定义中,而在随后的数据部分来定义。!集部分;sets:students:sex,age;endsets!数据部分;data:students,sex,age=John116Jill014Rose017Mike113;endd
13、ata第31页/共42页定义派生集格式:setname(parent_set_list)/member_list/:attribute_list;setname是集的名字。parent_set_list是已定义的集的列表,多个时必须用逗号隔开。第32页/共42页派生集模板sets:product/AB/;machine/MN/;week/1.2/;allowed(product,machine,week):x;endsets第33页/共42页LINGO生成了三个父集的所有组合共八组作为allowed集的成员。列表如下:编号成员1x(A,M,1)2x(A,M,2)3x(A,N,1)4x(A,N,
14、2)5x(B,M,1)6x(B,M,2)7x(B,N,1)8x(B,N,2)第34页/共42页基本函数for该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入每个约束,不过for函数允许只输入一个约束,然后LINGO自动产生每个集成员的约束。例 产生序列1,4,9,16,25model:sets:number/1.5/:x;endsetsfor(number(I):x(I)=I2);end第35页/共42页sum该函数返回遍历指定的集成员的一个表达式的和。例 求向量5,1,3,4,6,10前5个数的和。model:data:N=6;enddatasets:number/1.N/:x;
15、endsetsdata:x=5134610;enddatas=sum(number(I)|I#le#5:x);end第36页/共42页min和max返回指定的集成员的一个表达式的最小值或最大值。例4.3求向量5,1,3,4,6,10前5个数的最小值,后3个数的最大值。model:data:N=6;enddatasets:number/1.N/:x;endsetsdata:x=5134610;enddataminv=min(number(I)|I#le#5:x);maxv=max(number(I)|I#ge#N-2:x);End模板:用Lingo软件求解0-1规划第37页/共42页模板Mode
16、l:sets:goods/1,2,3,4/:weight,value;endsetsdata:weight=2,3,3,4;value=1,1.2,0.9,1.1;enddatamax=sum(goods:weight*value);for(goods:bin(x);end数据多,咋办?第38页/共42页游泳四名同学的混合泳接力赛的四种成绩如左表所示,确定如何分配使成绩最佳。蛙泳蝶泳自由泳仰泳甲99605973乙79659387丙67936381丁56798676第39页/共42页解题模板model:sets:jihe/1.4/;chengji(jihe,jihe):ren,zishi;endsetsdata:zishi=99 60 59 7379 65 93 87 67 93 63 8156 79 86 76;enddatamin=sum(chengji:ren*zishi);for(jihe(i):sum(jihe(j):ren(i,j)=1;sum(jihe(j):ren(j,i)=1);!0,1guihua;end第40页/共42页第41页/共42页感谢您的观看!第42页/共42页