资源描述
______________________________________________________________________________________________________________
课程设计目的:
1. 了解线性规划、整数规划、0-1规划、非线性规划的基本内容;
2. 掌握MATLAB优化工具箱求解各类规划问题;
3. 掌握用LINDO软件求解线性规划问题;
4. 掌握用LINGO软件求解线性规划和非线性规划问题。
课程设计准备:
1. 在开始本实验之前,请回顾相关内容;
2. 需要一台准备安装Windows XP Professional操作系统和装有数学软件的计算机。
课程设计内容及要求
要求:设计过程必须包括问题的简要叙述、问题分析、实验程序及注释、实验数据及结果分析和实验结论几个主要部分。
1. 任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件,假定这两台车床的可用台数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台数和加工费用如下表。问怎么样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?要求用MATLAB和LINDO软件进行求解,并比较其结果。
车床
类型
单位工件所需加工台数
单位工件的加工费用
可用
台数
工件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
一、 问题分析:本题要使加工费用最低,需要考虑的约束条件有,车床的可用台数限制和工件必须达到的 数量要求,由此建立以下数学模型。
二、 模型建立:设机床甲、乙加工工件1,2,3的数量为,
三、 模型求解:用MATLAB软件求解:
f=[13 9 10 11 12 8]; %目标函数
A=[0.4 1.1 1 0 0 0;0 0 0 0.5 1.2 1.3]; %不等式约束
B=[800;900];
Aeq=[1 0 0 1 0 0;0 1 0 0 1 0;0 0 1 0 0 1]; %等式约束
beq=[400;600;500];
vlb = zeros(6,1); %待定参数的上下确界
vub=[];
[x,fval] = linprog(f,A,B,Aeq,beq,vlb,vub) %返回最优解x及x处的目标函数值fval
得到结果:在甲机床上加工600个工件2,在乙机床上加工400个工件1和500个工件3,最少费用13800元
用LINDO软件求解:
min 13x11+9x12+10x13+11x21+12x22+8x23 !需要求解的目标函数
st 0.4x11+1.1x12+x13<=800 !约束条件
0.5x21+1.2x22+1.3x23<=900
x11+x21=400
x12+x22=600
x13+x23=500
end
gin 6 !定义参数为整数
得到结果与MATLAB中相同,由此说明该结果为最优解。
2. 某厂每日8小时的产量不低于1800件,为了进行质量控制,计划聘请两种不同水平的检验员,且每种检验员的日产量不高于1800件。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15件/小时,正确率95%,计时工资3元/小时.检验员每错检一次,工厂要损失2元,为使总检验费用最省,该工厂应聘一级、二级检验员各几名?要求用MATLAB和LINDO软件进行求解,并比较其结果。
一、 问题分析:本题要达到的目标是使招聘费和损失费的和最低,由题中给出的约束条件可建立数学模型如下。
二、 模型建立:设聘请一级、二级检验员人数为x1,x2人,
则:应给检验员的工资为:
因错误造成的损失为:
即
三、 模型求解:用MATLAB软件求解:
f=[40 36]; %目标函数
A=[-5 -3]; %不等式约束
B=[-45];
Aeq=[];beq=[]; %该模型没有等式约束
vlb = zeros(2,1); %参数的上下确界
vub=[9,15];
[x,fval] = linprog(f,A,B,Aeq,beq,vlb,vub) %返回最优解x及x处的目标函数值fval
得到结果只需聘请一级检验员9名,所需最少检验费用为360元。
用LINDO软件求解:
min 40x1+36x2
st 5x1+3x2>=45
x1<=9
x2<=15
end
gin 2
得到结果与MATLAB中相同,从结果看来这样的聘用方案是合理的、最优的。
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软件分别求解,并比较其结果。
1) 雇佣全时和半时两类服务员
一、 问题分析:该储蓄所雇佣全时和半时服务员,由题知中午有两个小时为全时服务员的午餐时间,所以 在这期间必须有半时服务员接替,由各时段服务员的数量需求我们可以建立以下模型。
二、 模型建立:设每天雇佣的全时服务员以12:00~13:00为午餐时间的有x1名,以13:00~14:00为午餐时间的有x2名;半时服务员从9:00,10:00,11:00,12:00,13:00开始工作的人数分别为y1,y2,y3,y4,y5名。
则:储蓄所雇佣服务员的总费用
每个时段的服务员数不少于需求量,且每天半时服务员不超过三名,以此建立模型:
三、 模型求解:用LINDO软件求解:
min 100x1+100x2+40y1+40y2+40y3+40y4+40y5 !目标函数
st 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 !半时服务员不超过三名
end
gin 7 !所有参数为整数
得到结果,最小费用为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
得到结果,最小费用为820元。
由结果可以看出,用LINDO和LINGO求解得到的雇佣方案有所不同,但两种方案所花费的费用相同,因此该储蓄所任意采用其中一种方案雇佣服务员都可以使费用最低。
2) 当不能雇佣半时服务员时,令y1=y2=y3=y4=y5=0,LINDO和LINGO结果相同,求得最优解为x1=5,x2=6,总费用为1100元,比雇佣半时服务员时每天增加了280元。
3) 如果雇佣半时服务员的数量没有限制,即取消的约束,在LINDO中求得:x1=x2=y2=y3=0,y1=4,y4=2,y5=8;在LINGO中求得x1=x2=y2=y3=y4=0,y1=6,y5=8。总费用都为560元,每天可以减少费用260元。
4. 投资问题:假设某公司在下一个计划期内可用于投资的总资本为b万元,可供选择的投资项目共有n个,分别记为,已知对第j个项目的投资总额为万元,而收益总额为万元。请问如何进行投资,才能使利润率(即单位投资可获得的收益)最高?在建立模型以后,请自己赋予题中变量于数据用LINGO软件进行求解。
一、 问题分析:本题要求单位投资的收益最高,约束条件仅有一个,即为总投资额不能超过b万元。
二、 模型建立:设第j个项目的投资额为xj万元,则:
三、 模型求解:针对本题,假设b等于2000万元,共有4个项目,每个项目的利润率cj/aj分别为23万元、24万元、32万元、36万元。则,
用LINGO软件求解:
Model:
max=(23*x1+24*x2+32*x3+36*x4)/(x1+x2+x3+x4);
x1+x2+x3+x4<=2000;
end
求得结果为:将全部资金投到项目4,其余项目不投,最高利润率为36万元。由本题结果可以看出求得的投资方案为将全部资金投到利润率最高的项目,显然这样的投资没有考虑风险的问题,为了进一步改进这个模型,我们可以假设每个项目的投资风险,然后根据总投资风险最低这个约束条件求得最优解。
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文