基于遗传算法的自主式水下潜器路径规划问题(Matlab代码实现)

news2024/11/25 14:56:17

🍒🍒🍒欢迎关注🌈🌈🌈

📝个人主页:我爱Matlab


👍点赞➕评论➕收藏 == 养成习惯(一键三连)🌻🌻🌻

🍌希望大家多多支持🍓~一起加油 🤗

💬语录:将来的我一定会感谢现在奋斗的自己!

🍁🥬🕒摘要🕒🥬🍁

自主式水下机器人(Autonomous Underwater Vehicle,简称AUV)是近世纪发展起来的具有一定的自主导航和规划能力的水下机器人,可广泛应用于海洋学勘测、地形地貌测量、目标搜索、海底管线检测维修等领域,甚至可以用于水下古迹勘探或水下影视特技,通常可以在危险或人力不可到达的海域活动,扩展载人潜器或有缆潜器/水下机器人的作业能力与探测范围,AUV的这种自主性表现之一是 具有基于环境模型的全局规划能力。
应用遗传算法(GA)对AUV在大范围海洋环境中的全局路径规划问题进行了研究。介绍了基于栅格的环境模型及其数据结构 ,通过仿真结果可以看出 :GA采用可变长编码方式使路径描述简单、清晰 ,具有收敛速度快、求解实际问题效率高的特点,满足系统实时性要求 。

✨🔎⚡运行结果⚡🔎✨

 

💂♨️👨‍🎓Matlab代码👨‍🎓♨️💂

clear all;
close all;
%% global variables

load ('coor.mat');   %Load data generated by RP_coordinate.m

Popsize =50;         %Population size, should be an even integer

%Genetic parameters
%MIXRATE = 0.3;
ITERATION = 10000;   %Number of iteration
THRESHOLD = 100;
Pcross = 0.7;       %Crossover rate
Pmutation = 0.3;    %Mutation rate

%Begin
Parentpop=InitPop(Popsize,RPNUM,adjacency);
Fitnesscurve=[];
Generation = 1; 

Fitconst=0;         %Number of generations that fitness values remain constant
%% Genetic algorithm
while(Generation <= ITERATION)
    if (Fitconst<=THRESHOLD) %Stop iteration if fitness value is constant in threshold number of genreations
        fitness = Fitness(Parentpop,adjacency);       %Calculate fitness of parents
        crossover = Crossover(Parentpop,Pcross);      %Crossover
        Childpop = Mutation(crossover,Pmutation);     %Mutate and get chindren
        combopop=[Parentpop;Childpop];                %Combine parents and chindren
        combofitness=Fitness(combopop,adjacency);       %Calculate overall fitness
        nextpop=Select(combopop,combofitness);        %Select the first half of best to get 2nd gen
        Parentpop=nextpop.pop;
        if(Generation ==1)
            Best_GApath=Parentpop(1,:);
            Best_Fitness=combofitness(nextpop.bestplan);
        else
            New_Best_Fitness=combofitness(nextpop.bestplan);%Evaluate best solution
            New_Best_GApath=Parentpop(1,:);
            
            if(New_Best_Fitness<Best_Fitness)
                Best_Fitness=New_Best_Fitness;
                Best_GApath=New_Best_GApath;
                Fitconst = 0;
                
                %%%%%%%%Visualize planning process%%%%%%%%
%                     GENERATION=[1:Generation-1];
%                     GAplancoor = [RP(Best_GApath).x;RP(Best_GApath).y; RP(Best_GApath).z].';
%                     figure(1);
%                     for i=1:RPNUM
%                         subplot(2,1,1);     %Plot all rendezvous points
%                         plot3(RP(i).x,RP(i).y,RP(i).z,'o');
%                         text(RP(i).x,RP(i).y, RP(i).z,num2str(i));
%                         hold on;
%                         subplot(2,1,2);
%                         plot(RP(i).x,RP(i).y,'o');
%                         text(RP(i).x,RP(i).y,num2str(i));
%                         hold on;
%                     end
%                     subplot(2,1,1);
%                     plot3(GAplancoor(:,1),GAplancoor(:,2),GAplancoor(:,3),'r-.');
%                     title('3D Path of AUV');
%                     grid on;
%                     hold off;
%                     subplot(2,1,2);
%                     plot(GAplancoor(:,1),GAplancoor(:,2),'r-.');
%                     title('2D Path of AUV');
%                     grid on;
%                     hold off;
                %%%%%%%%Visualize planning process%%%%%%%%
                
            else
                Fitconst=Fitconst+1;
            end
        end

完整代码:基于遗传算法的自主式水下潜器路径规划问题

📜📢🌈参考文献🌈📢📜

[1]王宏健,边信黔,唐照东,施小成,丁福光.大范围环境下自主式水下潜器两种全局路径规划方法的研究[J].中国造船,2004(03):81-86.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022/11/18拓展班上机课

Vs的使用 新建项目 新建源文件 关闭scanf_s和printf_s检查&#xff1a;project -> 属性 -> C/C -> 常规 ->SDL&#xff1a;否 char* str"..."出现”"const char *" 类型的值不能用于初始化 "char *" 类型的实体“错误&#xff…

2022.11.17补题祭

前言&#xff1a; 考完期中考试了&#xff01;&#xff01;生物逆袭了&#xff01;&#xff01;全年级前十&#xff08;可能是因为题目太简单我比较细心吧&#xff09;但还是错了一些不该错的题目......&#xff08;生物惨痛87分&#xff09; 感觉这次期中考试情况良好&#…

荧光标记PEG衍生物——Fluorescein-PEG-Azide,FITC-PEG-N3,荧光素peg叠氮

荧光标记PEG衍生物——Fluorescein-PEG-Azide&#xff0c;FITC-PEG-N3&#xff0c;中文名为荧光素-聚乙二醇-叠氮&#xff0c;其所属分类为Azide PEG Fluorescent PEG。 Fluorescein-PEG-Azide的分子量均可定制&#xff1a;荧光素-peg 20000-叠氮/Fluorescein-PEG 5000-Azide、…

47-用户和权限管理

47-用户和权限管理用户的管理和相关管理命令用户的基础概念用户UID区分用户类别创建用户- useradd修改用户- usermod删除用户- userdel修改用户密码- passwd实验&#xff1a;用户的管理文件用户组的基础概念用户组GID用户组分类创建组- groupadd修改组-groupmod删除组- groupde…

qt 样式表 qss

Qt样式表是一个可以自定义部件外观的十分强大的机制﹐除了那些能够通过子类化QStyle更改的外观,其余的都可以使用Qt样式表来美化。 实现办法&#xff1a;调用setStyleSheet 函数&#xff0c;其中styleSheet一般通过读取配置文件.qss实现。 void setStyleSheet(const QString&a…

volatile如何保证可见性

在Java中&#xff0c; volatile关键字可以保证变量的可见性&#xff0c;如果我们将变量声明为 volatile&#xff0c;这就指示 JVM&#xff0c;这个变量是共享且不稳定的&#xff0c;每次使用它都到主存中进行读取。 Java内存模型&#xff1a; 1.Java所有变量都存储在主…

关于java语言当中的this关键字

/*** 关于java语言当中的this关键字&#xff1a;&#xff08;其内存图见下图&#xff09;* 1、this是一个关键字&#xff0c;翻译为&#xff1a;“这个”* 2、this是一个引用&#xff0c;它是一个变量&#xff0c;this变量中保存的内存地址指向了自身&#xff0c;this存…

APISpace接口推荐

APISpace 上面有各种类型的API&#xff0c;短信类、天气环境类、快递物流类、数据智能类等等&#xff0c;并且所有的API都提供的免费的调用次数&#xff0c;这么多的API肯定有你中意的&#xff01;&#xff01;&#xff01;我们超多的热门API推荐给大家&#xff1a; IP归属地A…

CUDA与cuDNN安装教程(超详细)

前言 windows10 和win11安装 CUDA &#xff0c;首先需要下载两个安装包 CUDA toolkit&#xff08;toolkit就是指工具包&#xff09; cuDNN 用于配置深度学习使用 官方教程 CUDA&#xff1a;Installation Guide Windows :: CUDA Toolkit Documentation (nvidia.com) cuDNN&…

ADMIN云计算系统管理

云计算系统管理一、inux简介Unix/Linux发展史操作系统 —— UNICS&#xff0c;后改为UNIXLinux版本及应用Red Hat系列版本二、Linux系统的安装三、Linux预备知识Linux目录结构四、Linux基本操作获取命令行右键“打开终端”命令行提示符pwd — Print Working Directorycd — Cha…

01-微服务探讨(摘)

1. 前言 1.1 微服务目的 有效地拆分应用&#xff0c;实现敏捷开发和部署&#xff0c;最终的目标是实现敏捷开发和部署&#xff0c;实现的方式是围绕业务能力*有效地拆分应用*。 微服务就是从各种角度&#xff0c;包括组织的、技术的等来阐释怎样有效地拆分应用&#xff0c;相对…

SSM-Spring

Spring Framwork 1. 核心概念 1.1 IoC控制反转 inversion of control控制反转 使用对象是主动由外部提供对象&#xff0c;此过程对象创建控制权由程序转移到外部。 Spring 提供IoC容器&#xff0c;用来充当IoC思想中的外部。负责创建和初始化等工作&#xff0c;被创建的对象再…

04-HTTPS证书格式及转换

PEM格式的证书文件&#xff08;*.pem&#xff09;由Base64编码的二进制内容和开头行&#xff08;-----BEGIN CERTIFICATE-----&#xff09;、结束行&#xff08;-----END CERTIFICATE-----&#xff09;组成&#xff0c;支持使用EditPlus等文本编辑器打开。本文介绍了将不同格式…

[附源码]java毕业设计教室用电控制系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

数据库的备份和还原(slqserver)

数据库的备份 1.语法&#xff1a; BACKUP DATABASE { database_name | database_name_var } TO <backup_device> [,...n] [ WITH{COPY_ONLY| NAME {backup_set_name | backup_set_name_var }| { NOINIT | INIT }| DESCRIPTION { test | text_variable }| PASSWORD { …

双端队列(双端bfs)解决边权只包含0和1的最短路问题

电路维修 达达是来自异世界的魔女&#xff0c;她在漫无目的地四处漂流的时候&#xff0c;遇到了善良的少女翰翰&#xff0c;从而被收留在地球上。 翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障&#xff0c;导致无法启动。电路板的整体结构是一个 R行 C 列的网…

关于 re.sub 部分替换的解决办法

关于 re.sub 部分替换的解决办法写作背景问题重现解决办法代码详解结尾写作背景 最近本菜鸡遇到一个问题&#xff0c;我想将字符串中某一部分替换成指定内容&#xff0c;而且为了定位到要替换的内容&#xff0c;所以使用正则的时候还需要前后一些字符作为锚点&#xff0c;这可…

linux下基本命令

linux下基本命令一、linux相关快捷键二、linux下内部命令和外部命令2.1 内建命令2.2 外部命令2.3 内建命令和外部命令对比2.4 命令类型查看方法2.4 内建命令和外部命令帮助三、man手册四、相对路径和绝对路径五、pwd和cd命令六、mkdir创建目录七、rmdir删除目录八、linux文件类…

JMeter如何自定义HTTP组件

JMeter是一个优秀的开源项目&#xff0c;我们可以在jmeter的官网了解到如何使用和如何二次开发&#xff1a;Apache JMeter - Apache JMeter™ 因工作需要&#xff0c;最近做了一个JMeter自定义的http组件&#xff08;其实就是在http的基础上加了点东西而已&#xff09;。现就该…

TCO-PEG5-amine,NH2-PEG5-TCO,反式环辛烯-五聚乙二醇-氨基广泛应用于生物学研究

TCO-PEG5-NH2中英文名&#xff1a; CAS号&#xff1a;N/A | 英文名&#xff1a;TCO-PEG5-amine&#xff0c;TCO-PEG5-NH2 |中文名&#xff1a;反式环辛烯-五聚乙二醇-氨基TCO-PEG5-NH2物理参数&#xff1a; CASNumber&#xff1a;N/A Molecular formula&#xff1a;C21H40N2O7…