收藏 分享(赏)

LINGO在数学建模中的应用.doc

上传人:精品资料 文档编号:11029786 上传时间:2020-02-01 格式:DOC 页数:20 大小:448.50KB
下载 相关 举报
LINGO在数学建模中的应用.doc_第1页
第1页 / 共20页
LINGO在数学建模中的应用.doc_第2页
第2页 / 共20页
LINGO在数学建模中的应用.doc_第3页
第3页 / 共20页
LINGO在数学建模中的应用.doc_第4页
第4页 / 共20页
LINGO在数学建模中的应用.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、1一、LINGO 简介LINGO 是美国 LINDO 系统公司开发的求解数学规划系列软件中你的一个,1它的主要功能是求解大型线性、非线性和整数规划问题,LINGO 的不同版本对模型的变量总数、非线性变量数目、整型变量数目和约束条件的数量做出不同的限制.LINGO 的主要功能特色为:(1)既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强. (4)内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为 LINGO 模型;(6)能方便地与 EXCEL、

2、数据库等其他软件交换数据.LINGO 像其他软件一样 ,对他的语法有规定,LINGO 的语法规定如下:(1) 求目标函数的最大值或最小值分别用 MAX=或 MIN=来表示;(2) 每个语句必须以字母开头,由字母、数字和下划线所组成,昌都不超过 32 个字符,不区分大小写;(3)每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行;(4)如果对变量的取值范围没有特殊说明,则默认所有决策变量都非负;(5)LINGO 模型以语句 “MODEL”开头,以语句“END ”结束,对于比较简单的模型,这这两个语句可以省略.LINGO 提供了五十几个内部函数,使用这些函数可以大大减少编程工作量,这些

3、函数都是以字符开头 ,下面简单介绍其中的集合操作函数和变量定界函数及用法.2集合是 LINGO 建模语言中最重要的概念,使用集合操作函数能够实现强大的功能,LINGO 提供的常用集合操作函数有FOR(s:e) 、SUM(s:e) 、MAX(s:e)、MIN(s:e)等.FOR(s:e)常用在约束条件中,表示对集合 s 中的每个成员都生成一个约束条件表达式,表达式的具体形式由参数 e 描述 ;SUM(s:e) 表示对集合 s 中的每个成员,分别得到表达式 e 的值,然后返回所有这些值的和;MAX(s:e) 表示对集合 s 中的每个成员,分别得到表达式 e 的值,然后返回所有这些值中的最大值;MI

4、N(s:e) 表示对集合 s 中的每个成员,分别得到表达式 e 的值,然后返回所有这些值中的最小值.LINGO 默认变量的取值可以从零到正无穷大,变量定界函数可以改变默认状态,如对整数规划,限定变量取整数,对 0-1 规划, 限定变量取 0 1 或.LINGO 提供的变量定界函数有:BIN(X)、BND(L,X,U)、GIN(X) 、FREE(X).BIN(X) 限定X 为 0 或 1,在 0-1 规划中特别有用;GIN(X)限定 X 为整数,在整数规划中特别有用;BND(L,X,U)限定 LXU,可用作约束条件;FREE(X)取消对 X 的限定,即X 可以取任意实数.二、LINGO 在线性规

5、划中的应用具有下列三个特征的问题称为线性规划问题(Linear program ) 简称 LP 问题,其2数学模型称为线性规划(LP)模型.线性规划问题数学模型的一般形式为:求一组变量 的值,使其(1,)jxn满足 12max(in) ,nzcxc3212112*.0,. nj nnxaxaxbst 式中“*”代表“ ”、 “ ”或“=”.上述模型可简写为 1max(in),jzcx1*0,2,.ijjixnbmst 其中,变量 称为决策变量,函数 称为目标函数,条件 称为约jx1njzc 1*njicxb束条件, 称为非负约束.在经济问题中,又称 为价值系数, 为资源限量.0jj i线性规划

6、在科学决策与经营管理中实效明显 ,但是对于规模较大的线性模型,其3求解过程非常繁琐,不易得出结果.而 LINGO 中的内部集合函数有FOR(s:e)、SUM(s:e)、 MAX(s:e)、MIN(s:e)等,可以用这些集合函数使程序编程简单可行,下面举例说明.例 1 某工厂有两条生产线,分别用来生产 M 和 P 两种型号的产品,利润分别为200 元每个和 300 元每个,生产线的最大生产能力分别为每日 100 和 120,生产线没生产一个 M 产品需要 1 个劳动日(1 个工人工作 8 小时称为 1 个劳动日)进行调试、检测等工作,而每个 P 产品需要 2 个劳动日,该工厂每天共计能提供 16

7、0 个劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解 设两种产品的生产量分别为 和 ,则该问题的数学模型为:1x2目标函数 12ma03zx4约束条件 120,6,.ix编写 LINGO 程序如下:MODEL:SETS:SHC/1,2 /:A,B,C,X; YF/1,2,3 /:J;ENDSETSDATA:A=1,2 ; B=100,120; C=200,300; ENDDATAMAX=SUM(SHC:C*X);FOR(SHC(I):X(I)=1);SUM(SHC(I):X(I)=21;X(2)=BJ(J);ENDGlobal optimal soluti

8、on found.Objective value: 28.00000Extended solver steps: 0Total solver iterations: 6Variable Value Reduced CostX( 1) 1.000000 2.000000X( 2) 3.000000 1.000000X( 3) 2.000000 1.800000X( 4) 8.000000 1.200000X( 5) 1.000000 2.000000X( 6) 4.000000 1.200000X( 7) 2.000000 1.500000当 时,目标函数最小, .1234567,8,14,2x

9、xxxmin28z2 求解 0-1 规划在整数规划中,当对变量的限定为变量的值只能取整数值时,我们把整数规划称为 0-1 规划 ,0-1 规划化为以下标准形式:59,1maxnjzc10,2,.1,.jnijjjstxbimn 或任意 0-1 规划模型如何化为标准形式: (1)如果目标函数是求最小值,则对目标函数两边乘以-1,变为求最大值;(2)如果目标函数中某变量 的系数 ,则令 替换 为 0-1 变量,jx0jc1jjxyjx于是变量 在目标函数中的系数 变成小于 0;jyj(3)如果约束条件是“ ”形式,则可两边乘以-1,变为“ ”形式;(4)如果约束条件中含有等式,则可将每个等式化为两

10、个“ ”形式的不等式.LINGO 内部函数 BIN(X)的作用是限定 X 为 0 或 1,因此,LINGO 对整数规划的求解是可行的.下面举例说明:例 3 分配六个人去完成 6 项任务,每人完成一项,每项任务只能由一人去完成,六个人分别完成各项任务的效益如下表所示,试做出任务分配使效益最大.各人完成各项任务的效益 任务人员A B C D E F12345620 15 16 5 4 717 15 33 12 8 69 12 18 16 30 1312 8 11 27 19 14- 7 10 21 10 32- - - 6 11 13解 用 表示第 个人是否完成第 项任务,当(1,26,)ijxj

11、 ij10表示第 个人完成第 项任务, 第 个人不完成第 项任务,用 表示1ijxij0ijxjijc第 个人完成第 项任务的效率j模型建立如下: 61minijizcx61.ijijstx编写程序如下:MODEL:SETS:RENWU/1,2,3,4,5,6/; MEN/1,2,3,4,5,6/;WCHRW(MEN,RENWU):C,x;ENDSETSDATA:C=20,15,16,5,4,717,15,33,12,8,69,12,18,16,30,1312,8,11,27,19,140,7,10,21,10,320,0,0,6,11,13;ENDDATAMAX=SUM(WCHRW(I,J)

12、:C*X);FOR(WCHRW(I,J):BIN(X(I,J);FOR(MEN(I):SUM(RENWU(J):X(I,J)=1); FOR(RENWU(J):SUM(MEN(I):X(I,J)=1);11ENDGlobal optimal solution found.Objective value: 142.0000Objective bound: 142.0000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0当 , 时, 142.即第一个人完成第1x23,51,x4,561,x2max

13、z一项任务,第二个人完成第二项任务,第三个人完成第三项任务,第四个人完成第四项任务,第五个人完成第五项任务,第六个人完成第六项任务时,效率最高.四 LINGO 在多目标规划中的应用多目标规划的解法通常是根据问题的实际背景和特征,设法将多目标规划转化为单目标规划,从而获得满意解.常用的解法有 :6(1)主要目标法.确定一个主要目标,把次要目标作为约束条件并设定适当界限值. (2) 线性加权平均法.对每个目标按其重要程度赋予适当权重 ,且0i,然后把 作为新的目标函数(其中 ,是原来的 个1i)ifx()1,2ifxp目标) .(3)指数加权平均法.设 是原来的 个目标,令 ,其中 为指()ifx

14、p()ipaiZfxi数加权,把 Z 作为新的目标函数.(4)理想点法. 先分别求出 个单目标规划的最优解 ,令p*tf,然后把它作为新的目标函数.*2()()iihxfx12(5)分层序列法 .将所有 个目标按其重要程度排序,先找出第一个最重要的7p目标的最优解,然后在保证前一个目标最优解的前提下,依次求下一个目标的最优解,一直求到最后一个目标为止.这些方法各有其优点和适用的场合,但并非总是有效,有些方法存在一些不足之处,例如,线性加权求和法确定权重系数时有一定主观性,权重系数取值不同,结果也就不一样;线性加权求和法,指数加权乘积法和理想点法通常只能用在两个目标的单位( 量纲)相同的情况,

15、如投资时希望收益要大、风险要小,这是双目标规划,若收益和风险的物理单位(元或百分比)相同,可以考虑用线性加权求和法、指数加权乘积法或理想点法把它们组合起来,化双目标规划为点目标规划.如果两个目标是不同的物理量,它们的量纲不相同,数量级相差很大,将它们相加或比较是不合适的,如火箭弹射程的单位是米或千米,且数量级比较大,而射击精度通常用样本方差来表示,其量纲是平方米,且数量级小,将两者比较、相加或者求理想点是没有有意义的.下面介绍一个双目标规划的例子.例 4 某工厂有工人 300 名,生产 A,B,C,D 四种产品,要求每人每周工作时间在 20-48 小时内,C 的产量每周至少 150 件,而每周

16、至多 20 吨煤,其他数据见下表:产品 最大产量 销售量 成本 售价 能耗 生产时间(件/周) (件/周) (元/件) (元/件) (吨煤/百件) (时/件)A 270 300 190 200 1.5 13B 240 300 210 230 2 13.5C 460 600 148 160 1.8 14D 130 200 100 114 1.1 11.5问应如何安排每周生产,才能使利润最高,而能耗最少?解 用 表示四种产品的产量, 表示每件 产品的利润 , 表示每 100 件 产ixiaiibi品的能耗, 表示生产每件 产品的时间, 表示 种产品的最大产量.建立双目标iciid规划模型如下:13

17、41maxiizax41iniiyb414141340,12,. 0,1,234,5,.iiiiiiiiicxstbxNxdLINGO 程序如下:MODEL:SETS:YF/B1 B2 B3 B4 /:B,A,C,D,X;ENDSETSDATA:A=10 20 12 14; B=1.5 2 1.8 1.1;C=13 13.5 14 11.5; D=270 240 460 130;ENDDATAMAX=SUM(YF(I):A*X);FOR(YF(I):GIN(X(I); SUM(YF(I):B(I)*X(I)=150;FOR(YF(I):X(I)=12000;END具体求解结果为:Objecti

18、ve value: 14620.00Extended solver steps: 0Total solver iterations: 3Variable Value Reduced CostX( B1) 248.0000 -10.00000 X( B2) 240.0000 -20.00000X( B3) 460.0000 -12.00000X( B4) 130.0000 -14.00000即 A、B、C 、 D 四种产品各生产 248 件、240 件、460 件、130 件时,能使利润最高,最高利润为 14620 元.题目还要求能耗最少,因此用分层序列法,把利润最高的计算结果作为约束条件,即增

19、加约束条件: ,把 作为目41620iax41miniybx标函数,建立单目标规划模型求解.LINGO 程序如下:MODEL:SETS:YF/B1 B2 B3 B4 /:B,A,C,D,X;ENDSETSDATA:A=10 20 12 14; B=1.5 2 1.8 1.1;15C=13 13.5 14 11.5; D=270 240 460 130;ENDDATAMIN=SUM(YF(I):B(I)*X(I)/100);SUM(YF(I):A*X)=150;FOR(YF(I):X(I)=12000;END具体求解结果为:Objective value: 14.58900Extended so

20、lver steps: 0Total solver iterations: 5Variable Value Reduced CostX( B1) 270.0000 0.1500000E-01 X( B2) 42.00000 0.2000000E-01X( B3) 460.0000 0.1800000E-01X( B4) 129.0000 0.1100000E-01即每周生产 A、B、C 、D 四种产品各 270 件、42 件、460 件、129 件,能使利润最高,能耗最少.五 用 LINGO 求非线性曲线拟合的最小二乘解16设观测数据为 , ,希望用一条相对光滑的曲线()ixy)21n来近似表

21、示变量 y 与 x 的关系,不要求它通过每个数据点 (节点),但要求)(fy曲线与数据点之间的距离尽可能小,称 为拟合函数或经验公式 .设拟合函数)(f 8的表达式中含有若干待定常数 ,称为回归系数,用向量符号记为1,2iajm,则曲线方程记为 ,其具体形式可由散点图或通过建12(,)TmAa )(xAfy立数学模型来确定.设拟合函数形式已知为 ,其中 是待定常数(回归系f12(,)Tma数),求待定常数 A 的方法通常用最小二乘法,其算法原理是求出使均方误差取最小值的 A,其结果称为最小二乘解,于是问题转化为多元函21()NIQifxy数的最小值:.mnA21(),nIQifxy上式可以看成

22、是目标函数为非线性函数,没有约束条件的规划问题,适合用LINGO 求解 ,举例如下:例 5 2004 年全国大学生数学建模竞赛 C 题中给出体重约 70kg 的某人在短时间内喝下 2 瓶啤酒后,隔一定时间测量他的学业者酒精含量 ,得)/(102mlg到数据见下表,请建立饮酒后血液中酒精含量的数学模型.血液中酒精含量数据时间 t(小时)酒精含量 y0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 530 68 75 82 82 77 68 68 58 51 50 41时间 t(小时)酒精含量 y6 7 8 9 10 11 12 13 14 15 1638 35 28 2

23、5 18 15 12 10 7 7 417解 把人体内酒精的吸收、代谢、排除过程分成两个室,胃为第一室,血液为第二室,酒精先进入胃,然后被吸收进入血液,由循环到达体液内,在通过代谢、分解剂排泄、出汗、呼气等方式排泄.假设胃里的酒精被吸收进入血液的速度与胃里的酒精 成正比,比例常数)(tx为 ,血液中的酒精被排出的速度与血液内的酒量 成正比, 比例系数为 . 短1k y2k短时间内喝入胃里的酒精总量为 . 则可以建立如下微分方程模型:0G1 20,(),().xky这是线性常系数微分方程组,求解得到 2101()(),kttGyte如果统一用 表示待定常数,则上式可以写成123,a321().a

24、ttyte由已知数据求出使 最小的待定系数 ,程序如下:321nattiie123,aMODEL:SETS:SJD/123/:T,Y; ENDSETSDATA:T=0.25,0.5,0.75,1,1.5,2,2.5,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16;Y=30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4;18ENDDATAMIN=SUM(SJD(I):(A1*(EXP(-A2*T)-EXP(-A3*T)-Y)2);END运行结果如下:Local optimal s

25、olution found.Objective value: 225.3417Extended solver steps: 5Total solver iterations: 138Variable Value Reduced CostA1 114.4325 0.000000A2 0.1855020 0.5787570E-08A3 2.007938 0.000000程序中定义SJD是含有 23个成员的集合,T和Y 是SJD 的两个属性,分别表示时间t和血液中酒精浓度y,它们都是包含23个成员的以为数组 (向量).点击运行按钮,很快得到计算结果: =114.4325, =0.1855020, =

26、2.007938,目标函数值1a2a3a(即最优解)为225.3417.总结LINGO 软件作为一种解决许多规划问题的软件包 ,可以用 LINGO 软件模7型解决许多规划问题,方法简单易行,操作灵活,比较适用于规划理论的求解.通过用 LINGO 对上面各个模型的求解,可以看出,由于 LINGO 的内部函数限定变量取0 1 或.LINGO 提供的变量定界函数有:FOR(s:e)、SUM(s:e)、MAX(s:e)、MIN(s:e)BIN(X)、BND(L,X,U)、GIN(X)、 FREE(X).BIN(X)等,使得在编写程序时,可以避免使用 for,if 等循环语句,相对于用 C 语言求解,L

27、INGO 求解规划问题是十分方便的.19参考文献:1袁新生,邵大宏,郁时炼.LINGO 和 Excel 在数学建模中的应用M.北京:科学出版社,2007.2贾贞等.运筹学原理与实验教程M.武汉:华中师范大学出版社,2008.3田维.用 Matlab 与 Lindo 求解线性规划J.德宏师范高等专科学校学报 ,2006,8(1):106-111.4刁在筠,郑汉鼎,刘家壮,刘桂真.运筹学M.北京:高等教育出版社,2001.5徐玖平,胡知能.运筹学:数据模型决策M.北京:科学出版社,2009.6邓成梁等.运筹学的原理和方法M.武汉:华中理工大学出版社,1998,3.7许数柏.数学生态学模型与研究方法J.安康师专报,2002,12(2):4-8.8李磊.露天矿生产的车辆安排的模型和评述J.工程数学学报,2003,12(7):91-100.20致 谢本课题在选题及研究过程中得到数学科学学院吴庆丰老师的悉心指导,并为我提供相关资料,在此表示衷心的感谢!尤其是吴老师严谨的治学态度深深影响了我,使我获益良多.同时数学科学学院机房的硬件设施和学校图书馆电子资源,为本课题的研究工作提供了良好的条件.另外,本课题的部分工作还得益于同窗挚友的共同研讨,在此,对他们一并表示感谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报