1. 问题背景与建模
1.1 任务描述
我方需从基地(坐标 ( 70 , 40 ) (70,40) (70,40))派出一架速度为1000公里/小时的飞机,侦察敌方100个目标点后返回。目标是找到最短巡航路径,最小化总飞行时间。该问题可抽象为旅行商问题(TSP),需访问102个节点(含起点和终点的重复编号)。
1.2 地理坐标与距离计算
敌方目标经纬度部分数据存储于表,如下:
经度 | 纬度 | 经度 | 纬度 | 经度 | 纬度 | 经度 | 纬度 |
---|---|---|---|---|---|---|---|
53.7121 | 15.3046 | 51.1758 | 0.0322 | 46.3253 | 28.2753 | 30.3313 | 6.9348 |
56.5432 | 21.4188 | 10.8198 | 16.2529 | 22.7891 | 23.1045 | 10.1584 | 12.4819 |
20.1050 | 15.4562 | 1.9451 | 0.2057 | 26.4951 | 22.1221 | 31.4847 | 8.9640 |
两点间距离通过大圆弧长计算。设两点 A ( x 1 , y 1 ) A(x_1,y_1) A(x1,y1)和 B ( x 2 , y 2 ) B(x_2,y_2) B(x2,y2)的直角坐标为:
A = ( R cos x 1 cos y 1 , R sin x 1 cos y 1 , R sin y 1 ) B = ( R cos x 2 cos y 2 , R sin x 2 cos y 2 , R sin y 2 ) \begin{aligned} A &= (R \cos x_1 \cos y_1, R \sin x_1 \cos y_1, R \sin y_1) \\ B &= (R \cos x_2 \cos y_2, R \sin x_2 \cos y_2, R \sin y_2) \end{aligned} AB=(Rcosx1cosy1,Rsinx1cosy1,Rsiny1)=(Rcosx2cosy2,Rsinx2cosy2,Rsiny2)
实际距离 d A B d_{AB} dAB为:
d A B = R arccos [ cos ( x 1 − x 2 ) cos y 1 cos y 2 + sin y 1 sin y 2 ] d_{AB} = R \arccos\left[ \cos(x_1 - x_2)\cos y_1 \cos y_2 + \sin y_1 \sin y_2 \right] dAB=Rarccos[cos(x1−x2)cosy1cosy2