【路径规划】基于nsga算法解决三维地形路径规划问题matlab代码

1 简介

针对自主水下航行器(AUV)在三维复杂环境下的路径规划问题,提出了一种适用于全局路径规划的NSGA-Ⅱ算法.结合实际情况建立了简单有效的三维地形环境模型,依据经济性和安全性原则设计了算法的路径长度和威胁度评价函数,通过快速Pareto排序及拥挤度距离计算选择路径点.为了保证路径的实用性,运用梯度下降法对路径进行平滑处理.仿真结果表明:改进后的算法在三维环境下不仅可以安全避开海底地形障碍,而且寻找最优解的能力及收敛速度都有较大提升.

2 部分代码

function [ children_out ] = NSGA2_variation( children )
%NSGA2_VARIATION Summary of this function goes here
%本函数执行变异操作

global DEM safth hmax;
dnanum=size(children,1);
dnalength=size(children,2)-1;
children_out=children;
pvariation=0.5;
n=floor(pvariation*(dnalength-1));
for i=1:1:dnanum
   for m=1:1:n
       j=randint(1,1,[2 dnalength]);
       k(1)=floor((children_out(i,j-1,1)+children_out(i,j+1,1))/2);
       k(2)=floor((children_out(i,j-1,2)+children_out(i,j+1,2))/2);
       k(3)=children_out(i,j,3);
       %k(1)=k(1)+randint(1,1,[0 20])-10;
       %k(2)=k(2)+randint(1,1,[0 20])-10;
      
       if k(1)>101
          k(1)=101;
       elseif k(1)<1
          k(1)=1;
       end
       if k(2)>101
          k(2)=101;
       elseif k(2)<1
          k(2)=1;
       end
       k(3)=DEM.Z(k(1),k(2))+safth;
       %{
      if k(3)>hmax+safth
          k(3)=hmax+safth;
      elseif k(3)<safth
          k(3)=safth;
      end
      %}
       children_out(i,j,:)=k;         
   end
end
%{
for m=1:1:n
  i=randint(1,1,[1 dnanum]);
  j=randint(1,1,[2 dnalength]);
  k(1)=children_out(i,j,1);
  k(2)=children_out(i,j,2);
  k(3)=children_out(i,j,3);
  k(1)=k(1)+randint(1,1,[0 202])-101;
  k(2)=k(2)+randint(1,1,[0 202])-101;
  k(3)=k(3)+randint(1,1,[0 2*hmax])-hmax;
  if k(1)>101
      k(1)=k(1)-101;
  elseif k(1)<1
      k(1)=k(1)+101;
  end
  if k(2)>101
      k(2)=k(2)-101;
  elseif k(2)<1
      k(2)=k(2)+101;
  end
  if k(3)>hmax+safth
      k(3)=k(3)-hmax;
  elseif k(3)<safth
      k(3)=k(3)+hmax;
  end
  children_out(i,j,:)=k;
end
%}

%   Detailed explanation goes here

3 仿真结果

4 参考文献

[1]邹春明, 张云雷, 徐言民,等. 基于NSGA-Ⅱ算法的AUV三维全局路径规划[J]. 武汉理工大学学报:交通科学与工程版.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值