深圳杯全国大学生数学建模D题答案Word文档下载推荐.docx
- 文档编号:21190004
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:13
- 大小:477.49KB
深圳杯全国大学生数学建模D题答案Word文档下载推荐.docx
《深圳杯全国大学生数学建模D题答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《深圳杯全国大学生数学建模D题答案Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
(称为两钻头合作间距),我们运用遗传算法做出最优作业线路图,计算得出最优结果。
2.模型假设
1)单个过孔的钻孔作业时间,这是由生产工艺决定,为了简化问题,现假定对于同一孔型钻孔作业时间都是相同的;
2)为了计算行进费用,需要计算行进时间,为了简化问题,这里假定打孔机的行进是匀速的运动。
3)假定针对不同孔型加工作业时,刀具的转换时间相同;
4)在计算两孔之间距离时,为简化问题,假设打孔机的钻头为一质点。
5)为避免钻头间的触碰和干扰,假定保持两钻头间距不小于
3.模型建立
1、单钻头模型:
对于其一给定尺寸的孔,调整好对应的刀具后,从下刀点开始沿着使该刀具总路程最短的轨迹,从一个孔移动到另一个孔,直到该类孔中的所有对象都被加工完毕,再转换刀具进行下一尺寸的其它孔的加工,如此安排。
把问题描述成以下优化模型:
1)变量设计。
设有n个孔的集合
……
,设
表示集合中任意两孔、
表示集合中
两孔之间的距离、M为行进总路程。
2)目标函数。
需要在孔集合
中,找到一个不重复的全排列
,令
,求M的最小值。
3)约束条件:
加工路径从一个孔出发,对每一个孔只加工一次遍历每一个孔,最后回到起点,包括刀具转换在内。
4)优化算法:
蚁群算法。
图一:
刀具的转换流程及刀具对应的打孔孔型
2、双钻头模型:
双钻头在孔群加工中,两个钻头同时加工,每个钻头加工时间并不确定,那么单一工间的加工时间由耗时较长的钻头决定。
假设两个钻头的对刀点分别为
和
,
和
分别表示第一个钻头加工的第i个孔和第2个钻头加工的第j个孔,则两条加工路径
、
分别为
约束条件:
任意一个待加工的孔必须包括在其中一条加工路径中,且加工过程中两个钻头不发生碰撞。
4.模型求解
4.1单钻头问题结果分析
对于单钻头生产方式,钻孔方式上采用一种刀具钻完对应的全部孔在转换刀具进行下一种刀具对其对应孔型的钻取方式,工作路线采用蚁群算法,通过MATLAB进行数据处理,得出相应路径最优图形如下(按顺序依次为
刀具:
defghabcf
孔型:
DGDIJFGHFACBCEIJEG)。
图1-DG孔型路线
图2-DI孔型路线
图3-J孔型路线
图4-FG孔型路线
图5-FH孔型路线
图6-AC孔型路线
图7-B孔型路线
图8-CEIJ孔型路线
图9-EG孔型路线
图10-电路板上所有点的路线
图11-所有孔型的分布图
下表为各刀具的行程(单位:
mil)
刀具
d
e
f
g
h
a
b
c
行程
5.9257
5.9527
4.6661
3.2375
3.0941
12.586
11.573
11.123
4.8309
时间/s
8.361821
8.399921
6.584386
4.568472
4.366119
17.76024
16.33079
15.69579
6.816937
依上表可知,在单钻头作业的最优线路条件下,可得各种刀具作业路程总和
为:
62.989e+004mil。
以下为我们为各刀具设定的始终点(1/100mil):
x
-267400
-257400
-222047
-301300
-311300
-202800
-197600
199800
y
184518
100000
84300
74300
190200
180800
203200
上表各点距离和为选取转换前进的路程1.2471e+004mil,则加上前进的路程,可知该路线总路程为
Shortest_Length=64.2361e+004(mil)=16315.97(mm)
所有钻头的行进速度都是相同的,为
,且所有钻头的刀具钻换时间为
12*18=216(s)
时间方面:
作业行进时间=最短距离/钻头行进速度=90.64427(s)
作业总时间=钻头行进时间+钻头转换时间=306.64(s)
成本方面:
行进成本=行进时间*行进成本=978.9594(元)
作业转换成本=转换次数*转换成本=25.2(元)
作业总成本=行进成本+作业转换成本=1004.159(元)
即:
此法生产,需用时306.64(s),耗费1004.159(元)。
4.2双钻头问题结果分析
我们现在在模型建立上有一些想法,但是在利用算法实现想法的过程中遇到一些困难,因此并没有成功通过算法把更优的解算出。
5.模型评价与改进
该模型的分析过程清晰、简单易行,且经得住实践的考验。
在单钻头问题上,此模型采取了单刀具对应孔型完成再进入下一道具的方式,即任一种刀具,先完成其所能钻取的孔型后,再进入下一孔型的钻取,而每种刀具的工作路线都是通过蚁群算法方式得出的最优解。
如此操作,既减少了道具不断转换带来的时间损耗,提高了作业效率,又可以尽可能降低作业的成本。
本模型是一比较高效率的生产模型,却不是一个十分省钱的生产模型,1000多元的生产成本确实是高了些。
而对于双钻头模型问题,此模型采用遗传算法,以遗传算法双质点操作优化的优势,取代了单钻头问题中蚁群算法只能单质点优化路线的缺陷,是较为优化的。
本文只通过一组试验数据分析得出结果,会有误差,所以在此基础上,用多组数据分析,会更好的减小误差,也可以对做模型进行进检验。
总的来说该模型还是能比较完整的解决问题的!
参考文献
【1】姜启源等,数学模型(第四版),北京:
高等教育出版社,2011
【2】韩明,王家宝等,数学实验,上海:
同济大学出版社,2009
【3】罗万成,大学生数学建模案例精选,成都:
西南交通大学出版社,2007
【4】周明,孙树栋,遗传算法原理及应用,北京:
国防工业出版社,2005
【5】李士勇,陈永强,蚁群算法及其应用,哈尔滨:
哈尔滨工业大学出版社,2004
【6】曾峰等,印刷电路板(PCB)设计与制作,北京:
电子工业出版社,2002
附录:
m=10;
Alpha=1;
Beta=5;
Rho=0.1;
NC_max=200;
Q=100;
%为使程序运行速度更快,取蚂蚁数为10
c=[x,y];
n=size(c,1);
%n表示问题的规模(电路板上孔的个数)
D=zeros(n,n);
%D表示完全图的赋权邻接矩阵
fori=1:
n
forj=1:
ifi~=j
D(i,j)=((c(i,1)-c(j,1))^2+(c(i,2)-c(j,2))^2)^0.5;
else
D(i,j)=eps;
%i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示
end
D(j,i)=D(i,j);
%对称矩阵
end
Eta=1./D;
%Eta为启发因子,这里设为距离的倒数
Tau=ones(n,n);
%Tau为信息素矩阵
Tabu=zeros(m,n);
%存储并记录路径的生成
NC=1;
%迭代计数器,记录迭代次数
R_best=zeros(NC_max,n);
%各代最佳路线
L_best=inf.*ones(NC_max,1);
%各代最佳路线的长度
L_ave=zeros(NC_max,1);
%各代路线的平均长度
whileNC<
=NC_max%停止条件之一:
达到最大迭代次数,停止
%%蚁群算法MATLAB程序第二步:
将m只蚂蚁放到n个孔上
Randpos=[];
%随即存取
fori=1:
(ceil(m/n))
Randpos=[Randpos,randperm(n)];
Tabu(:
1)=(Randpos(1,1:
m))'
;
%%蚁群算法MATLAB程序第三步:
m只蚂蚁按概率函数选择下一个孔,完成各自的周游
forj=2:
n%所在孔不计算
m
visited=Tabu(i,1:
(j-1));
%记录已打过的孔,避免重复访问
J=zeros(1,(n-j+1));
%待打的孔
P=J;
%待打孔的选择概率分布
Jc=1;
fork=1:
iflength(find(visited==k))==0%开始时置0
J(Jc)=k;
Jc=Jc+1;
%打过的孔个数自加1
%%下面计算蚁群算法MATLAB程序待打孔的概率分布
length(J)
P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);
P=P/(sum(P));
%%按概率原则选取下一个孔
Pcum=cumsum(P);
%cumsum,元素累加即求和
Select=find(Pcum>
=rand);
%若计算的概率大于原来的就选择这条路线
to_visit=J(Select
(1));
Tabu(i,j)=to_visit;
ifNC>
=2
Tabu(1,:
)=R_best(NC-1,:
);
%%蚁群算法MATLAB程序第四步:
记录本次迭代最佳路线
L=zeros(m,1);
%开始距离为0,m*1的列向量
R=Tabu(i,:
(n-1)
L(i)=L(i)+D(R(j),R(j+1));
%原距离加上第j个孔到第j+1个孔的距离
L(i)=L(i)+D(R
(1),R(n));
%一轮下来后走过的距离
L_best(NC)=min(L);
%最佳距离取最小
pos=find(L==L_best(NC));
R_best(NC,:
)=Tabu(pos
(1),:
%此轮迭代后的最佳路线
L_ave(NC)=mean(L);
%此轮迭代后的平均距离
NC=NC+1%迭代继续
%%蚁群算法MATLAB程序第五步:
更新信息素
Delta_Tau=zeros(n,n);
%开始时信息素为n*n的0矩阵
Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);
%此次循环在路径(i,j)上的信息素增量
Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);
%此次循环在整个路径上的信息素增量
Tau=(1-Rho).*Tau+Delta_Tau;
%考虑信息素挥发,更新后的信息素
%%蚁群算法MATLAB程序第六步:
禁忌表清零
Tabu=zeros(m,n);
%直到最大迭代次数
%%蚁群算法MATLAB程序第七步:
输出结果
Pos=find(L_best==min(L_best));
%找到最佳路径(非0为真)
Shortest_Route=R_best(Pos
(1),:
)%最大迭代次数后最佳路径
Shortest_Length=L_best(Pos
(1))%最大迭代次数后最短距离
subplot(1,2,1)%绘制第一个子图形
DrawRoute(c,Shortest_Route)%画路线图的子函数
subplot(1,2,2)%绘制第二个子图形
plot(L_best)
holdon;
plot(L_ave,'
r'
)
title('
平均距离和最短距离'
)%标题
%蚁群算法MATLAB程序子函数
functionDrawRoute(c,R)
N=length(R);
scatter(c(:
1),c(:
2));
holdon
plot([c(R
(1),1),c(R(N),1)],[c(R
(1),2),c(R(N),2)],'
g'
forii=2:
N
plot([c(R(ii-1),1),c(R(ii),1)],[c(R(ii-1),2),c(R(ii),2)],'
holdon
旅行商问题优化结果'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深圳 全国大学生 数学 建模 答案