福建农林大学计算机与信息学院
(数学类课程)
课程名称:姓 名:系:专 业:年 级:学 号:指导教师:职 称:实验报告
数学模型 周颖 信息与计算科学 信息与计算科学
2012级 3126003056 姜 永 副教授
2014年 4月14日
实验项目列表
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 实验项目名称 数学规划模型建立及其软件求解 微分方程模型与数据拟合应用 统计回归模型及其软件求解 成绩 指导教师 姜 永 姜 永 姜 永
福建农林大学计算机与信息学院数学类实验报告(一)
系: 信息与计算科学 专业: 信息与计算科学 年级: 2012级 姓名: 周颖 学号: 3126003056 实验课程: 数学模型 实验室号: 田C507 实验设备号:56 实验时间: 2014/3/31 指导教师签字: 成绩: 1.实验项目名称:数学规划模型建立及其软件求解 2.实验目的和要求:
了解数学规划的的基本理论和方法,并用于建立实际问题的数学规划模型;会用LINGO软件解
数学规划问题并对结果加以分析应用。
3.实验使用的主要仪器设备和软件:联想启天M430E电脑;LINGO12.0或以上版本。 4.实验的基本理论和方法: 数学规划模型的一般形式为
Minxz?f?x?
s.t.gi?x??0,i?1,2,...,m.
其中f?x?表示目标函数,gi?x??0?i?1,2,...,m?为约束条件。
LINDO/LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件包。LINDO用于求解线性规划和二次规划问题,LINGO除了具有LINDO的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解,等等。LINDO/LINGO软件的最大特色在于可以允许优化模型中的决策变量时整数,而且执行速度很快。
线性优化求解程序通常使用单纯形算法,对LINDO/LINGO软件,为了能解大规模问题,也可以使用内点算法。非线性优化求解程序采用的是顺序线性规划法,即通过迭代求解一系列线性规划来达到求解非线性规划的目的。
5.实验内容与步骤:
问题一:某公司将3种不同含硫量的液体原料(分别记为甲、乙、丙)混合生产两种产品(分别记为A,B),按照生产工艺的要求,原料甲、乙必须首先倒入混合池中混合,混合后的液体再分别与原料丙混合生产A,B.已知原料甲,乙,丙的含硫量分别是3%,1%,2%,进货价格分别为6千元/ t,16千元/ t ,10千元/t ,产品A,B的含硫量分别不能超过2.5%,1.5%,售价分别为9千元/t,15千元/t,根据市场信息,原料甲、乙、丙的供应量都不能超过500t;产品A,B的最大市场需求量分别为100t ,200t.
(1) 应如何安排生产?
(2) 如果产品A的最大市场需求量增长为600t,应如何安排生产?
(3) 如果乙的进货价格下降为13千元/t,应如何安排生产?分别对(1)、(2)两种情况进行讨论.
解:
1
建立模型:
x1,x2,x3表示生产A需要的甲乙丙的量,x4,x5,x6表示生产B需要的甲乙丙的量,y1,y2表示A,B的产量,建立数学模型:
33222maxz?9?xi1?15?xi2?6?x1j?16?x2j?10?x3j ⑴
i?1i?1j?1j?1j?1??x11:?x11?x12??x21:?x21?x22??3?3%x11?1%x21?2%x31?2.5%?xi1?i?1?3?3%x11?1%x21?2%x31?1.5%?xi1?i?1?3 ?3%x12?1%x?22?2%x32?1.5%?xi2i?1?2??xij?500?i?1,2,3??j?1?33???xi1?100,?xi2?200?i?1i?1?xij?0?i?1,2,3,j?1,2?编写程序:
Max=9*y1+15*y2-6*(x1+x4)-16*(x2+x5)-10*(x3+x6); y1=x1+x2+x3;
y2=x4+x5+x6;
(x1*0.03+x2*0.01+x3*0.02)/y1<=0.025; (x4*0.03+x5*0.01+x6*0.02)/y2<=0.015; x1*x5=x2*x4; y1<=100; y2<=200; x1+x4<=500; x2+x5<=500; x3+x6<=500; 程序运行结果为:
Global optimal solution found.
Objective value: 400.0000 Objective bound: 400.0000 Infeasibilities: 0.1351934E-12 Extended solver steps: 4 Total solver iterations: 283
Variable Value Reduced Cost Y1 0.000000 0.000000 Y2 200.0000 0.000000 X1 0.000000 0.000000 X4 0.000000 2.000000 X2 0.000000 7.000000
2
⑵
X5 100.0000 0.000000 X3 0.000000 1.000000
X6 100.0000 0.000000 结果分析:
(1)用原料乙、丙各100t生产B产品,得到的利润最大。
(2)若用原料甲、丙各300t生产A产品,得到600千元,则60万元利润最大。 (3)如果乙的进货价格下降为13千元/t,对于问题(1)把目标函数⑴式改成: MAXz?9x11?9x21?9x31?15x12?15x22?15x32?6x11?6x12?13x21?13x22?10x31?10x32
则在lingo软件中求解得到的最优解为750千元,即75万元,最优方案为用50t原料甲和150t乙生产B产品。
同理,问题二最优解不变,最优方案也是用50t原料甲和150t乙生产B产品,得到75万元。
问题二:某造船厂需要决定下四个季度的帆船生产量。下四个季度的帆船需求量分别是40条、60条、75条和25条,这些需求必须按时满足。每个季度正常的生产能力是40条帆船,每条船的生产费用为4万元。如果加班生产,每条船的生产费用为4.5万元。每个季度末,每条船的库存为2000元。假定生产提前期为0,初始库存为10条船。如何安排生产可使总费用最小?
建立模型:
用xi表示第i(i?1,2,3,4)个季度帆船的生产量,Y表示库存的总费用。根据题意可知我们所求的问题的数学模型的目标函数为:
??xi?40xi?40??x?40xi?40????4.5??i???Y minz???4?????40?2???222i?1????????4s.t.
?Y?0.2???x1?30???x1?x2?90???x1?x2?165???x?10?401?? ?x1?x2?30?60?x?x?x?90?753?12??x1?x2?x3?x4?165?25编写程序:
根据上述模型,在lingo软件窗口中进行编程:
MIN=4*(X1+40-@ABS(X1-40))/2+4.5*((X1+40)/2+@ABS(X1-40)/2-40)+4*(X2+40-@ABS(X2-40))/2
+4.5*((X2+40)/2+@ABS(X2-40)/2-40)+4*(X3+40-@ABS(X3-40))/2+4.5*((X3+40)/2+@ABS(X3-40)/2-40)+4*(X4+40-@ABS(X4-40))/2+4.5*((X4+40)/2+@ABS(X4-40)/2-40)+Y;
Y=0.2*(X1+10-40)+0.2*(X1+X2-30-60)+0.2*(X1+X2+X3-90-75); X1+10>=40; X1+X2-30>=60;
X1+X2+X3-90>=75;
X1+X2+X3+X4-165>=25; 结果分析:
将编好的程序在lingo软件中进行执行可得以下结果:
Linearization components added: Constraints: 32
3