数学建模软件报告
时间:2025-07-04
时间:2025-07-04
数学建模软件报告
专业名称:热能与动力工程(2)班 姓名:陈权书
学号:201010610237
在数学建模中,LINDO是一种专门用于求解数学规划问题的软件包。由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。因此在数学、科研和工业界得到广泛应用。LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。也可以用于一些非线性和线性方程组的求解以及代数方程求根等。LINDO中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。
一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)。整数规划(IP—Integer Programming)问题。其中LINDO 6 .1 学生版至多可求解多达300个变量和150个约束的规划问题。其正式版(标准版)则可求解的变量和约束在1量级以上。
LINDO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。虽然LINDO和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。
如:有四个工人,要分别指派他们完成四项不同的工作,每个人做各项工作所消耗的时间如表。问应该如何指派,才能使总的消耗时间为最小?
这是一道典型的整数规则问题。
我们记派第I去做工作记为Xij
注意到每人只能做一项工作。每项工作一人做。我们得到目标函数为约束条件:
min
15x11+19x21+26x31+19x41+18x12+23x22+17x32+21x42+24x13+22x23+16x33+23x43+24x14+18x24+19x34+17x44
ST
x11+x12+x13+x14=1
x21+x22+x23+x24=1
x31+x32+x33+x34=1
x41+x42+x43+x44=1
x11+x21+x31+x41=1
x12+x22+x32+x42=1
x13+x23+x33+x43=1
x14+x24+x34+x44=1
end
int 16
运行后我们可得到最优目标值为70
当 ,其余为0时。(具体的Reports 我们略去)
在用LINDO解整数规划(IP)问题时,只要在END后加上标识即可,其中解0/1规划的用命令。
INT name 或 INT n (n 指前n 个变量标识为0/1型)解混合型整数规划则用GIN来标识。
LINDO解整数规划对变量的限制为50个。(指LINDO 6.1学生版)。所以说,尽管LINDO对整数规划问题是很有威力。要有效地使用还是需要一定技术的。这是因为,人们很容易将一个本质上很简单的问题列成一个输入模型。从而有可能会导致一个冗长的分支定界计算。
例3 用LINDO解目标规划
由于LINDO不能直接求解目标规划问题,这是否就意味着LINDO失去了效力呢?不是的。
由求解目标规划问题的有效算法——序贯式算法可知其实目标规划我们常采取分解成前面二种办法而已。
例如算:min a=((d1_+d1),(2d2+d3))
G1:x1-10x2+d1_-d1=50
G2:3x1+5x2+d2_-d2=20
G3:8x1+6x2+d3_-d3=100
xi(i=1,2),dj_,dj(j=1,2,3)>=0
先求目标函数的最优值
min d1_+d1
ST
x1-10x2+d1_-d1=50
3x1+5x2+d2_-d2=20
end
求得D1_+D1 的最优值为0
然后再求
min 2d2+d3
ST
x1-10x2+d1_-d1=50
3x1+5x2+d2_-d2=20
8x1+6x2+d3_-d3=100
d1_+d1=0
end
即可算得第二级最优值2d2+d3
例1 LINDO虽亦可求解二次规划问题。(但我认为它在输入对不如用LINGO方
便,用LINDO输入时要先作偏导数计算不如LINGO哪样可直接输入。
例2 min f(x)=(x1-1)^2+(x2-2)^2
x2-x1=1
x1+x2<=2
x1>=0,x2>=0
先来说一说如何使用LINGO
一般来说LINGO多用于解决大规模数学规划。
用时要注意以下几点:
(1) 每条语句后必须使用分号“;”结束。问题模型必须由MODEL命令开始,END结束。
(2) 用MODEL命令来作为输入问题模型的开始,格式为MODEL:statement (语句)。
(3) 目标函数必须由“min =”或“max =”开头。
则上面的例子的输入就为
modul:
min=(x1-1)^2+(x2-2)^2;
x2-1=1;
x1+x2<=2;
end
我们即可得到最优值0.5。当X1=0.5,X2=1.5,及灵敏度分析。我们还可得作图分析。
在LINGO 外还有就是MATLAB,也是非常实用的软件。MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.
当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.
开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.
MATLAB的语言特点
一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计 …… 此处隐藏:2278字,全部文档内容请下载后查看。喜欢就下载吧 ……