论文部分内容阅读
【摘要】文章首先就数学建模的概念、近些年来常出现的问题和数学建模竞赛的优秀工具——Lingo软件作了简要介绍,然后着重介绍了笔者在参加全国大学生数学建模竞赛集训中关于此软件教学的一些方法。
【关键词】数学建模 数学软件 Lingo
【中图分类号】G642 【文献标识码】A 【文章编号】1009-9646(2008)09(a)-0153-01
1 数学建模简介
数学建模是对现实世界的一个特定对象为了一个特定目的,根据特有的内在规律做出一些必要的简化假设,运用适当的数学工具,得到一个数学结构的过程。在电工数学建模以及全国大学生数学建模竞赛中最常碰到的是一类决策问题,即在一系列限制条件下寻求使某个或多个指标达到最大或最小,这种决策问题通常称为最优化问题。每年的数学建模比赛都有一些比如解决最优生产计划、最优决策等最优化问题,它主要由决策变量、目标函数、约束条件三个要素组成。当遇到实际的最优化问题转化为数学模型,对于较大的计算量可以使用Lingo系列优化软件包求解。
2 Lingo软件简介及其在建模比赛中的应用
Lindo和Lingo专门用于处理线性规划与非线性规划方面问题。求解最优化问题的软件包,其线性、非线性和整数规划求解程序已经被数千万的公司用来做最大化利润和最小化成本的分析。Lindo和Lingo能在产品分销、成分混合、存货管理、资源配置等问题的数学建模中发挥巨大作用。Lingo是一套快速、简单、更有效率求解线性、非线性与整合最佳化模型的完整工具,除了具有Lindo的全部功能外还可用于求解非线性规划,也可用于一些线性和非线性方程组的求解等。Lingo提供了完整的整合套件,包含:求解最佳化模型的语言、完整建构与编辑问题的环境以及快速求解问题套件。其内部优化问题的建模语言为建立大规模数学规划模型提供了极大方便,包括提供的50多个内部函数,其中有常用数学函数、集合操作函数和自编函数等供参赛者建立优化模型时调用,通过这些函数的使用能大大减少参赛者的编程工作量,使求解大型规划变得不再费时费力。并提供了与其它数据文件的接口,易于方便地输入、求解和分析大规模最优化问题。这两个软件的最大特色在于其具有的快速建构模型、轻松编辑数据、交互式模型或建立完成应用、丰富的文件支持等特点, 2003年的全国大学生数学建模竞赛中D题(抢渡长江)的优化问题、2005年全国大学生数学建模竞赛中B题(DVD在线租赁)、2007年全国电工数学建模竞赛中A题(机组组合问题)等可以充分展示用Lingo建模语言求解的优越性。
3 Lingo软件短期训练教学策略
为了让学生尽快掌握学习这个软件,在培训时本人借鉴财经大学的教学经验以及本人在07年电工数学建模竞赛带队的经验总结了以下我们短期学习该软件的方法。
3.1 模仿式(即学即用Lingo软件)
所谓模仿式就是让学生照着同类模型的编程格式练习。用数学建模当中具有的普遍性的四种模型给学生学习软件,在教学过程中用幻灯片给学生逐一演示。
一般模型:
线性规划:
在Lingo窗口中输入如下代码:
然后单击工具条上的即可。
数据量较小的模型:
2004年全国大学生数学建模竞赛C题(酒后驾车)中给出某人在短时间内喝下两瓶啤酒后,间隔一定时间得到数据。建立了无约束的非线性规划模型:
程序如下:
Model
Sets:
Bac/r1..r23/:T,Y;
Endsets
Data:
T=0.25,0.5,0.75,1,1.5,2,2.5,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16;
Y=30,68,75,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
Lingo求解多元函数极小值时内部所采用的算法效率高,速度快,精度高,无需初始值,能准确地得到回归系数的最小二乘解,程序简洁,易于修改和扩展。
一些特殊模型:
当出现分段函数时如何解决,2000年全国大学生数学建模竞赛B题(钢管订购和运输)就是这样的例子。Lingo软件是利用符号“#LT#”即逻辑运算符,用来连接两个运算对象,当两个运算对象不相等时结果为真,否则为假。类似的逻辑运算符共有9个。
数据量较大的模型:
当遇到数据量比较大的题型的时候,Lingo的输入和输出函数可以把模型和外部数据(文本文档、数据库和电子表格等)连接起来。比如2005年全国大学生建模赛题B就是需要处理1000×100维数据的题型。它的Lingo程序如下:
model:
sets:
guke/c0001..c1000/:zulin;
dvd/d001..d100/:zongliang;
links(guke,dvd):x,pianhao;
endsets
max=@sum(1inks:x/(pianhao) k);
@for(guke(i):@sum(dvd(j):x(i,j))<-3);
@for(dvd(j):@sum(guke(i):x(i,j))<=zongliang);
@for(1inks:@bin(x));k-2;
利用@OLE命令便可以轻易的调取出需要的数据.程序如下:
zongliang=@OLE( ‘f:\B2005Table2.xls’,‘zongliang’ );
pianhao=@OLE( ‘f:\B2005Table2.xls’,‘pianhao’ );
通过上面的编译之后很容易出结果,但是由于结果是一个1000×100的数值矩阵,因此同样用@OLE命令,利用它将结果输出到表格,可以更直观的读取。
程序语言:@OLE(‘f:\k1.xls’,‘x’)=x;
将以上四个模型的编程形式逐一讲授,学生只需将它们对应的程序进行备份,当比赛中遇到同类型时调用修改就可以了。
3.2 函数对应法,边学边练
对模型求解的Lingo编程形式同学们已经有了了解,这时候需要进一步到细节上去,具体练习一些函数的表达式 。教练组针对数学软件的特点,采取了上午讲课,下午上机的教学方式,这样学生在上机过程中可就上午所学知识中存在的疑问向老师提出,教师也可针对性地进行一些辅导和讲授。
参考文献
[1] 杨涤尘.数学软件与数学建模[J].湖南人文科技学院学报,2006,(6).
[2] 常新功,郝丽霞.如何让学生短时间内掌握Maple软件[J].山西财经大学学报(高等教育版),2001,52(3).
[3] 周甄川.数学建模中的优秀软件——Lingo[J].黄山学院学报,2007,9(3).
[4] 袁新生,龙门.非线性曲线拟合的三种软件解法比较[J].徐州工程学院学报,2005,20(3).
[5] 袁新生,廖大庆.用Lingo6.0求解大型数学规划[J].工科数学,2001,17(5).
[6] 姜英姿.大规模数据的计算机处理技术[J].徐州工程学院学报,2005,20(5).
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
【关键词】数学建模 数学软件 Lingo
【中图分类号】G642 【文献标识码】A 【文章编号】1009-9646(2008)09(a)-0153-01
1 数学建模简介
数学建模是对现实世界的一个特定对象为了一个特定目的,根据特有的内在规律做出一些必要的简化假设,运用适当的数学工具,得到一个数学结构的过程。在电工数学建模以及全国大学生数学建模竞赛中最常碰到的是一类决策问题,即在一系列限制条件下寻求使某个或多个指标达到最大或最小,这种决策问题通常称为最优化问题。每年的数学建模比赛都有一些比如解决最优生产计划、最优决策等最优化问题,它主要由决策变量、目标函数、约束条件三个要素组成。当遇到实际的最优化问题转化为数学模型,对于较大的计算量可以使用Lingo系列优化软件包求解。
2 Lingo软件简介及其在建模比赛中的应用
Lindo和Lingo专门用于处理线性规划与非线性规划方面问题。求解最优化问题的软件包,其线性、非线性和整数规划求解程序已经被数千万的公司用来做最大化利润和最小化成本的分析。Lindo和Lingo能在产品分销、成分混合、存货管理、资源配置等问题的数学建模中发挥巨大作用。Lingo是一套快速、简单、更有效率求解线性、非线性与整合最佳化模型的完整工具,除了具有Lindo的全部功能外还可用于求解非线性规划,也可用于一些线性和非线性方程组的求解等。Lingo提供了完整的整合套件,包含:求解最佳化模型的语言、完整建构与编辑问题的环境以及快速求解问题套件。其内部优化问题的建模语言为建立大规模数学规划模型提供了极大方便,包括提供的50多个内部函数,其中有常用数学函数、集合操作函数和自编函数等供参赛者建立优化模型时调用,通过这些函数的使用能大大减少参赛者的编程工作量,使求解大型规划变得不再费时费力。并提供了与其它数据文件的接口,易于方便地输入、求解和分析大规模最优化问题。这两个软件的最大特色在于其具有的快速建构模型、轻松编辑数据、交互式模型或建立完成应用、丰富的文件支持等特点, 2003年的全国大学生数学建模竞赛中D题(抢渡长江)的优化问题、2005年全国大学生数学建模竞赛中B题(DVD在线租赁)、2007年全国电工数学建模竞赛中A题(机组组合问题)等可以充分展示用Lingo建模语言求解的优越性。
3 Lingo软件短期训练教学策略
为了让学生尽快掌握学习这个软件,在培训时本人借鉴财经大学的教学经验以及本人在07年电工数学建模竞赛带队的经验总结了以下我们短期学习该软件的方法。
3.1 模仿式(即学即用Lingo软件)
所谓模仿式就是让学生照着同类模型的编程格式练习。用数学建模当中具有的普遍性的四种模型给学生学习软件,在教学过程中用幻灯片给学生逐一演示。
一般模型:
线性规划:
在Lingo窗口中输入如下代码:
然后单击工具条上的即可。
数据量较小的模型:
2004年全国大学生数学建模竞赛C题(酒后驾车)中给出某人在短时间内喝下两瓶啤酒后,间隔一定时间得到数据。建立了无约束的非线性规划模型:
程序如下:
Model
Sets:
Bac/r1..r23/:T,Y;
Endsets
Data:
T=0.25,0.5,0.75,1,1.5,2,2.5,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16;
Y=30,68,75,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
Lingo求解多元函数极小值时内部所采用的算法效率高,速度快,精度高,无需初始值,能准确地得到回归系数的最小二乘解,程序简洁,易于修改和扩展。
一些特殊模型:
当出现分段函数时如何解决,2000年全国大学生数学建模竞赛B题(钢管订购和运输)就是这样的例子。Lingo软件是利用符号“#LT#”即逻辑运算符,用来连接两个运算对象,当两个运算对象不相等时结果为真,否则为假。类似的逻辑运算符共有9个。
数据量较大的模型:
当遇到数据量比较大的题型的时候,Lingo的输入和输出函数可以把模型和外部数据(文本文档、数据库和电子表格等)连接起来。比如2005年全国大学生建模赛题B就是需要处理1000×100维数据的题型。它的Lingo程序如下:
model:
sets:
guke/c0001..c1000/:zulin;
dvd/d001..d100/:zongliang;
links(guke,dvd):x,pianhao;
endsets
max=@sum(1inks:x/(pianhao) k);
@for(guke(i):@sum(dvd(j):x(i,j))<-3);
@for(dvd(j):@sum(guke(i):x(i,j))<=zongliang);
@for(1inks:@bin(x));k-2;
利用@OLE命令便可以轻易的调取出需要的数据.程序如下:
zongliang=@OLE( ‘f:\B2005Table2.xls’,‘zongliang’ );
pianhao=@OLE( ‘f:\B2005Table2.xls’,‘pianhao’ );
通过上面的编译之后很容易出结果,但是由于结果是一个1000×100的数值矩阵,因此同样用@OLE命令,利用它将结果输出到表格,可以更直观的读取。
程序语言:@OLE(‘f:\k1.xls’,‘x’)=x;
将以上四个模型的编程形式逐一讲授,学生只需将它们对应的程序进行备份,当比赛中遇到同类型时调用修改就可以了。
3.2 函数对应法,边学边练
对模型求解的Lingo编程形式同学们已经有了了解,这时候需要进一步到细节上去,具体练习一些函数的表达式 。教练组针对数学软件的特点,采取了上午讲课,下午上机的教学方式,这样学生在上机过程中可就上午所学知识中存在的疑问向老师提出,教师也可针对性地进行一些辅导和讲授。
参考文献
[1] 杨涤尘.数学软件与数学建模[J].湖南人文科技学院学报,2006,(6).
[2] 常新功,郝丽霞.如何让学生短时间内掌握Maple软件[J].山西财经大学学报(高等教育版),2001,52(3).
[3] 周甄川.数学建模中的优秀软件——Lingo[J].黄山学院学报,2007,9(3).
[4] 袁新生,龙门.非线性曲线拟合的三种软件解法比较[J].徐州工程学院学报,2005,20(3).
[5] 袁新生,廖大庆.用Lingo6.0求解大型数学规划[J].工科数学,2001,17(5).
[6] 姜英姿.大规模数据的计算机处理技术[J].徐州工程学院学报,2005,20(5).
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”