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

本文介绍了非支配排序遗传算法(NSGA)在处理具有多个目标函数的优化问题中的原理和应用,通过实例展示了如何在Matlab中实现该算法,重点提及了其在内河船舶尾气监测和城市战无人机路径规划中的应用。
摘要由CSDN通过智能技术生成

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

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

📚2 运行结果

部分代码:

function [ f1 ] = NSGA2_fitness1( dna)
%NSGA2_FITNESS1 Summary of this function goes here
%本函数计算航路长度代价
dnanum=size(dna,1);          %种群数目
dnalength=size(dna,2)-1;     %有几段?相当于种群中的个体为点,点与点之间依次相连有多少条线段,因此要减1
f1=zeros(dnanum,1);          %每段对应的航路长度代价
for i=1:1:dnanum
    f1(i,1)=0;
    for j=1:1:dnalength
        d(1)=(dna(i,j+1,1)-dna(i,j,1))*10;
        d(2)=(dna(i,j+1,2)-dna(i,j,2))*10;  % *10是因为每小段又划分为10格?
        d(3)=dna(i,j+1,3)-dna(i,j,3);
        d=d.^2;
        f1(i,1)=f1(i,1)+sqrt(d(1)+d(2)+d(3));
        %i个体数目
    end
end

%   Detailed explanation goes here
 

🎉3 参考文献

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

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

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

🌈4 Matlab代码实现

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值