LINGO在数学建模中的应用_第1页
LINGO在数学建模中的应用_第2页
LINGO在数学建模中的应用_第3页
LINGO在数学建模中的应用_第4页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、GO 提供了五十几个内部函数,使用这些函数可以大大减少编程工作量,这些函数都是以字符 开头 ,下面简单介绍其中的集合操作函数和变量定界函数及用法.集合是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

4、 中的每个成员 ,分别得到表达式e 的值 ,然后返回所有这些值中的最大值;MIN(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,可用作约束

5、条件 ;FREE(X)取消对 X 的限定 ,即 X 可以取任意实数 .专业资料 .二、LINGO 在线性规划中的应用具有下列三个特征的问题称为线性规划问题(Linear program) 2 简称 LP问题 ,其数学模型称为线性规划(LP)模型 .线性规划问题数学模型的一般形式为:求一组变量 x j ( j1,2, n) 的值 ,使其满足max(min)z c1 x1c2x2cn xn ,a11x1a12 x2a1n x1n * b1,a21 x1a22 x2a2 n x2n * b2 ,st.an1x1an2 x2ann xnn * bn .x j0, j 1,2, n式中 “*”代表 “

6、”、“ ”或“=”.上述模型可简写为nmax(min)zcj xj ,j1nst.aij xj * bi,i1,2, , mj1x j 0, j1,2, nnn其中 ,变量 xj 称为决策变量 ,函数 zcj xj称为目标函数 ,条件cj xj * bi 称为约j 1j 1束条件 , xj0 称为非负约束 在经济问题中,又称cj为价值系数 ,bi为资源限量.线性规划在科学决策与经营管理中实效明显3,但是对于规模较大的线性模型 ,其求解过程非常繁琐 ,不易得出结果 .而 LINGO中的内部集合函数有 FOR(s:e)、.专业资料 .SUM(s:e)、 MAX(s:e) 、MIN(s:e) 等,可

7、以用这些集合函数使程序编程简单可行,下面举例说明 .例 1 某工厂有两条生产线 ,分别用来生产 M 和 P 两种型号的产品 ,利润分别为200 元每个和 300 元每个 ,生产线的最大生产能力分别为每日100 和 120, 生产线没生产一个 M 产品需要 1 个劳动日 (1 个工人工作 8 小时称为 1 个劳动日 )进行调试 、检测等工作 ,而每个 P 产品需要 2 个劳动日 ,该工厂每天共计能提供160 个劳动日 ,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解设两种产品的生产量分别为x1 和 x2 ,则该问题的数学模型为:目标函数max z200 x1300x

8、2约束条件编写 LINGO 程序如下 :MODEL :SETS:SHC/1,2 /:A,B,C,X;YF/1,2,3 /:J;ENDSETSDATA:x1100,x2120,x1x2160,xi0,i1,2.A=1,2 ;B=100,120;C=200,300;ENDDATA.专业资料 .MAX = SUM (SHC:C*X);FOR(SHC(I):X(I)<B(I);SUM (SHC(I):A(I)*X(I)<=160;END程序运行结果如下Global optimal solution found.Objective value:29000.00Total solver ite

9、rations:0VariableValueReduced CostA( 1)1.0000000.000000A( 2)2.0000000.000000B( 1)100.00000.000000B( 2)120.00000.000000C( 1)200.00000.000000C( 2)300.00000.000000X( 1)100.00000.000000X( 2)30.000000.000000J( 1)0.0000000.000000J( 2)0.0000000.000000J( 3)0.0000000.000000.专业资料 .RowSlack or SurplusDual Pric

10、e129000.001.00000020.00000050.00000390.000000.00000040.000000150.0000最优解为 x1 100, x230,最优值为 z 29000.00.即每天生产 100个 M 产品 30 个P产品 ,可获得 29000 元利润 .三、LINGO 在整数规划和0-1 规划中的应用1 求解整数规划整数规划 4 分为整数规划和混合整数规划,要求全部变量都为非负整数的数学规划称为纯整数规划,只要求部分变量为非负整数的数学规划称为混合整数规划.下面只讨论约束条件和目标函数均为线性的整数规划问题,即整数线性规划问题(以下简称整数规划 ,记为 ILP)

11、,其数学模型的一般形式是nmaxminzc j x j,j 1nai j x jb ii 1, 2 , , nj1s.t .xj0j1, 2,n,1x j 全为整数或部分为整数。且称线性规划问题.专业资料 .nmaxminzcj xj ,j 1naij xjbii 1, 2 , m, ,s.t j 12xj0j1,2, , n .为整数规划问题的松弛问题.显然 ,整数规划 1的可行域是其松弛问题2 的可行域的一个子集.如果线性规划 2 的最优解为x0 相应的规划规划*,则必然有 cx*cx0.,1 的最优解为 xLINGO 的内部函数 GIN(X)是限定 X 为整数 ,因此 ,LINGO 对整

12、数规划的求解是可行的 .下面举例说明 :例 2某疗养院营养师要为某类病人拟订本周蔬菜类菜单,当前可供选择的蔬菜品种、价格和营养成分含量 ,以及病人所需养分的最低数量见表1,病人 1 周需 14份蔬菜 ,为了口味的原因 ,规定每周内的卷心菜不多于2 份,胡萝卜不多于3 份,其他蔬菜不多于 4 份且至少 1 份 .在满足要求的前提下 ,制定费用最少的一周菜单方案.表 1可供蔬菜养分含量和价格养分每份蔬菜所含养分数量每 份 价蔬菜磷维生素维生素烟酸锌格铁AC(元)A1青豆0.4520415220.30.22.1A2萝卜0.452850.350.251.04065.专业资料 .A3花菜0.654085

13、0430.60.31.8A4卷心菜0.42575270.20.121.2A5芹菜0.52676480.40.152.0A6土 豆0.57523580.60.211.2A7红柿0.645240200.20.251.5每周最低需求81804507419800解用 x i表示7 种蔬菜的份数 , ai 表示蔬菜单价 , bi 表示每周最低营养需求, cij 表示第 i 种蔬菜的第 j 种养分含量 ,建立如下整数规划模型7min zai xii 17cij xibji 1x42s.tx23,xi1,i1,3,5,6,7.xi1,i1,3,5,6,7.LINGO 程序如下 :MODEL:SETS:SHC

14、/1 2 3 4 5 6 7/:AI,X;YF/1 2 3 4 5 6/:BJ;JIAGE(SHC,YF):C;.专业资料 .ENDSETSDATA:AI=2 1 1.8 1.2 2.0 1.2 1.5;BJ=7 140 14800 400 7 4;C=0.45 20 415 22 0.3 0.20.45 28 4065 5 0.35 0.250.65 40 850 43 0.6 0.30.4 25 75 27 0.2 0.120.5 26 76 48 0.4 0.150.5 75 235 8 0.6 0.210.6 45 240 20 0.2 0.25;ENDDATAMIN = SUM (S

15、HC:AI*X);FOR(SHC(I):GIN(X(I);FOR(SHC(I):X(I)>=1);SUM (SHC(I):X(I)=21;X(2)<=3; X(3)<=2;FOR(SHC(I)|I#NE#2#AND#I#NE#4:X(I)<=4);FOR(YF(J):SUM(SHC(I):X(I)*C(I,J)>=BJ(J);ENDGlobal optimal solution found.专业资料 .Objective value:28.00000Extended solver steps:0Total solver iterations:6VariableVa

16、lueReduced CostX( 1)1.0000002.000000X( 2)3.0000001.000000X( 3)2.0000001.800000X( 4)8.0000001.200000X( 5)1.0000002.000000X( 6)4.0000001.200000X( 7)2.0000001.500000当 x1 1, x23, x3 2, x4 8, x51, x6 4, x7 2 时 ,目标函数最小 , zmin 28 .2 求解 0-1 规划在整数规划中 ,当对变量的限定为变量的值只能取整数值时,我们把整数规划称为 0-1 规划 5 ,0-1 规划化为以下标准形式 :n

17、max zcj x j ,j1cj0 j1,2, n ,nst.aij xjbji 1,2, m ,j 1x j 0或1 j 1,2, , n .专业资料 .任意 0-1 规划模型如何化为标准形式:(1)如果目标函数是求最小值,则对目标函数两边乘以 -1,变为求最大值 ;(2)如果目标函数中某变量x j 的系数 cj0 ,则令 xj1y j 替换 x j 为 0-1 变量 ,于是变量 y j 在目标函数中的系数cj 变成小于 0;(3)如果约束条件是 “ ”形式 ,则可两边乘以 -1,变为 “ ”形式 ;(4)如果约束条件中含有等式,则可将每个等式化为两个“ ”形式的不等式 .LINGO 内部

18、函数 BIN(X)的作用是限定 X 为 0 或 1,因此 ,LINGO 对整数规划的求解是可行的 .下面举例说明 :例 3分配六个人去完成6 项任务 ,每人完成一项 ,每项任务只能由一人去完成,六个人分别完成各项任务的效益如下表所示,试做出任务分配使效益最大.各人完成各项任务的效益任务ABCDEF人员1201516547217153312863912181630134128112719145-7102110326-61113.专业资料 .解 用 xij (i 1,2,6, j 1,2,6) 表示第 i 个人是否完成第 j 项任务 ,当 xij 1表示第 i 个人完成第 j项任务 , xij0

19、第 i 个人不完成第 j 项任务 ,用 cij 表示第 i 个人完成第 j 项任务的效率模型建立如下 :66min zcij xiji 1j16xij1i 1st.6xij1j1编写程序如下 :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,32.专业资料 .0,0,0,6,11,13;ENDDATAMAX = SUM (WCHRW(

20、I,J):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);ENDGlobal optimal solution found.Objective value:142.0000Objective bound:142.0000Infeasibilities:0.000000Extended solver steps:0Total solver iterations:0当 x11 1, x23 1, x35 1, x44 1, x56 1, x62

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

22、)ip ,是原来的 p 个fi x目标 ).p(3)指数加权平均法 .设 f i ( x) 是原来的 p 个目标 ,令 Z f i ( x) ai ,其中 ai 为指i数加权 ,把 Z 作为新的目标函数 .(4) 理 想 点 法 . 先 分 别 求 出 p 个 单 目 标 规 划 的 最 优 解 ft * , 令h( x)( fi (x)fi * )2 ,然后把它作为新的目标函数.(5)分层序列法 7 .将所有 p 个目标按其重要程度排序,先找出第一个最重要的目标的最优解 ,然后在保证前一个目标最优解的前提下,依次求下一个目标的最优解,一直求到最后一个目标为止.这些方法各有其优点和适用的场合,

23、但并非总是有效 ,有些方法存在一些不足之处 ,例如 ,线性加权求和法确定权重系数时有一定主观性,权重系数取值不同 ,结果也就不一样 ;线性加权求和法 ,指数加权乘积法和理想点法通常只能用在两个目标的单位 (量纲 )相同的情况 ,如投资时希望收益要大、风险要小 ,这是双目标规划 ,若收益和风险的物理单位(元或百分比 )相同 ,可以考虑用线性加权求和法、指数加权乘积法或理想点法把它们组合起来,化双目标规划为点目标规划.如果两个目标是不同的物理量 ,它们的量纲不相同 ,数量级相差很大 ,将它们相加或比较是不合适的,如.专业资料 .火箭弹射程的单位是米或千米,且数量级比较大 ,而射击精度通常用样本方差

24、来表示 ,其量纲是平方米 ,且数量级小 ,将两者比较 、相加或者求理想点是没有有意义的.下面介绍一个双目标规划的例子.例 4某工厂有工人 300 名 ,生产 A,B,C,D四种产品 ,要求每人每周工作时间在20-48小时内 ,C 的产量每周至少150 件,而每周至多 20 吨煤 ,其他数据见下表 :产品最大产量销售量成本售价能耗生产时间(件/周) (件/周 ) (元/ 件) (元/件) (吨煤/ 百件 )(时/ 件)A2703001902001.513B240300210230213.5C4606001481601.814D1302001001141.111.5问应如何安排每周生产 ,才能使利

25、润最高 ,而能耗最少 ?解用 xi 表示四种产品的产量 , ai 表示每件 i 产品的利润 ,bi 表示每 100 件 i 产品的能耗 , ci 表示生产每件i 产品的时间 , di 表示 i 种产品的最大产量.建立双目标规划模型如下 :4maxza i x ii14minybi xii1.专业资料 .4cixi14400,i14cixi12000,i1s.t .4bixi2000,i1xiN , i1, 2,3, 4,x3150,xid i , i1, 2,3, 4.LINGO 程序如下 :MODEL:SETS:YF/B1 B2 B3 B4 /:B,A,C,D,X;ENDSETSDATA:A

26、=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)<=2000;X(3)>=150;FOR(YF(I):X(I)<=D(I);SUM (YF(I):C(I)*X(I)<=14400;SUM (YF(I):C(I)*X(I)>=12000;END具体求解结果为 :Objective value:14620.00Extended solver

27、 steps:0Total solver iterations:3VariableValueReduced CostX( B1)248.0000-10.00000X( B2)240.0000-20.00000X( B3)460.0000-12.00000X( B4)130.0000-14.00000即 A、 B、 C、D 四种产品各生产248 件、240件、460 件、130 件时 ,能使利润最高,最高利润为14620 元.题目还要求能耗最少,因此用分层序列法 ,把利润最高的计算结果作为约束条件 ,即增加约束条件 :44ai xi把bi xi作为目标函14620 , min yi 1i 1数,

28、建立单目标规划模型求解 . 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;C=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)<=14620;FOR(YF(I):GIN(X(I);SUM (YF(I):B(I)*X(I)<=2000;X(3)>=150;FOR(YF(I):X(I)<=D(I);

29、SUM (YF(I):C(I)*X(I)<=14400;SUM (YF(I):C(I)*X(I)>=12000;END具体求解结果为 :.专业资料 .Objective value:14.58900Extended solver steps:0Total solver iterations:5VariableValueReduced CostX( B1)270.00000.1500000E-01X( B2)42.000000.2000000E-01X( B3)460.00000.1800000E-01X( B4)129.00000.1100000E-01即每周生产 A、 B、C、D

30、 四种产品各 270 件、42 件、 460 件、 129 件,能使利润最高,能耗最少 .五用 LINGO 求非线性曲线拟合的最小二乘解设观测数据为 ( xi , yi ) , (i1,2,n) ,希望用一条相对光滑的曲线yf (x)来近似表示变量 y 与 x 的关系 ,不要求它通过每个数据点(节点 ),但要求曲线与数据点之间的距离尽可能小 ,称 f (x) 为拟合函数或经验公式8 .设拟合函数的表达式中含有若干待定常数 ai ( j1,2, m) ,称为回归系数 ,用向量符号记为A(a1 , a2 ,am )T ,则曲线方程记为 yf ( A, x) ,其具体形式可由散点图或通过建立数学模型

31、来确定.设拟合函数形式已知为 y f ( A, x),其中 A (a1, a2 , , am )T 是待定常数 (回归系数),求待定常数 A 的方法通常用最小二乘法 ,其算法原理是求出使均方误差.专业资料 .NQ(A)I1 f (A, xi )yi 2 取最小值的 A, 其结果称为最小二乘解 ,于是问题转化为多元函数的最小值 :minQ( A)n f ( A,x)y 2 .AIii1上式可以看成是目标函数为非线性函数,没有约束条件的规划问题,适合用LINGO 求解 ,举例如下 :例 52004 年全国大学生数学建模竞赛 C 题中给出体重约 70kg 的某人在短时2 瓶啤酒后 ,隔一定时间测量他

32、的学业者酒精含量 mg /(ml2间内喝下10 ) ,得到数据见下表 ,请建立饮酒后血液中酒精含量的数学模型.血液中酒精含量数据时间 t( 小时 )0.250.50.7511.522.533.544.55酒精含量y306875828277686858515041时间 t( 小时 )6789101112131415酒精含量16y3835282518151210774解把人体内酒精的吸收 、代谢、排除过程分成两个室 ,胃为第一室 ,血液为.专业资料 .第二室 ,酒精先进入胃 ,然后被吸收进入血液 ,由循环到达体液内 ,在通过代谢 、分解剂排泄、出汗、呼气等方式排泄 .假设胃里的酒精被吸收进入血液的

33、速度与胃里的酒精x(t )成正比 ,比例常数为血液中的酒精被排出的速度与血液内的酒量y(t)成正比 , 比例系数为k2 .短短k1 ,时间内喝入胃里的酒精总量为G0 . 则可以建立如下微分方程模型 :x'k1x,y'k1 x k2 y,x(0)G0 , y(0)0.这是线性常系数微分方程组,求解得到G0 k1(ek2tk1ty( t)k1 k2e),如果统一用 a , a2, a3表示待定常数 则上式可以写成1,y(t ) a1 (e a2te a3t ).由已知数据求出使na 2ta3 t2最小的待定系数a1 , a2, a3,程序如下 :a1eeyii 1MODEL:SET

34、S:SJD/1.23/: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;ENDDATAMIN = SUM (SJD(I):(A1*(EXP(-A2*T)- EXP(-A3*T)-Y)2);END运行结果如下 :Local optimal solution found.Objective value:225.3417Extended solver steps:5Total solver iterations:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论