Lingo软件在数学建模竞赛中的应用.docx
- 文档编号:6658202
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:6
- 大小:19.34KB
Lingo软件在数学建模竞赛中的应用.docx
《Lingo软件在数学建模竞赛中的应用.docx》由会员分享,可在线阅读,更多相关《Lingo软件在数学建模竞赛中的应用.docx(6页珍藏版)》请在冰豆网上搜索。
Lingo软件在数学建模竞赛中的应用
Lingo软件在数学建模竞赛中的应用
[收稿日期]2010-06-20
[基金项目]福建交通职业技术学院科技发展基金(Ky1001)。
数学建模(MathematicalModeling)是对现实世界的一个特定对象,为了一个特定目的,根据特有的内在规律,作出一些必要的简化假设,运用适当的数学工具,得到一个数学结构的过程[1]。
Lingo是LinearInteractiveandGeneralOptimizer的缩写。
Lingo软件是美国芝加哥大学的LinusSchrage教授于1980年前后开发出来的一套专门用于求解最优化问题的软件包,即“交互式的线性和通用优化求解器”,包括功能强大的建模语言,建立和编辑问题的全功能环境,读取和写入Excel和数据库的功能,以及一系列完全内置的求解程序。
使用者甚至不需要指定或启动特定的求解器,因为Lingo会读取方程式并自动选择合适的求解器。
目前Lingo产品已经有Lingo8.0版本,新版本的求解规模都在原有基础上得到进一步加强。
Lingo软件的最大特色在于其具有的快速建构模型、轻松编辑数据、强大求解工具、交互式模型或建立完成应用、丰富的文件支持。
纵观近几年全国大学生数学建模竞赛赛题,参赛者大都需要处理较复杂的数学规划和曲线拟合等问题,模型的建立与求解较为复杂、计算量大,而matlab、mathmatica等软件语法比较复杂不易掌握。
Lingo软件程序简洁、计算精度高、结果可靠、易于修改和扩展,其内部建模语言是建立与求解大规模数学规划模型的有力武器。
2000年全国大学生数学建模竞赛B题(钢管订购和运输)中的最小费用流问题、2004年全国大学生数学建模竞赛C题(酒后驾车)的曲线拟合问题、2006年全国大学生数学建模竞赛中C题(易拉罐的最优设计)的非线性规划问题都可以充分展示用Lingo建模语言求解的优越性。
1非线性规划模型
历年全国大学生数学建模竞赛都需解决最优生产计划、最优分配最优设计、最优决策、最佳管理等较为复杂的非线性规划问题,模型由决策变量、目标函数、约束条件三个要素组成,其计算量较大,可用Lingo软件求解。
2006“高教社杯”全国大学生数学建模竞赛C题[3]第二小题,设易拉罐是一个正圆柱体,什么是它的最优设计?
经测量得圆柱的上底厚度为a=0.036cm、下底厚度为c=0.040cm、圆柱侧壁厚度为b=0.012cm?
А?
悸且桌?
罐设计美观性、便于把握以及材料节省等因素,于是建立目标规划模型如下:
目标函数:
minW=b×2πRh+(a+c)πR2
约束条件:
V=πR2>3552R/h=0.618πr2≤18.56,h≥8.71R>0,h>0,a=0.036,b=0.012
利用Lingo8.0编程如下:
Model:
min=b*2*3.14159*R*h+(a+c)*3.14159*R^2;
!
以上是目标函数,以下为约束条件;
3.14159*R^2*h>355;
2*R/h=0.618;
3.14159*R^2=18.56;
h>=8.71;
R>0;h>0;a=0.036;c=0.040;b=0.012;
End
Lingo以语句Model开始,以语句End结束,这两个语句单独成一行。
语句分为集合定义部分、数据初始化部分、目标函数、约束条件部分,这几个部分的先后次序无关紧要。
min开头的语句表示求目标函数最小值。
“!
”开头的语句是注释语句,Lingo不作运行,每条中间语句必须以“;”号作为结尾。
注意乘号不能省略,语句不计大小写。
运行SOVLE,得部分结果如下:
Localoptimalsolutionfoundatiteration:
1151
Objectivevalue:
5.157389
VariableValueReducedCost
B0.1200000E-010.000000
R3.2684800.000000
H10.577600.000000
A0.3600000E-010.000000
C0.4000000E-010.000000
R25.9078360.000000
即底面半径为3.268480,圆柱体高为10.57760时,用料体积为5.157389,此为最优设计。
第三题亦可按此方法迎刃而解。
上例充分体现Lingo其简单易学、方便快捷的优越性。
2曲线拟合模型
曲线拟合在众多领域中得到了广泛的应用,将曲线拟合问题转化为数学规划模型,并使用Lingo软件来求解,该方法简便快捷,是实现曲线拟合的一个有效方法。
2004年全国大学生数学建模竞赛C题(酒后驾车)中给出某人短时间内喝下两瓶啤酒后,间隔一定时间得到数据。
以下建立无约束的非线性规划模型[2]。
间隔一定时间t测量他的血液中酒精含量y(毫克/百毫升),得到数据如表1:
表12004年全国大学生数学建模竞赛C题(酒后驾车)数据
时间(小时)0.250.50.7511.522.533.544.55
酒精含量306875828277686858515041
时间(小时)678910111213141516
酒精含量3835282518151210774
题目要求结合给定数据建立饮酒后血液中酒精浓度的数学模型。
通过建立微分方程模型得到短时间内喝酒后血液中酒精浓度与时间的关系为:
y=a1(e-a2t-e-a3t)
求均方误差
Q(a1,a2,a3)=∑ni=1[a1(e-a2t-e-a3t)-yi]2
取极小值的待定系数,即为最小二乘解。
下面用Lingo软件求解,具体算法如下:
MODEL:
SETS:
BAC/R1..R23/:
T,Y;
ENDSETS
DATA:
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;
ENDDATA
MIN=@SUM(BAC:
(A1*(@EXP(-A2*T)-@EXP(-A3*T))-Y)^2);
END
以上程序中,SETS和ENDSETS之间的语句是对集合作定义,在此所定义的BAC是包含23个成员的集合,T和Y是BAC的两个属性,分别表示时间t和血液中酒精浓度y,它们都是含有23个成员的一维数组。
DATA和ENDDATA之间的语句是对T和Y的进行赋值,其中@SUM和@EXP是Lingo提供的内部函数,@SUM的作用是对某个集合的所有成员求某个表达式的和,该函数需要两个参数,第一个参数为集合名称,指定对该集合的所有成员求和,此处第一个参数是BAC,它有23个成员,则求和运算对这23个成员进行。
第二个参数是一个表达式,表示求和运算对该表达式进行,两个参数之间用“:
”号隔开。
如果有约束条件,可放在目标函数之后,此处没有约束条件,故目标函数之后即以END结束整个程序。
点击SOLVE,运行结果如下:
Localoptimalsolutionfoundatiteration:
98
Objectivevalue:
225.3417
VariableValueReducedCost
A1114.43230.3477201E-08
A20.18550140.000000
A32.0079440.5661852E-07
即:
A1=114.4323,A2=0.1855014,A3=2.007944,目标函数最小值为225.3417。
LINGO求多元函数极小值时内部所采用的算法效率高、速度快、精度高。
用于非线性曲线拟合时,对拟合函数的形式无任何限制,无需初始值,能准确地得到回归系数的最小二乘解,计算精度高,程序简洁。
3最小费用流模型
运筹学的交通运输问题中,往往要求在完成运输任务的前提下,寻求一个使总运输费用最省的运输方案,这就是最小费用流问题。
如果只考虑单位货物的运输费用,那么这个问题就变成最短路问题。
模型的传统求解迭代次数太多,比较复杂,而matlab、mathmatica等软件语法复杂不易编程,Lingo8.0其内部语言为解决该类问题的强有力武器。
2000年全国大学生数学建模竞赛B题“钢管的订购和运输”是一道离散优化问题。
如图1,有7家钢管生产厂Si(i=1,2,…7),提供钢管到一条拟铺设钢管的天然气输送主管道上的15个站点Aj(j=1,2,…15)。
?
Ц止芸赏ü?
公路和铁路运至铺设地点,图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),空心圆点表示火车站。
钢管运到站点后由各站点沿管道向两边铺设直至合拢。
该题要求制定钢管订购和运输的优化计划,使总费用最小。
图1天然气输送主管道图
欲解决该问题首先需确定从Si至Aj的最优路径,从而确定出钢管从i地运往j地的最小运费,即求解最小费用流问题。
根据该题的需要,不妨设从Si至Aj的钢管经过铁路后,一旦走公路,则不会再通过铁路运输。
下以S2为例,计算S2至Aj的最优路径。
图1中Bk/Lk(k=16,2,…,32)中表示S2至沿铁路至火车站Bk的费用为Lk。
问题转化为求以Si为起点、Aj为终点的赋权图的最短路径问题。
由Dijkstra算法,运用Lingo8.0编程如下:
MODEL:
SETS:
CITIES/1..33/:
F;
ROADS(CITIES,CITIES)/
1,22,32,163,43,174,54,185,65,196,76,207,87,217,228,98,239,109,2410,1110,2511,1211,2612,1312,2713,1413,2814,1514,2914,3015,3115,3216,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,33/:
D
ENDSETS
DATA:
D=10.430.10.375.00.260.66019.4120.50.520.11.03.168.01.248.04.230.07.022.01.021.01.042.06.250.011.03.02.02.0205.0190.0125.0110.095.085.085.070.0110.0135.0145.0155.0165.0180.0175.0190.0190.0;
ENDDATA
F(@SIZE(CITIES))=0;
@FOR(CITIES(i)|i#LT#@SIZE(CITIES):
F(i)=@MIN(ROADS(i,j):
D(i,j)+F(j)));
END
以上SETS开始至ENDSETS结束的内容是定义所有的边。
“CITIES/1..33/:
F;”是用集合CITIES定义一维变量F,其格式为:
“setname/memberlist(or1..n)/:
attribute,...”,一个集合只需要给出维数(memberlist,用1..n表示或其他文字符号表示或用集合表示),后接具有该维数的变量(attribute)。
以上DATA开始至ENDDATA结束的内容是赋以上各边以相应的权。
Dijkstra算法的循环语句为:
“@FOR(CITIES(i)|i#LT#@SIZE(CITIES):
F(i)=@MIN(ROADS(i,j):
D(i,j)+F(j)));”,其中逻辑运算符“#LT#”表示小于。
运行此程序,得部分结果如下:
Feasiblesolutionfoundatiteration:
0
VariableValue
F
(1)215.7000
F
(2)205.3000
即可求得单位钢管从S2到Aj的最小运费F(j)(j=1,…,15)如下:
表2单位钢管从S2到Aj的最小运费
F(j)单位钢管的运输费F(j)单位钢管的运输费
F
(1)215.7000F
(2)205.3000
F(3)190.2000F(4)171.6000
F(5)111.0000F(6)95.50000
F(7)86.00000F(8)71.20000
F(9)114.2000F(10)142.0000
F(11)146.0000F(12)156.0000
F(13)171.2000F(14)178.0000
F(15)192.0000
同理可求得S1,S3,S4,S5,S7,S7各点到目的点的最优单位运费。
经定量分析可得较合理的方案为:
S1,S2,S3负责往铺设点A1至A9供应钢管,S4、S5、S6、S7负责往A8至A15供应钢管。
Lingo软件内置建模语言以较少的语句、直观的方式描述较大规模的数学规划模型。
其中,@SUM、@For和@IF等语句的应用,极大地方便了数学模型的建立。
此外,由曲线拟合模型可得,可以将原先不属于优化问题的模型,利用Lingo软件内部建模语言进行求解,较之传统的求解方法更简单。
在实际应用领域,Lingo其线性、非线性和整数规划求解程序已经被全世界数千万的公司用来做最大化利润和最小化成本的分析。
Lingo能在产品分销、成分混合、生产与个人事务安排、存货管理、生产线性规划、运输、财务金融、投资分配、资本预算、混合排程、库存管理、资源配置等问题的数学建模中发挥巨大作用。
[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lingo 软件 数学 建模 竞赛 中的 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)