Lingo软件在数学建模竞赛中的应用word精品文档9页

合集下载

数学建模中的优秀软件——LINGO

数学建模中的优秀软件——LINGO

第9卷第3期2007年6月黄山学院学报JOurnal0fHuangshanUniVefsityVo】.9.NO.3Jun.2007数学建模中的优秀软件——LINGO周甄川(黄山学院数学系,安徽黄山245041)摘要:介绍了数学建模的相关概念、数学建模竞赛概况,探讨了LINGo系统的功能与特点,以及它在数学建模中的应用。

关键词:数学模型;数学建模;LlNGo系统中图分类号:TP319:0141.4文献标识码:A文章编号:1672—447x(2007)03—0112—03在对自然科学与社会科学许多课题的研究中,科学工作者常将事物的变化规律用特定的数学表达式的形式加以描述。

将寻求这种确定事物变化规律的过程称为“数学建模”。

而在数学建模以及全国大学生数学建模竞赛中,最常碰到的是一类决策问题,即在一系列限制条件下,寻求使某个或多个指标达到最大或最小,这种决策问题通常称为最优化问题【1】。

最优化理论是近几十年发展和形成的一门新兴的应用性学科。

它主要解决最优生产计划、最优分配、最优设计、最优决策、最佳管理等最优化问题。

主要研究方法是定量化、系统化和模型化方法,特别是运用各种数学模型和技术来解决问题。

它主要由决策变量、目标函数、约束条件三个要素组成。

当遇到的实际问题时即使建立了模型,找到了解的方法,对于较大的计算量也是望而却步,LINGo系列优化软件包就给我们提供了理想的选择。

1什么是数学建模数学建模(MatheImticalModelin曲‘11顾名思义就是建立数学模型以解决实际问题的过程。

它利用数学和计算机对实际问题进行分析研究,抽象出反映事物内在活动规律的数学关系表达式,通过对这些数学关系表达式的求解和反复验证,最终解决实际问题。

数学是所有自然科学的基础,随着计算机软硬件技术的迅速发展,数学建模和与之相伴的计算已逐渐成为工程设计的关键工具,并在人类社会实践活动中的众多领域内发挥着越来越重要的作用。

那么,什么是数学模型?如何建立数学模型?如何用数学模型解决实际问题呢?模型就是对事物的一种抽象。

数学建模中lingo的使用

数学建模中lingo的使用

20桶牛奶生产A1, 30桶生产A2,利润3360元。
首页 上页 下页 返回
结果解释
OBJECTIVE FUNCTION VALUE
max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100;
1)
3360.000
VARIABLE
X1 X2
VALUE
Variable X1 X2 Row 1 2 3 4
Value 16.80000 22.30000
Reduced Cost 0.000000 0.000000
Slack or Surplus Dual Price 229.1000 1.000000 0.000000 2.200000 0.000000 0.1000000 53.90000 0.000000
首页上页返回下页资料仅供参考1桶桶牛奶3公斤a112小时8小时4公斤a2或或获利24元公斤获利16元公斤x1桶牛奶生产a1x2桶牛奶生产a2获利243x1获利164x2原料供应5021??xx劳动时间48081221??xx加工能力10031?x决策变量目标函数216472xxzmax??每天获利约束条件非负约束021?xx线性规划模型lp时间480小时至多加工100公斤a150桶牛奶每天首页上页返回下页资料仅供参考模型求解图解法x1x20abcdl1l2l3l4l55021??xx48081221??xx10031?x021?xx约束条件50
首页
上页
下页
返回
Lingo中的集
Lingo中集的定义语法: setname/member_list/:attribute_list; 说明: setname为集的名称; /member_list/为成员列表; attribute_list为属性列表。

LINGO在数学建模中的应用

LINGO在数学建模中的应用

一、LINGO简介LINGO[1]是美国LINDO系统公司开发的求解数学规划系列软件中你的一个,它的主要功能是求解大型线性、非线性和整数规划问题,LINGO的不同版本对模型的变量总数、非线性变量数目、整型变量数目和约束条件的数量做出不同的限制.LINGO的主要功能特色为:(1)既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强.(4)内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;(6)能方便地与EXCEL、数据库等其他软件交换数据.LINGO像其他软件一样,对他的语法有规定,LINGO的语法规定如下:(1)求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2) 每个语句必须以字母开头,由字母、数字和下划线所组成,昌都不超过32个字符,不区分大小写;(3)每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行;(4)如果对变量的取值范围没有特殊说明,则默认所有决策变量都非负;(5)LINGO模型以语句“MODEL”开头,以语句“END”结束,对于比较简单的模型,这这两个语句可以省略.LINGO提供了五十几个内部函数,使用这些函数可以大大减少编程工作量,这些函数都是以字符@开头,下面简单介绍其中的集合操作函数和变量定界函数及用法.集合是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的值,然后返回所有这些值中的最小值.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)限定L<X<U,可用作约束条件;@FREE(X)取消对X的限定,即X可以取任意实数.二、LINGO 在线性规划中的应用具有下列三个特征的问题称为线性规划问题(Linear program)[2]简称LP 问题,其数学模型称为线性规划(LP)模型.线性规划问题数学模型的一般形式为:求一组变量(1,2,,)j x j n =的值,使其满足1122max(min),n n z c x c x c x =+++2111122111211222221122***.0,1,2,,,,..n j n n n n nn nn n n x j na x a x a xb a x a x a x b s t a x a x a x b ⎧⎪⎪⎪⎨⎪⎪≥=⎪⎩+++++++++ 式中“*”代表“≥”、“ ≥”或“=”.上述模型可简写为1max(min),nj j j z c x ==∑1*0,1,2,,,1,2,,..nij j j ji a x x j n b i ms t =⎧⎪⎨⎪≥=⎩=∑其中,变量j x 称为决策变量,函数1nj jj z c x==∑称为目标函数,条件1*nj jij c x b =∑称为约束条件,0j x ≥ 称为非负约束.在经济问题中,又称j c 为价值系数,i b 为资源限量. 线性规划在科学决策与经营管理中实效明显[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个劳动日,该工厂每天共计能提供160个劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解 设两种产品的生产量分别为1x 和2x ,则该问题的数学模型为:目标函数 12max 200300z x x =+约束条件1212100,120,160,0,1,2.i x x x x x i ≤⎧⎪≤⎪⎨+≤⎪⎪≥=⎩ 编写LINGO 程序如下: MODEL : SETS :SHC/1,2 /:A,B,C,X; YF/1,2,3 /:J; ENDSETS DATA :A=1,2 ; B=100,120; C=200,300; ENDDATAMAX=@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.00 Total solver iterations: 0 Variable 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.000000X( 1) 100.0000 0.000000X( 2) 30.00000 0.000000J( 1) 0.000000 0.000000J( 2) 0.000000 0.000000J( 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最优解为12100,30,x x ==最优值为29000.00z =.即每天生产100个M 产品30个P 产品,可获得29000元利润.三、LINGO 在整数规划和0-1规划中的应用1 求解整数规划整数规划[4]分为整数规划和混合整数规划,要求全部变量都为非负整数的数学规划称为纯整数规划,只要求部分变量为非负整数的数学规划称为混合整数规划.下面只讨论约束条件和目标函数均为线性的整数规划问题,即整数线性规划问题(以下简称整数规划,记为ILP),其数学模型的一般形式是()1max min nj j j z c x ==∑,()()11,2,,..01,2,,ni j j i j j j a x b i n s t x j n x =⎧≤=⎪⎪⎪≥=⎨⎪⎪⎪⎩∑全为整数或部分为整数。

Lingo软件的应用

Lingo软件的应用

Lingo软件的应用颜宁生(北京服装学院)本人有一个“杜撰”课程对联的爱好,有一位同学在参加我的数学建模培训班后,给我写了一幅对联,表达了他对练好Lingo软件的决心。

上联:有心栽花花可以不开下联:无心插柳柳必须成荫横批:感悟拎购时间:2012,7,21地点:华南理工大学内容一、数学建模案例二、适合学生学习Lingo软件的两类入门题三、练会Lingo后的同学能帮老师做什么四、一份《数学建模》试卷模板一、数学建模案例上联:数学建模融入到现实生活当中下联:拎购软件嵌入到衣可晒单元格横批:嵌入技术嵌入技术过滤器的作用,把有用的信息过滤出来,从而求解的界面更生动和友好。

1.1、2012年北京工业大学数学建模C题1.1.1、假设为了简化模型的求解,假设每辆货车进入生产线后,其糖份就不再流失。

1.1.2、数学模型首先,将剩余时间分成4个时间段,设x(i,j)为0‐1变量,若第j辆货车在第i个时间段进入生产线,则x(i,j)=1,否则取0,(i=1,2,3,4;j=1,2,……,11),设a ij表示第j辆货车在第i个时间段进入生产线时能够加工出的蔗糖的百分比。

根据表C.1,得到a ij 值如下:aijj1234567891011i 111111111111 20.32490.547600.51840.75690.21160.14440.26010.65610.51840.49 30.10560.299900.268700.04480.02090.06770.43050.26870.2401 40.01110.089900.072200.0020.00040.00460.18530.07220.0576i=j=111max =a i j x i j st: x i j 3,1,2,3,4x i j (1,2,3,4;1,2, (11)j i i j =≤===∑∑∑41111(,)(,)(,)(,)=0或11.1.3、数学模型求解的Lingo 程序1.1.3.1、获取数据的Lingo 程序sets:h/1..2/;l/1..11/;hl(h,l):bg7;endsets data:bg7=@ole('C 题.xls','_bg7');@ole('C 题.xls','_g7')=bg7;enddata1.1.3.2、自动求解的Lingo 程序sets:h/1..4/;l/1..11/;hl(h,l):a,x;minimum/1/:h22;endsets data:a =@ole('C 题.xls','_g11');@ole('C 题.xls','_g17')=x;@ole('C 题.xls','h22')=h22;enddatamax=@sum(hl:a*x);@for(h(i):@sum(l(j):x(i,j))<=3);@for(l(j):@sum(h(i):x(i,j))=1);h22(1)=@sum(hl:a*x);@for(hl:@bin(x));End1.1.3.3、自动判解的Lingo 程序sets:h/1..4/;l/1..11/;hl(h,l):a,x;minimum/1/:y10;endsets data:a =@ole('C 题.xls','_g11');x=@ole('C题.xls','_g17');h22=@ole('C题.xls','h22');@ole('C题.xls','y10')=y10;enddatay10(1)=@if(@abs(h22-@sum(hl:a*x))#lt#0.01,100,0);end1.1.3.4、随机方案求甘蔗糖产量的Lingo程序sets:h/1..4/;l/1..11/;hl(h,l):a,x;minimum/1/:h23;endsetsdata:a=@ole('C题.xls','_g11');x=@ole('C题.xls','_g17');@ole('C题.xls','h23')=h23;enddatah23(1)=@sum(hl:a*x);end1.1.4、结果最优方案为:j1234567891011i 100100110000 200001000011 301010000100 410000001000即:第3辆、第6辆和第7辆第1批进入生产线;第5辆、第10辆和第11辆第2批进入生产线;第2辆、第4辆和第9辆第9批进入生产线;第1辆和第8辆第4批进入生产线;最优值为5.78009124,即能将11车甘蔗加工出5.78车甘蔗糖。

第6讲 Lingo在数学建模中的作用

第6讲 Lingo在数学建模中的作用

LINGO软件陕西铁路工程职业技术学院赵增逊2014年10月18日主要内容1.LINGO简介2.LINGO中建模语言(集合、运算符和函数等)3.LINGO编程实例1.1LINGO软件简介(1)美国芝加哥(Chicago)大学的Linus Schrage(莱纳斯.施拉盖)教授于1980年前后开发。

(2)LINGO: Linear Interactive General Optimizer (线性交互式通用优化器)。

(3)用来求解的优化模型(连续优化和整数规划(IP))。

类型:线性规划(LP)、二次规划(QP)、非线性规划(NLP)。

1.2 LINDO/LINGO软件能求解的模型优化线性规划非线性规划二次规划连续优化整数规划LINDOLINGO1.3 LINGO的特点(1)求解线性规划问题(2)求解非线性规划问题(3)非线性方程组(4)输入模型简练直观(5)运行速度快、计算能力强1.4 学习LINGO 的要求 需要掌握:软件操作基本语法结构掌握集合(SETS)的应用 正确阅读求解报告 正确理解求解状态窗口 学会设置基本的求解选项(OPTIONS) LINGO: Linear Interactive General Optimizer 求解数学规划问题Min Z = f (x)s.t x ∈D (⊂Rn )Lingo软件的主窗口(用户界面) 所有Lingo窗口都在这个窗口内状态行(最左边显示“Ready”表示“准备就模型窗口(Model Window)用于输入LINGO优化模型(即LINGO程序)当前光标的位置当前时间1.5 LINGO软件界面1.新建(New )单击“新建”按钮或直接按F2键可以创建一个新的“Model ”窗口。

在这个新的“Model ”窗口中能够输入所要求解的模型。

2.打开(Open )单击“打开”按钮或直接按F3键可以打开一个已经存在的文本文件。

这个文件可能是一个Model 文件。

Lingo软件应用举例

Lingo软件应用举例

Lingo 软件应用举例1. 简单的优化问题---- Lingo 软件的体验1.1 线性规划及线性整数规划例1. 在LINGO 中求解如下问题(线性规划):0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x %----------------------------------------------------------其LINGO 代码如下:min =2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;说明:(1) 在这里之所以没有对x1和x2进行非负的限制,是由于在默认情况下,Lingo 规定变量取非负实数(即非负要求,取值连续)(2) 若要求取整数,则函数@gin(x)限定x 取值为整数;(3) 若要求无约束,则函数@free(x)取消x 默认下界为0的限制,使x 可以取任意实数;(4) 若要求取非正数,则函数@bnd(L,x,U)可以限定L ≤x ≤U 。

%----------------------------------------------------------计算结果:Global optimal solution found at iteration: 2Objective value: 800.0000Variable Value Reduced CostX1 250.0000 0.000000X2 100.0000 0.000000Row Slack or Surplus Dual Price1 800.0000 -1.0000002 0.000000 -4.0000003 150.0000 0.0000004 0.000000 1.000000结果的解释:(1) “Global optimal solution found at iteration: 2”表示2次迭代后得到全局最优解。

lingo在数学建模中的应用.ppt


逻辑运算符
在LINGO中,逻辑运算符主要用于集循环函数的条件表达 式中,来控制在函数中哪些集成员被包含,哪些被排斥。 在创建稀疏集时用在成员资格过滤器中。 LINGO具有9种逻辑运算符: #not# 否定该操作数的逻辑值,#not#是一个一元运 算符 #eq# 若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等,则为true;否则为flase #gt# 若左边的运算符严格大于右边的运算符,则为 true;否则为flase #ge# 若左边的运算符大于或等于右边的运算符,则为 true;否则为flase #lt# 若左边的运算符严格小于右边的运算符,则为 true;否则为flase
例:给定一个直角三角形,求包含该三角形的最小正 方形。 C E 解:如图所示
a
x
B b
A
D
model: sets: object/1..3/: f; endsets data: a, b = 3, 4; !两个直角边长,修改很方便; enddata f(1) = a * @sin(x); f(2) = b * @cos(x); f(3) = a * @cos(x) + b * @sin(x); min = @smax(f(1),f(2),f(3)); @bnd(0,x,1.57); end
第二讲 lingo的运算符和函数
1.基本运算符
算术运算符
算术运算符是针对数值进行操作的。LINGO提供了 5种二元运算符: ^ 乘方 ﹡ 乘 / 除 ﹢ 加 ﹣ 减 LINGO唯一的一元算术运算符是取反函数“﹣”。 这些运算符的优先级由高到底为: 高: ﹣(取反), ^ , ﹡/ ,﹢﹣ 低 运算符的运算次序为从左到右按优先级高低来执 行。运算的次序可以用圆括号“()”来改变。 如:2﹣5/3,(2﹢4)/5等等。

lingo用法总结(精品文档)

ji例程1、model:sets:quarters/1..4/:dem,rp,op,inv;endsetsmin=@sum(quarters:400*rp+450*op+20*inv);@for(quarters(i):rp<=40);@for(quarters(i)|i#gt#1:inv(i)=inv(i-1)+rp(i)+op(i)-dem(i););inv(1)=10+rp(1)+op(1)-dem(1);data:dem=40 60 75 25;enddataend例程2、model:sets:quarters/1..4/:dem,rp,op,inv;endsetsmin=@sum(quarters:400*rp+450*op+20*inv);@for(quarters(i):rp<=40);@for(quarters(i)|i#gt#1:inv(i)=inv(i-1)+rp(i)+op(i)-dem(i););inv(1)=a+rp(1)+op(1)-dem(1);data:dem=40 60 75 25;a=?enddataend•LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除注释语句和TITLE语句外的其他语句都是约束条件,因此语句的顺序并不重要。

•LINGO中函数一律需要以“@”开头•Lingo中的每个语句都以分号结尾•用LINGO解优化模型时已假定所有变量非负(除非用限定变量取值范围的函数@free或@sub或@slb另行说明)。

•以感叹号开始的是说明语句(说明语句也需要以分号结束))•理解LINGO建模语言最重要的是理解集合(Set)及其属性(Attribute)的概念。

•一般来说,LINGO中建立的优化模型可以由5个部分组成,或称为5“段”(SECTION):(1)集合段(SETS):以“ SETS:” 开始,“ENDSETS”结束,定义必要的集合变量(SET)及其元素(MEMBER,含义类似于数组的下标)和属性(ATTRIBUTE,含义类似于数组)。

数学建模必备LINGO在多目标规划和最大最小化模型中的应用

数学建模必备LINGO 在多目标规划和最大最小化模型中的应用一、多目标规划的常用解法多目标规划的解法通常是根据问题的实际背景和特征,设法将多目标规划转化为单目标规划,从而获得满意解,常用的解法有:1.主要目标法确定一个主要目标,把次要目标作为约束条件并设定适当的界限值。

2.线性加权求和法对每个目标按其重要程度赋适当权重0≥i ω,且1=∑ii ω,然后把)(x f i ii ∑ω作为新的目标函数(其中p i x f i ,,2,1),( =是原来的p 个目标)。

3.指数加权乘积法设p i x f i ,,2,1),( =是原来的p 个目标,令∏==pi a i ix f Z 1)]([其中i a 为指数权重,把Z 作为新的目标函数。

4.理想点法先分别求出p 个单目标规划的最优解*i f ,令∑-=2*))(()(iifx f x h然后把它作为新的目标函数。

5.分层序列法将所有p 个目标按其重要程度排序,先求出第一个最重要的目标的最优解,然后在保证前一个目标最优解的前提条件下依次求下一个目标的最优解,一直求到最后一个目标为止。

这些方法各有其优点和适用的场合,但并非总是有效,有些方法存在一些不足之处。

例如,线性加权求和法确定权重系数时有一定主观性,权重系数取值不同,结果也就不一样。

线性加权求和法、指数加权乘积法和理想点法通常只能用于两个目标的单位(量纲)相同的情况,如果两个目标是不同的物理量,它们的量纲不相同,数量级相差很大,则将它们相加或比较是不合适的。

二、最大最小化模型在一些实际问题中,决策者所期望的目标是使若干目标函数中最大的一个达到最小(或多个目标函数中最小的一个达到最大)。

例如,城市规划中需确定急救中心的位置,希望该中心到服务区域内所有居民点的距离中的最大值达到最小,称为最大最小化模型,这种确定目标函数的准则称为最大最小化原则,在控制论,逼近论和决策论中也有使用。

最大最小化模型的目标函数可写成)}(,),(),(max{min 21X f X f X f p X或)}(,),(),(min{max 21X f X f X f p X式中T n x x x X ),,,(21 是决策变量。

LINGO在数学建模中的应用


LINGO的菜单
1.File(文件菜单) • Export file(输出特殊格式文件) • Database User Info(用户基本信息) 2.Edit Menu(编辑菜单) • Paste Special(选择性粘贴) • Go to Line(光标移到某一行) • Match Parenthesis(匹配括号) • Insert New Object(插入新对象)
3.关系运算符 = 表达式左右相等 <= 表达式左边小于或等于右边 >= 表达式左边大于或等于右边 注:Lingo没有单独的<和>
A<B A B, 是一个小的正数
Lingo函数
• Lingo提供了五十几个内部函数,所有函数都 以字符@开头
• 数学函数 @ABS(x),@SIN(X),@COS(x),@TAN(X), @LOG(X),@EXP(X),@SIGN(X), @SMAX(X1,…,Xn),@SMIN(X1,…,Xn) @FLOOR(X),@LGM(X)
LINGO的菜单
3.LINGO • Debug(调试) • Model Statistics(模型资料统计) • Look(查看)
LINGO的菜单
4.Window • Command Window(命令行窗口) • Status Window(状态窗口) 5.Help • Help Topics(帮助主题) • Register(在线注册) • Auto Update(自动更新) • About Lingo(关于Lingo)
41,52,现有8个客户各要一批货,数量分别为35,37,22,32, 41,32,43,38,各供货栈到8个客户的单位运价如表1. 如何确定各供货栈到8个客户的货物调运量,使总的运费最小?
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Lingo软件在数学建模竞赛中的应用[收稿日期] 2010-06-20[基金项目] 福建交通职业技术学院科技发展基金(Ky1001)。

数学建模(Mathematical Modeling)是对现实世界的一个特定对象,为了一个特定目的,根据特有的内在规律,作出一些必要的简化假设,运用适当的数学工具,得到一个数学结构的过程[1]。

1 非线性规划模型历年全国大学生数学建模竞赛都需解决最优生产计划、最优分配最优设计、最优决策、最佳管理等较为复杂的非线性规划问题,模型由决策变量、目标函数、约束条件三个要素组成,其计算量较大,可用Lingo软件求解。

2006“高教社杯”全国大学生数学建模竞赛C题[3]第二小题,设易拉罐是一个正圆柱体,什么是它的最优设计?经测量得圆柱的上底厚度为a=0.036 cm、下底厚度为c=0.040 cm、圆柱侧壁厚度为b=0.012 cm?А?悸且桌?罐设计美观性、便于把握以及材料节省等因素,于是建立目标规划模型如下:目标函数: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.0 12利用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;EndLingo以语句Model开始,以语句End结束,这两个语句单独成一行。

语句分为集合定义部分、数据初始化部分、目标函数、约束条件部分,这几个部分的先后次序无关紧要。

min开头的语句表示求目标函数最小值。

“!”开头的语句是注释语句,Lingo不作运行,每条中间语句必须以“;”号作为结尾。

注意乘号不能省略,语句不计大小写。

运行SOVLE,得部分结果如下:Local optimal solution found at iteration:1151Objective value:5.157389VariableValueReduced CostB0.1200000E-01 0.000000R 3.268480 0.000000H 10.57760 0.000000A0.3600000E-01 0.000000C0.4000000E-01 0.000000R2 5.907836 0.000000即底面半径为3.268480,圆柱体高为10.57760时,用料体积为5.157389,此为最优设计。

第三题亦可按此方法迎刃而解。

上例充分体现Lingo其简单易学、方便快捷的优越性。

2 曲线拟合模型曲线拟合在众多领域中得到了广泛的应用,将曲线拟合问题转化为数学规划模型,并使用Lingo软件来求解,该方法简便快捷,是实现曲线拟合的一个有效方法。

2004年全国大学生数学建模竞赛C题(酒后驾车)中给出某人短时间内喝下两瓶啤酒后,间隔一定时间得到数据。

以下建立无约束的非线性规划模型[2]。

间隔一定时间t测量他的血液中酒精含量y(毫克/百毫升),得到数据如表1:表1 2004年全国大学生数学建模竞赛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;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,1 4,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(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,运行结果如下: Local optimal solution found at iteration: 98 Objective value: 225.3417VariableValueReduced CostA1114.43230.3477201E-08A20.18550140.000000A32.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,2 2,3 2,16 3,4 3,17 4,5 4,18 5,6 5,19 6,7 6,20 7,8 7,21 7,22 8,9 8,23 9,10 9,24 10,11 10,25 11,12 11,26 12,13 12,27 13,14 13,28 14,15 14,29 14,30 15,31 15,32 16,33 17,33 18,33 19,33 20,33 21,33 22,33 23,33 24,33 25,33 26,33 27,33 28,33 29,33 30,33 31,33 32,33/:D ENDSETSDATA:D=10.4 30.1 0.3 75.0 0.2 60.6 60 19.4 1 20.5 0.5 20.1 1.0 3.1 68.0 1.2 48.0 4.2 30.0 7.0 22.0 1.0 21.0 1.0 42.0 6.2 50.0 11.0 3.0 2.0 2.0 205.0 190.0 125.0 110.0 95.0 85.0 85.0 70.0 110.0 135.0 145.0 155.0 165.0 180.0 175.0 190.0 190.0;ENDDATAF( @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#”表示小于。

运行此程序,得部分结果如下:Feasible solution found at iteration:0VariableValueF( 1)215.7000F( 2)205.3000即可求得单位钢管从S2到Aj的最小运费F(j)(j=1,…,15)如下: 表2 单位钢管从S2到Aj的最小运费F(j)单位钢管的运输费F(j)单位钢管的运输费F(1)215.7000F(2)205.3000F(3)190.2000F(4)171.6000F(5)111.0000F(6)95.50000F(7)86.00000F(8)71.20000F(9)114.2000F(10)142.0000F(11)146.0000F(12)156.0000F(13)171.2000F(14)178.0000F(15)192.0000同理可求得S1,S3,S4,S5,S7,S7各点到目的点的最优单位运费。

相关文档
最新文档