




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、LINGO简介LINGO是美国LINDO系统公司开发的求解数学规划系列软件中你的一个,它的主要功能是求解大型线性、非线性和整数规划问题,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、作函数和变量定界函数及用法.集合是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的值,然后返回所有这些值中的最大值;MIN(s:e) 表示对集合s中的每个成员,分别得到表达式e的值,然后返回所有这些值中的
4、最小值.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在线性规划中的应用 具有下列三个特征的问题称为线性规划问题(Linear program)简称LP问题,其数学模型称为线性规划(LP)模型.线性
5、规划问题数学模型的一般形式为:求一组变量的值,使其满足式中“*”代表“”、“ ”或“=”.上述模型可简写为 其中,变量称为决策变量,函数称为目标函数,条件称为约束条件, 称为非负约束.在经济问题中,又称为价值系数,为资源限量. 线性规划在科学决策与经营管理中实效明显,但是对于规模较大的线性模型,其求解过程非常繁琐,不易得出结果.而 LINGO中的内部集合函数有FOR(s:e)、SUM(s:e)、MAX(s:e)、MIN(s:e)等,可以用这些集合函数使程序编程简单可行,下面举例说明.例1 某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元每个和300元每个,生产线的最大生
6、产能力分别为每日100和120,生产线没生产一个M产品需要1个劳动日(1个工人工作8小时称为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该工厂每天共计能提供160个劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解 设两种产品的生产量分别为和,则该问题的数学模型为: 目标函数 约束条件 编写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
7、):X(I)<B(I); SUM(SHC(I):A(I)*X(I)<=160;END 程序运行结果如下Global optimal solution found. Objective value: 29000.00 Total solver iterations: 0Variable Value Reduced CostA( 1) 1.000000 0.000000A( 2) 2.000000 0.000000B( 1) 100.0000 0.000000B( 2) 120.0000 0.000000C( 1) 200.0000 0.000000C( 2) 300.0000 0.0
8、00000X( 1) 100.0000 0.000000X( 2) 30.00000 0.000000J( 1) 0.000000 0.000000 J( 2) 0.000000 0.000000 J( 3) 0.000000 0.000000Row Slack or Surplus Dual Price 1 29000.00 1.000000 2 0.000000 50.00000 3 90.00000 0.000000 4 0.000000 150.0000最优解为最优值为.即每天生产100个M产品30个P产品,可获得29000元利润.三、LINGO在整数规划和0-1规划中的应用1 求解整
9、数规划整数规划分为整数规划和混合整数规划,要求全部变量都为非负整数的数学规划称为纯整数规划,只要求部分变量为非负整数的数学规划称为混合整数规划.下面只讨论约束条件和目标函数均为线性的整数规划问题,即整数线性规划问题(以下简称整数规划,记为ILP),其数学模型的一般形式是, 且称线性规划问题 为整数规划问题的松弛问题. 显然,整数规划的可行域是其松弛问题的可行域的一个子集.如果线性规划的最优解为,相应的规划规划的最优解为,则必然有.LINGO的内部函数GIN(X)是限定X为整数,因此,LINGO对整数规划的求解是可行的.下面举例说明:例2 某疗养院营养师要为某类病人拟订本周蔬菜类菜单,当前可供选
10、择的蔬菜品种、价格和营养成分含量,以及病人所需养分的最低数量见表1,病人1周需14份蔬菜,为了口味的原因,规定每周内的卷心菜不多于2份,胡萝卜不多于3份,其他蔬菜不多于4份且至少1份.在满足要求的前提下,制定费用最少的一周菜单方案. 表1 可供蔬菜养分含量和价格养分蔬菜 每份蔬菜所含养分数量每份价格(元) 铁 磷维生素A维生素C烟酸 锌A1青豆0.45 20 415 22 0.3 0.2 2.1A2萝卜0.45 28 4065 5 0.35 0.25 1.0A3花菜0.65 40 850 43 0.6 0.3 1.8A4卷心菜0.4 25 75 27 0.2 0.12 1.2A5芹菜 0.5
11、26 76 48 0.4 0.15 2.0A6土 豆 0.5 75 235 8 0.6 0.21 1.2A7红柿 0.6 45 240 20 0.2 0.25 1.5每周最低需求 8 180 19800 450 7 4解 用表示7种蔬菜的份数,表示蔬菜单价,表示每周最低营养需求,表示第种蔬菜的第种养分含量,建立如下整数规划模型 LINGO程序如下:MODEL:SETS:SHC/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
12、 400 7 4;C=0.45 20 415 22 0.3 0.2 0.45 28 4065 5 0.35 0.25 0.65 40 850 43 0.6 0.3 0.4 25 75 27 0.2 0.12 0.5 26 76 48 0.4 0.15 0.5 75 235 8 0.6 0.21 0.6 45 240 20 0.2 0.25;ENDDATAMIN=SUM(SHC: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#
13、 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.00000 Extended solver steps: 0 Total solver iterations: 6Variable Value Reduced CostX( 1) 1.000000 2.000000 X( 2) 3.000000 1.000000 X( 3) 2.000000 1.800000 X( 4) 8.000000 1.
14、200000 X( 5) 1.000000 2.000000 X( 6) 4.000000 1.200000 X( 7) 2.000000 1.500000当时,目标函数最小,.2求解0-1规划 在整数规划中,当对变量的限定为变量的值只能取整数值时,我们把整数规划称为0-1规划,0-1规划化为以下标准形式:,任意0-1规划模型如何化为标准形式: (1)如果目标函数是求最小值,则对目标函数两边乘以-1,变为求最大值;(2)如果目标函数中某变量的系数,则令替换为0-1变量,于是变量在目标函数中的系数变成小于0;(3)如果约束条件是“”形式,则可两边乘以-1,变为“”形式;(4)如果约束条件中含有等
15、式,则可将每个等式化为两个“”形式的不等式.LINGO内部函数BIN(X)的作用是限定X为0或1,因此,LINGO对整数规划的求解是可行的.下面举例说明:例3 分配六个人去完成6项任务,每人完成一项,每项任务只能由一人去完成,六个人分别完成各项任务的效益如下表所示,试做出任务分配使效益最大. 各人完成各项任务的效益 任务人员A B C D E F 1 2 3 4 5 6 20 15 16 5 4 7 17 15 33 12 8 6 9 12 18 16 30 13 12 8 11 27 19 14 - 7 10 21 10 32 - - - 6 11 13解 用表示第个人是否完成第项任务,当表
16、示第个人完成第项任务,第个人不完成第项任务,用表示第个人完成第项任务的效率模型建立如下:编写程序如下: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,7 17,15,33,12,8,6 9,12,18,16,30,13 12,8,11,27,19,14 0,7,10,21,10,32 0,0,0,6,11,13;ENDDATAMAX=SUM(WCHRW(I,J):C*X);FOR(WCHRW(I,J):BIN(X(I,J);FOR(MEN(I):SU
17、M(RENWU(J):X(I,J)=1); FOR(RENWU(J):SUM(MEN(I):X(I,J)=1);ENDGlobal optimal solution found. Objective value: 142.0000 Objective bound: 142.0000 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 0当,时,142.即第一个人完成第一项任务,第二个人完成第二项任务,第三个人完成第三项任务,第四个人完成第四项任务,第五个人完成第五项任务,第六个人完成第六项任务时
18、,效率最高.四 LINGO在多目标规划中的应用多目标规划的解法通常是根据问题的实际背景和特征,设法将多目标规划转化为单目标规划,从而获得满意解.常用的解法有:(1)主要目标法.确定一个主要目标,把次要目标作为约束条件并设定适当界限值. (2) 线性加权平均法.对每个目标按其重要程度赋予适当权重,且,然后把作为新的目标函数(其中,是原来的个目标).(3)指数加权平均法.设是原来的个目标,令,其中为指数加权,把Z作为新的目标函数.(4)理想点法.先分别求出个单目标规划的最优解,令,然后把它作为新的目标函数.(5)分层序列法.将所有个目标按其重要程度排序,先找出第一个最重要的目标的最优解,然后在保证
19、前一个目标最优解的前提下,依次求下一个目标的最优解,一直求到最后一个目标为止.这些方法各有其优点和适用的场合,但并非总是有效,有些方法存在一些不足之处,例如,线性加权求和法确定权重系数时有一定主观性,权重系数取值不同,结果也就不一样;线性加权求和法,指数加权乘积法和理想点法通常只能用在两个目标的单位(量纲)相同的情况,如投资时希望收益要大、风险要小,这是双目标规划,若收益和风险的物理单位(元或百分比)相同,可以考虑用线性加权求和法、指数加权乘积法或理想点法把它们组合起来,化双目标规划为点目标规划.如果两个目标是不同的物理量,它们的量纲不相同,数量级相差很大,将它们相加或比较是不合适的,如火箭弹
20、射程的单位是米或千米,且数量级比较大,而射击精度通常用样本方差来表示,其量纲是平方米,且数量级小,将两者比较、相加或者求理想点是没有有意义的.下面介绍一个双目标规划的例子.例 4 某工厂有工人300名,生产A,B,C,D四种产品,要求每人每周工作时间在20-48小时内,C的产量每周至少150件,而每周至多20吨煤,其他数据见下表:产品 最大产量 销售量 成本 售价 能耗 生产时间 (件/周) (件/周) (元/件) (元/件) (吨煤/百件) (时/件)A 270 300 190 200 1.5 13B 240 300 210 230 2 13.5C 460 600 148 160 1.8 1
21、4D 130 200 100 114 1.1 11.5问应如何安排每周生产,才能使利润最高,而能耗最少?解 用表示四种产品的产量,表示每件产品的利润,表示每100件产品的能耗,表示生产每件产品的时间,表示种产品的最大产量.建立双目标规划模型如下: 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;ENDDATAMAX=SUM(YF(I):A*X);FOR(YF(I):GIN(X(I); S
22、UM(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.00 Extended solver steps: 0 Total solver iterations: 3Variable Value Reduced CostX( B1) 248.0000 -10.00000 X( B2) 240.0000 -20.00000X( B3)
23、460.0000 -12.00000X( B4) 130.0000 -14.00000即A、B、C、D四种产品各生产248件、240件、460件、130件时,能使利润最高,最高利润为14620元.题目还要求能耗最少,因此用分层序列法,把利润最高的计算结果作为约束条件,即增加约束条件:,把作为目标函数,建立单目标规划模型求解.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;ENDDATAM
24、IN=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);SUM(YF(I):C(I)*X(I)<=14400;SUM(YF(I):C(I)*X(I)>=12000;END具体求解结果为:Objective value: 14.58900 Extended solver steps: 0 Total solver iterations: 5Variable Va
25、lue 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求非线性曲线拟合的最小二乘解设观测数据为,希望用一条相对光滑的曲线来近似表示变量y与x的关系,不要求它通过每个数据点(节点),但要求曲线与数据点之间的距离尽可能小,称为拟合函数或经验公式.设拟合函数的表达式中含有若干待定常
26、数,称为回归系数,用向量符号记为,则曲线方程记为,其具体形式可由散点图或通过建立数学模型来确定.设拟合函数形式已知为,其中是待定常数(回归系数),求待定常数A的方法通常用最小二乘法,其算法原理是求出使均方误差取最小值的A,其结果称为最小二乘解,于是问题转化为多元函数的最小值: .上式可以看成是目标函数为非线性函数,没有约束条件的规划问题,适合用LINGO求解,举例如下:例5 2004年全国大学生数学建模竞赛C题中给出体重约70kg的某人在短时间内喝下2瓶啤酒后,隔一定时间测量他的学业者酒精含量,得到数据见下表,请建立饮酒后血液中酒精含量的数学模型.血液中酒精含量数据时间t(小时)酒精含量y0.
27、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 25 18 15 12 10 7 7 4 解 把人体内酒精的吸收、代谢、排除过程分成两个室,胃为第一室,血液为第二室,酒精先进入胃,然后被吸收进入血液,由循环到达体液内,在通过代谢、分解剂排泄、出汗、呼气等方式排泄.假设胃里的酒精被吸收进入血液的速度与胃里的酒精成正比,比例常数为,血液中的酒精被排出的速度与血液内的酒量成正比, 比例系数为. 短短时间内喝入
28、胃里的酒精总量为. 则可以建立如下微分方程模型:这是线性常系数微分方程组,求解得到如果统一用 表示待定常数,则上式可以写成由已知数据求出使最小的待定系数,程序如下:MODEL:SETS: 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.3417 Extended solver steps: 5 Total solver iterations: 138Variable Value Reduced CostA1 114.4325 0.000000 A2 0.1855020 0.57
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年艺术表演场馆服务合作协议书
- 2025年皮肤科医院合作协议书
- 2025年汽车内外饰件合作协议书
- 2025年张家口危险品驾驶员考试题
- 2025年淮安2024驾校考试危险品考试题
- 2025年纺织仪器相关专用测试仪器合作协议书
- 企业出资特别声明(6篇)
- 技术服务支持合作协议要求
- 施工阶段管控试题及答案
- 土地流转型农业种植开发合同
- 2024年市场营销师品牌宣传技巧试题及答案
- 教育机构与旅行社合作合同新规定
- 脑-肠轴与肠道菌群互作-深度研究
- 2025解题觉醒邓诚数学(名师大招册)
- 第四单元第一课 多姿多彩的乐音世界-《唱脸谱》 课件 2024-2025学年湘艺版(2024)初中音乐七年级下册
- 给小朋友科普化学小知识
- 北非旅游地理
- 体重管理培训课件
- 住院糖尿病血糖管理课件
- 消防设施的自动化控制
- 楼体字施工方案
评论
0/150
提交评论