640) 总路程: L=696.88个单位 总时间: t?144.37秒 5.综合以上, 得出O→A→B→C→O的最短路线 根据以上对O→A, A→B, B→C, O→C计算出最短的路线, 综合得到了O→A→B→C→O的最短路线.
补充假设: 当机器人走过目标点A, B, C时则将它看作一个点来计算: 即目标点的坐标就是A, B, C的坐标.
图21: O→O经过目标点A, B, C的路线图
O→A→B→C→O最短路径为, 各个段的最短路径之和. 通过Matlab软件求得. 如表6所示.
表6:机器人从O→O经过目标点A, B, C的最短路线 经过圆心 前切点 后切点 圆弧长点 度 O b A g j B h u v p q C s
(0, 0) (80, 210) (70.51, 213.14) (76.61, 219.41) (300, 300) (220, 530) (229.57, (228.08, 532.89) 535.89) (150, 600) (141.92, (141.92, 594.11) 596.35) (300, 300) (270, 680) (272, 689.80) (270.58, 689.99) (370, 680) (368, 670.20) (370, 670) (430, 680) (430, 670) (434.33, 670.99) (670, 600) (535.67, (540, 740) 739.01) (670, 730) (670, 740) (689.77, 732.14) (700, 640) (720, 600) (730, 600) (727.72, 15
9.05 3.34 2.56 0.51 2.01 4.48 4.48 13.55 6.89 到前一点的切线长度 224.72 237.25 243.31 96.95 111.36 170.88 97.98 60 119.16 130 94.34 44.59
r l O (720, 520) (728.05, 514.06) (410, 100) (412.14, 90.23) (418.05, 94.06) (0, 0) 593.64) (730, 520) 6.36 7.19 80 522.02 422.02 总路程: LOABCO?2713.56个单位 总时间: t?542.71秒 5.3 对问题二模型的建立与求解 在问题一的基础之上, 可以知道从O→A的最短路径为从5障碍物的左上角时最短. 由于有一段圆弧, 最短路径不一定是最短时间. 5.3.1 行走时间的确定
已知K点为圆心, 半径为?, 分别过O, A点作圆K的切线且切点分别为E, F.
?FKH??, ?EKH??, ?EKF??, EK?KF??, A(300, 300), B(0, 0), K(80,
210). 如图22
? 求: 1)AF; 2)EO; 3)FE; 4)F; 5)E.
图22
关系式:
E: (?cos??80,?sin??210) F: (?cos??80,?sin??210)
OE?802?2102??2?50500??2 ( 3 )
16
AF?(300?80)2?(300?210)2??2?56600??2 ( 4 )
行走切线OE所用时间:
tOE?11OE?50500??2 v05行走切线AF所用时间:
tAF?11AF?56500??2 v05AF?(300??cos??80)2?(300??sin??210)2 ( 5 )
由( 4 )( 5 )化简计算可得:
??arcsin?56500??2 其中?2?arctan9?22.25? 22OE?(?cos??80)2?(?sin??210)2 ( 6 )
由( 3 )( 6 )化简计算可得:
??arcsin??50500??1 其中?1?arctan8?20.85? 21??????arcsin??50500?arcsin(?2??1)? ?18056500???EF???
?行走弧长EF所用时间:
tEF?EF??v0?? 其中v?v(?)? 10?0.1?2vv1?e11??50500??2?56500??2? 55v行走总时间:
t?5.3.2 模型建立
目标函数:
mint?tEF?tAF?tOE
约束条件:
10???80( K距离平面边界为80, 所以??80)
通过Matlab软件(附件7)得出.如图23所示.
17
图23: 时间和半径的关系图
最短的时间t=94.56秒, 半径最小值取11.5个单位. 如表7所示.
表7: 机器人从O→A的最短时间 经过圆心 前切点 后切点 圆弧长度 点 O (0, 0) k (80, 210) (69.06, (76.17, 10.56 213.54) 220.84) A (300, 300) 到前一点的切线长度 213.54 248.3 总路程: L=472.40个单位 总时间: t=94.46秒 圆弧速度: ??11.50个单位 6、模型的分析
优点: 本文将复杂的问题进行细化, 使解决问题的思路更加清晰. 并且使用图论的
方法,对最小的路径进行分析, 大量使用图表使结果更加明了.
对问题二, 使用Matlab软件作出时间与半径图可以清晰的看出, 机器人避开障碍物到达目标点所用的时间随着半径的变化趋势一目了然.
缺点: 在本文中, 将机器人看成一个质点, 进行建模. 如果考虑到机器人的大小对本模型的结果有一定的影响.由于在确定时间,只考虑单弧而没有考虑多弧的情况.在线路的确定时, 采用先粗略的确定路线,后优化,这样可能给结果带来误差.
7、参考文献
[1] 周永正 詹棠森 方成鸿 邱望仁,数学建模,上海市四平路1239号:同济大学出版社,2010年8月第1版.
[2] 袁新生 邵大宏 郁时炼,LINGO和Excel在数学建模中的应用,北京东黄城根北街16号:科学出版社,2007.
18
[3] 司守奎 孙玺菁,数学建模算法与应用,北京:国防工业出版社,2011.8
[4] 张德丰 雷晓平 周燕,MATLAB基础与工程应用,北京:清华大学出版社,2011.12
8、附件
附件1: O→A的路线求解
%A:初始点 0:转弯圆弧圆心 B:到达点 function result=zongchang(A,B,O,r) AO=sqrt((A(1)-O(1))^2+(A(2)-O(2))^2); AB=sqrt((A(1)-B(1))^2+(A(2)-B(2))^2); OB=sqrt((O(1)-B(1))^2+(O(2)-B(2))^2); aob=acos((AO^2+OB^2-AB^2)/(2*AO*OB)); foa=acos(r/AO); eob=acos(r/OB);
foe=2*pi-aob-foa-eob;%foe为转弯圆心角 AF=sqrt(AO^2-r^2)ˉ,BE均为圆弧切线% EB=sqrt(OB^2-r^2) EF=r*foe
aoc=atan((O(1)-A(1))/(O(2)-A(2))); cob=aob-aoc; f=foa+aoc-pi/2; g=3*pi/2-cob-eob; F(1)=O(1)-r*cos(f) F(2)=O(2)+r*sin(f) E(1)=O(1)-r*cos(g) E(2)=O(2)+r*sin(g) result=AF+EF+EB;
附件2: O→B大致路线确定 model: sets:
cities/O,A,B,C,D,E,F,G,H,I,J/; roads(cities,cities)/O,A O,B O,D A,C A,I B,C C,G D,E E,F F,G G,H G,I H,J I,J/:w,x; endsets data:
w=237.70 224.72 305.94 240.05 621.29 179.23 230.49 162.25 78.26 60 98.99 158.11 111.80 171.17; enddata
n=@size(cities); min=@sum(roads:w*x);
@for(cities(i)|i #ne#1 #and# i #ne#n:
@sum(roads(i,j):x(i,j))=@sum(roads(j,i):x(j,i))); @sum(roads(i,j)|i #eq#1:x(i,j))=1; @sum(roads(i,j)|j #eq#n:x(i,j))=1;
19