【无人机3D路径规划】非支配排序遗传算法(Matlab实现)

本文介绍了非支配排序遗传算法(NSGA)在Matlab中的实现,用于解决具有多个目标函数的优化问题。通过实例展示了如何在地形数据上寻找安全路径,同时探讨了算法的工作原理和在工程设计、资源分配等领域的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

非支配排序遗传算法(NSGA)是一种多目标优化算法,旨在解决具有多个目标函数的优化问题。NSGA是在遗传算法的基础上发展而来的,它通过一种称为"非支配排序"的策略,将解空间中的个体分为不同的等级,并通过交叉和变异等遗传操作来搜索适应于多个目标的优质解。NSGA首先对种群中的个体进行非支配排序,即根据个体之间的优劣关系将其划分为多个不同的前沿等级。一个个体如果在某个目标函数上优于另一个个体且不劣于另一个个体,则认为它是非支配的。这样,种群中的个体就被划分为多个前沿等级,每个等级中的个体都不受其他等级中个体的支配。NSGA的特点在于能够有效地搜索多目标优化问题的帕累托前沿,即所有最优解构成的集合。它在解决具有多个相互竞争目标的复杂优化问题时表现出色,已被广泛应用于工程设计、资源分配、机器学习等领域。

📚2 运行结果

主函数部分代码:

clear all;
clc;
close all;
tic
global DEM safth hmax scfitness;
a=load('XYZmesh.mat');%锟斤拷取锟斤拷锟街高筹拷锟斤拷息DEM
DEM=a;
safth=60;%锟斤拷全锟竭讹拷60m

%DEM.Z=randi([0,1000],size(DEM.Z,1),size(DEM.Z,2));
hmax=max(max(DEM.Z));%锟斤拷叩锟�
hmin=min(min(DEM.Z));%锟斤拷偷锟�

ganum=100;%锟斤拷锟斤拷锟斤拷锟斤拷
dnanum=50;%锟斤拷群锟斤拷

dnalength=50;
childrennum=dnanum;%锟接达拷锟斤拷群锟斤拷

np=zeros(1,dnanum);

%nsort1=zeros(1,dnanum);
%nsort2=zeros(1,dnanum);
%nsort2=zeros(1,dnanum);

fitness1=zeros(dnanum,3);
fitness2=zeros(dnanum,3);
fitness3=zeros(dnanum,3);

scfitness=zeros(dnanum,3);

congestion=zeros(1,dnanum);

startpoint=[1,1,100];
goalpoint=[101,101,100];%锟斤拷锟斤拷锟秸碉拷锟斤拷锟斤拷

startpoint(3)=DEM.Z(startpoint(1),startpoint(2))+safth;
goalpoint(3)=DEM.Z(goalpoint(1),goalpoint(2))+safth;%锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟秸碉拷叨锟轿拷锟斤拷锟绞碉拷矢叨锟�+锟斤拷全锟竭讹拷safth

dna1=zeros(dnanum,dnalength+1,3);
dna2=zeros(dnanum,dnalength+1,3);
dna3=zeros(dnanum,dnalength+1,3);
totalfitness=zeros(2,ganum+1,3);  %make a 3*101*3 size matrix ,the last 3 means three dimensional 

for i=1:1:dnanum
    for j=2:1:dnalength
        for k=1:1:3
         %dna1(i,j,k)=randint(1,1,[1 101]);    
        dna1(i,j,1)=j*100/dnalength; 
        dna2(i,j,1)=j*100/dnalength; 
        dna3(i,j,1)=j*100/dnalength; 
        dna1(i,j,2)=j*100/dnalength+randi([0 20]-10,1,1);
        dna2(i,j,2)=j*100/dnalength+randi([0 20]-20,1,1);
        dna3(i,j,2)=j*100/dnalength+randi([0 20]+15,1,1);%key point to improvement
        if dna1(i,j,2)<1
           dna1(i,j,2)=1;
        elseif dna1(i,j,2)>101
           dna1(i,j,2)=101;      

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]王广生,孙祎峥,孙海军,等.内河船舶尾气监测的多无人机路径规划研究[J].港口航道与近海工程,2024,61(01):93-98.DOI:10.16403/j.cnki.ggjs20240118.

[2]卢颖,庞黎晨,陈雨思,等.一种面向城市战的无人机路径规划群智能算法[J].兵工学报,2023,44(S2):146-156.

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值