Searching for Submersibles搜索潜水器
2024美赛B题Searching for Submersibles原创论文(共38页)部分内容,其余见文末:
整体框架:
1.1 问题背景与问题重述
海上游轮迷你潜水艇公司(MCMS),一家位于希腊的企业,专门制造能够载人深入海洋深处的潜水艇。这些潜水艇被运送至特定位置并从主船上无缆释放。MCMS计划利用其潜水艇带领游客探索伊奥尼亚海底的沉船遗址。然而,在此之前,他们需要通过开发安全程序以应对与主船失去通信或可能发生的机械故障,包括潜水艇推进力丧失的情况,以获得监管机构的批准。他们特别希望开发一个模型来预测潜水艇随时间的位置变化。
我们需要:1)开发一个模型预测潜水艇随时间的位置变化,并考虑与这些预测相关的不确定性;2)建议潜水艇在发生事件前定期向主船发送哪些信息以减少这些不确定性,以及潜水艇需要哪些设备来实现这一目标;3)为公司建议准备任何额外的搜索设备,以便在必要时从主船部署;4)开发一个模型,使用你的位置模型中的信息来推荐设备的初始部署点和搜索模式,以最小化定位丢失潜水艇的时间。
1.2 文献回顾
在潜水艇导航、定位和通信技术方面,最近的研究表明了这些领域的显著进展。例如,一项研究探讨了基于红绿蓝光发射二极管的可见光通信系统在水下通信中的应用,特别是在不同类型的水体中的数据传输性能。该研究通过模拟分析了在不同水质下,使用混合光纤无线链路进行数据传输的性能(Furqan Ali et al., n.d.)。另一项研究则集中在自主水下车辆(AUV)的定位、导航和通信上,强调了在水下环境中依靠声学系统进行通信和定位的挑战。这项研究回顾了不同的替代方案,并分析了协作AUV团队及任务的可行性、优势和局限性(González-García et al., 2020)。。
Model 2 识别并捕捞潜水器
4.1 模型简介
旅行商问题(Traveling Salesman Problem, TSP)是组合优化中的一个经典问题,它在计算数学、操作研究、理论计算机科学等领域中都非常重要(Lancia & Serafini, 2018)。旅行商问题的目标是寻找一条最短的路径,使得一名旅行商从一个城市出发,经过每个城市恰好一次后,最终返回原始城市。这个问题是NP-hard的,意味着目前没有已知的多项式时间算法能解决所有情况。TSP可以用图论来描述:给定一个图,其中的节点代表城市,边代表城市间的道路,边的权重代表距离或成本,任务是找到一个最小权重的哈密顿回路(经过每个节点恰好一次的闭合路径)。
搜救最优路径代码MATLAB
这部分代码首先读取了随机的若干疑似潜水器的二维坐标点,然后选取了前10个点作为样本点并给出它们随机的高度信息,因为假阳点可能出现在任何地方,所以这样的随机性是合理的,然后代码对遗传算法的参数进行了设置和初始化,之后开始遗传算法的循环每一轮包含适应度计算,父辈交叉,变异等操作。之后输出了遗传算法的收敛曲线以及结果
%%%%%%%%%%%%自定义参数%%%%%%%%%%%%%
tStart = tic; % 算法计时器
[~,cities] = Read('dsj1000.tsp');
cities = cities';
cityNum=10;
cities=cities(:,1:cityNum);
maxx=max(cities(1,:));
minx=min(cities(1,:));
maxy=max(cities(2,:));
miny=min(cities(2,:));
for i=1:cityNum
cities(1,i)=(cities(1,i)-minx)/(maxx-minx)*0.5+20.25;
cities(2,i)=(cities(2,i)-miny)/(maxy-miny)*0.5+36.25;
end
dep=100*randn(1,cityNum)-2000;
cities(3,:)=dep;
%cityNum = 100;
maxGEN = 1000;
popSize = 100; % 遗传算法种群大小
crossoverProbabilty = 0.9; %交叉概率
mutationProbabilty = 0.1; %变异概率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gbest = Inf;
% 获取所有疑似潜水器位置
%cities = rand(2,cityNum) * 100;%100是最远距离
% 计算上述生成的城市距离
distances = calculateDistance(cities);
% 生成种群,每个个体代表一个路径
pop = zeros(popSize, cityNum);
for i=1:popSize
pop(i,:) = randperm(cityNum);
end
offspring = zeros(popSize,cityNum);
%保存每代的最小路劲便于画图
minPathes = zeros(maxGEN,1);
相关思路、相关代码、讲解视频、参考文献等相关内容可以点击下方群名片哦!