数学模型课程设计三.docx
《数学模型课程设计三.docx》由会员分享,可在线阅读,更多相关《数学模型课程设计三.docx(16页珍藏版)》请在冰豆网上搜索。
![数学模型课程设计三.docx](https://file1.bdocx.com/fileroot1/2023-2/21/1fdf6493-9b7d-4c96-a350-8272948b2505/1fdf6493-9b7d-4c96-a350-8272948b25051.gif)
数学模型课程设计三
课程设计名称:
设计三:
数学规划指导教师:
张莉
课程设计时数:
8课程设计设备:
安装了Matlab、LINDO、LINGO软件的计算机
课程设计日期:
实验地点:
第五教学楼北902
课程设计目的:
1.了解线性规划、整数规划、0-1规划、非线性规划的基本内容;
2.掌握MATLAB优化工具箱求解各类规划问题;
3.掌握用LINDO软件求解线性规划问题;
4.掌握用LINGO软件求解线性规划和非线性规划问题。
课程设计准备:
1.在开始本实验之前,请回顾相关内容;
2.需要一台准备安装WindowsXPProfessional操作系统和装有数学软件的计算机。
课程设计内容及要求
要求:
设计过程必须包括问题的简要叙述、问题分析、实验程序及注释、实验数据及结果分析和实验结论几个主要部分。
1.任务分配问题:
某车间有甲、乙两台机床,可用于加工三种工件,假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。
问怎么样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?
要求用MATLAB和LINGO软件进行求解,并比较其结果。
车床
类型
单位工件所需加工台时数
单位工件的加工费用
可用
台时数
工件1
工件2
工件3
工件1
工件2
工件3
甲
0.4
1.1
1.0
13
9
10
800
乙
0.5
1.2
1.3
11
12
8
900
问题简述:
有甲、乙两台车床可用台时数分别为:
800和900,三种工件的数量分别为400、600和500,问为使费用最小,应怎样安排工作任务?
问题分析:
为使费用最小,则可使单位工件所需加工台时数少和单位工件的加工费用小,所以可以设甲加工工件1、工件2、工件3的数量分别为
、
、
,乙加工工件1、工件2、工件3的数量分别为
、
、
,最小费用为Z。
建立线性规划模型如下:
实验程序及注释:
Matlab程序如下:
%在matlabM文件下输入如下代码:
z=[1391011128];%目标函数
A=[0.41.11000;0000.51.21.3];%不等式约束
B=[800;900];
aeq=[100100;010010;001001];%等式约束
beq=[400;600;500];
vlb=zeros(1,6);%参数的上下限
vub=[];
[x,zval]=linprog(z,A,B,aeq,beq,vlb,vub)%返回x处的函数值
程序结果如下:
x=
0.0000
600.0000
0.0000
400.0000
0.0000
500.0000
zval=1.3800e+004
得出结果:
甲生产工件2:
600件,乙生产工件1:
400件,工件3:
500件,最小费用为13800元。
Lingo程序如下:
model:
min=13*x11+9*x12+10*x13+11*x21+12*x22+8*x23;
x11+x21=400;
x12+x22=600;
x13+x23=500;
0.4*x11+1.1*x12+1.0*x13<=800;
0.5*x21+1.2*x22+1.3*x23<=900;
@gin(x11);@gin(x12);@gin(x13);@gin(x21);@gin(x22);@gin(x23);
end
程序结果为:
Globaloptimalsolutionfound.
Objectivevalue:
13800.00
Objectivebound:
13800.00
Infeasibilities:
0.000000
Extendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
X110.00000013.00000
X12600.00009.000000
X130.00000010.00000
X21400.000011.00000
X220.00000012.00000
X23500.00008.000000
RowSlackorSurplusDualPrice
113800.00-1.000000
20.0000000.000000
30.0000000.000000
40.0000000.000000
5140.00000.000000
650.000000.000000
结果为:
最小费用为13800元,甲生产工件2:
600件,乙生产工件1:
400件,工件3:
500件,和matlab得出的结果一样。
但lingo更为简单明了,让人一看就知道,目标函数和约束条件。
2.某厂每日8小时的产量不低于1800件,为了进行质量控制,计划聘请两种不同水平的检验员,且每种检验员的日产量不高于1800件。
一级检验员的标准为:
速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:
速度15件/小时,正确率95%,计时工资3元/小时。
检验员每错检一次,工厂要损失2元,为使总检验费用最省,该工厂应聘一级、二级检验员各几名?
要求用MATLAB和LINGO软件进行求解,并比较其结果。
问题简述:
某厂8小时的产量不低于1800件,一级:
速度25件/小时,正确率98%,工资4元/小时;二级:
速度15件/小时,正确率95%,工资3元/小时。
检验员每错检一次,工厂要损失2元,要求使总检验费最小,求一二级检验员各需多少名。
问题分析:
总检验费为检验员工资和损失费的和,为使总检验费最小,则应合理安排一二级检验员的人数,设一二级检验员的人数分别为
,则一级检验员的工资为:
,损失费为:
,即为
;二级检验员的工资为:
,损失费为:
,即为
。
模型的建立:
目标函数min
即为
即
Matlab程序如下:
%在matlabM文件下输入如下代码:
z=[4036];%目标函数
A=[-5-3];%不等式约束
B=[-45];
aeq=[];
beq=[];
vlb=zeros(1,2);%参数的上下限
vub=[9,15];
[x,zval]=linprog(z,A,B,aeq,beq,vlb,vub)%返回x处的函数值
程序结果为:
x=
9.0000
0.0000
zval=360
得出结果:
一级检验员需要9名,不需二级检验员,最小费用为360元。
Lingo程序如下:
model:
min=40*x1+36*x2;
5*x1+3*x2>=45;
x1<=9;
x2<=15;
@gin(x1);@gin(x2);
end
程序结果为:
Globaloptimalsolutionfound.
Objectivevalue:
360.0000
Objectivebound:
360.0000
Infeasibilities:
0.000000
Extendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
X19.00000040.00000
X20.00000036.00000
RowSlackorSurplusDualPrice
1360.0000-1.000000
20.0000000.000000
30.0000000.000000
415.000000.000000
得出结果和Matlab的结果一样。
此题比较简单,所以matlab和lingo的程序都很简单,二者都可用。
3.某储蓄所每天的营业时间为上午9:
00到下午17:
00,根据经验,每天不同时间段所需要服务员的数量为:
时间段
9~10
10~11
11~12
12~13
13~14
14~15
15~16
16~17
服务员数量
4
3
4
6
5
6
8
8
储蓄所可以雇佣全时和半时两类服务员,全时服务员每天报酬100元,从上午9:
00到下午17:
00工作,但中午12:
00到下午14:
00之间必须安排1小时的午餐时间,;储蓄所每天可以雇用不超过3名的半时服务员,每个半时服务员必须连续工作4小时,报酬为40元。
问:
(1)该储蓄所应该如何雇用全时和半时两类服务员?
(2)如果不能雇用半时服务员,每天至少增加多少经费?
(3)如果雇用半时服务员的数量没有限制,每天可以减少多少经费?
要求用LINDO和LINGO软件分别求解,并比较其结果。
问题简述:
储蓄所雇佣全时和半时两类服务员,全时服务员9:
00—17:
00,报酬100元,但是12:
00—14:
00必须安排1小时的午餐时间;储蓄所每天可以雇用不超过3名的半时服务员,且必须连续工作4小时,报酬40元。
问题分析:
问题要求全时服务员在中午12:
00—14:
00必须安排1小时的午餐时间,所以期间必须有半时服务员,且要求半时服务员必须连续服务4小时。
所以设全时服务员在12:
00—13:
00吃午餐的为
人,在13:
00—14:
00吃午餐的为
人,所以期间必须有半时服务员,所以设9:
00开始服务的半时服务员有:
,10:
00开始服务的半时服务员有:
,11:
00开始服务的半时服务员有:
,12:
00开始服务的半时服务员有:
,9:
00开始服务的半时服务员有:
,建立线性规划模型。
模型的建立:
目标函数:
min
约束条件:
用LINDO求解程序如下:
min100x1+100x2+40y1+40y2+40y3+40y4+40y5
stx1+x2+y1>=4
x1+x2+y1+y2>=3
x1+x2+y1+y2+y3>=4
x2+y1+y2+y3+y4>=6
x1+y2+y3+y4+y5>=5
x1+x2+y3+y4+y5>=6
x1+x2+y4+y5>=8
x1+x2+y5>=8
y1+y2+y3+y4+y5<=3
end
gin7
程序结果为:
OBJECTIVEFUNCTIONVALUE
1)820.0000
VARIABLEVALUEREDUCEDCOST
X12.000000100.000000
X25.000000100.000000
Y10.00000040.000000
Y20.00000040.000000
Y30.00000040.000000
Y41.00000040.000000
Y52.00000040.000000
根据以上结果可得x1=2,x2=5,y1=y2=y3=0,y4=1,y5=2,最小费用为:
820元。
Lingo的程序如下:
model:
min=100*x1+100*x2+40*y1+40*y2+40*y3+40*y4+40*y5;
x1+x2+y1>=4;
x1+x2+y1+y2>=3;
x1+x2+y1+y2+y3>=4;
x2+y1+y2+y3+y4>=6;
x1+y2+y3+y4+y5>=5;
x1+x2+y3+y4+y5>=6;
x1+x2+y4+y5>=8;
x1+x2+y5>=8;
y1+y2+y3+y4+y5<=3;
@gin(x1);@gin(x2);@gin(y1);@gin(y2);@gin(y3);@gin(y4);@gin(y5);
end
程序结果为:
Globaloptimalsolutionfound.
Objectivevalue:
820.0000
Objectivebound:
820.0000
Infeasibilities:
0.000000
Extendedsolversteps:
0
Totalsolveriterations:
46
VariableValueReducedCost
X13.000000100.0000
X24.000000100.0000
Y10.00000040.00000
Y22.00000040.00000
Y30.00000040.00000
Y40.00000040.00000
Y51.00000040.00000
所得结果为:
x1=3,x2=4,y2=2,y1=y3=y4=0,y5=1,最小费用为:
820元。
结果分析:
用LINDO和LINGO求解的费用都为820元,虽需要的服务员总数相同,但是分配方案有所不同。
不过都可使雇佣服务员的费用最低。
(2)当不能雇佣半时服务员时,则可以令
都为0,用LINDO和LINGO软件求解结果为:
LINDO程序的结果为:
OBJECTIVEFUNCTIONVALUE
1)1100.000
VARIABLEVALUEREDUCEDCOST
X15.000000100.000000
X26.000000100.000000
Y10.00000040.000000
Y20.00000040.000000
Y30.00000040.000000
Y40.00000040.000000
Y50.00000040.000000
LINGO程序的结果为:
Globaloptimalsolutionfound.
Objectivevalue:
1100.000
Objectivebound:
1100.000
Infeasibilities:
0.000000
Extendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
X15.000000100.0000
X26.000000100.0000
Y10.00000040.00000
Y20.00000040.00000
Y30.00000040.00000
Y40.00000040.00000
Y50.00000040.00000
两者求解的结果相同,费用都为1100元,x1=5,x2=6,每天至少增加280元的经费。
(3)如果每天雇佣半时服务员的人数没有限制,则取消
的条件约束,用LINDO和LINGO软件求解。
lINDO的程序结果为:
OBJECTIVEFUNCTIONVALUE
1)560.0000
VARIABLEVALUEREDUCEDCOST
X10.000000100.000000
X20.000000100.000000
Y14.00000040.000000
Y20.00000040.000000
Y30.00000040.000000
Y42.00000040.000000
Y58.00000040.000000
即需要半时服务员y1=4,y4=2,y5=8,费用为560元,每天可以减少费用260元。
LINGO的程序结果为:
Globaloptimalsolutionfound.
Objectivevalue:
560.0000
Objectivebound:
560.0000
Infeasibilities:
0.000000
Extendedsolversteps:
0
Totalsolveriterations:
2
VariableValueReducedCost
X10.000000100.0000
X20.000000100.0000
Y16.00000040.00000
Y20.00000040.00000
Y30.00000040.00000
Y40.00000040.00000
Y58.00000040.00000
LINGO的求解结果和LINDO的一样。
4.投资问题:
假设某公司在下一个计划期内可用于投资的总资本为b万元,可供选择的投资项目共有n个,分别记为已知对第j个项目的投资总额为
万元,而收益总额为
万元。
问如何进行投资,才能使利润率(即单位投资可获得的收益)最高?
在建立模型以后,请自己赋予题中变量于数据用LINGO软件进行求解。
问题简述:
投资的总资本为b万元,投资项目共n个,第j个项目的投资总额为
万元,而收益总额为
万元,问如何投资才能使利润率最高。
问题分析:
本题要求利润率最低,如何投资的问题,设每个项目的投资额为
。
模型的建立:
模型的求解:
本题要求自己设计数据,则设b为3000万元,一共5个项目,利润率
分别为10万元,15万元,25万元,20万元,30万元,则
目标函数为:
max
LINGO程序为:
model:
max(10*x1+15*x2+25*x3+20*x4+30*x5)/(x1+x2+x3+x4+x5);
x1+x2+x3+x4+x5<=3000
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
end
课程设计总结: