m基于优化算法的多车辆的路径规划matlab仿真,对比GA,PSO以及烟花算法

news2024/11/27 22:42:31

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       路径规划是运动规划的主要研究内容之一。运动规划由路径规划和轨迹规划组成,连接起点位置和终点位置的序列点或曲线称之为路径,构成路径的策略称之为路径规划。路径规划在很多领域都具有广泛的应用。在高新科技领域的应用有:机器人的自主无碰行动;无人机的避障突防飞行;巡航导弹躲避雷达搜索、防反弹袭击、完成突防爆破任务等。在日常生活领域的应用有:GPS导航;基于GIS系统的道路规划;城市道路网规划导航等。在决策管理领域的应用有:物流管理中的车辆问题(VRP)及类似的资源管理资源配置问题。通信技术领域的路由问题等。凡是可拓扑为点线网络的规划问题基本上都可以采用路径规划的方法解决。

       烟花算法 (Fireworks Algorithm),缩写为 FWA,是受到夜空中烟花爆炸的启发而提出的一种群体智能算法。
       自从烟花算法的开创性论文由谭营教授等人于2010年发表之后 ,业界对烟花算法的研究逐步深入和铺开。通过对原始烟花算法的细致、深入的分析,针对原始烟花算法(FWA)的不足,提出了大量的改进方法,并据此发展了各种改进算法,以及与其他方法的混合方法,大大提高的原始烟花算法的性能,同时研究了烟花算法在求解不同类型优化问题的能力,还有大量的研究人员进行了烟花算法的应用研究,给出了一些典型的成功应用案例。
       烟花算法开始迭代,依次利用爆炸算子、变异算子、映射规则和选择策略,直到达到终止条件,即满足问题的精度要求或者达到最大函数评估次数。烟花算法的实现包括如下的几个步骤:
1)在特定的解空间中随机产生一些烟花,每一个烟花代表解空间的一个解。
2)根据适应度函数计算每一个烟花的适应度值,并根据适应度值产生火花。火花的个数是基于免疫学中的免疫浓度的思想来计算的,即适应度值越好的烟花产生火花的数目越多。
3)根据现实中的烟花属性并结合搜索问题的实际情况,在烟花的辐射空间内产生火花。(某个烟花的爆炸幅度的大小由该烟花在函数上的适应度值决定,适应度值越大,爆炸幅度越大,反之亦然)。每一个火花代表解空间中的一个解。为了保证种群的多样性,需要对烟花进行适当变异,如高斯变异。
4)计算种群的最优解,判定是否满足要求,如果满足则停止搜索,没有满足则继续迭代。迭代的初始值为此次循环得到的最好的解和选择的其他的解。

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

3.MATLAB核心程序

%最大迭代次数
Iteration          = 100;     
%种群数目
Pops               = 1000;  
c1                 = 2.5;         %学习因子1
c2                 = 2.5;         %学习因子2
w                  = 0.9;         %惯性权重
%初始化路线存储变量
Routes             = func_routeList(Dim);     
Lens               = length(Routes);        
Lens2              = 30;
Tabu               = zeros(Lens,1);
%初始化
Sets.Posxy         = [];
Sets.fitness       = [];
Sets.pops          = [];
pop                = repmat(Sets,Pops,1);
BestSol.fitness    = inf;

%初始化种群
for i=1:Pops
    pop(i).Posxy                 = randperm(Dim);
    [pop(i).fitness,pop(i).pops] = Objs(pop(i).Posxy);
    y(i).Posxy                   = pop(i).Posxy;
    newpop(i).Posxy = pop(i).Posxy;
end
Bestfit      = zeros(Iteration,1);
NewSets      = Sets;
pg           = pop(1).Posxy;

for it=1:Iteration
    it
    for i=1:Pops
        if it==1
           v{i} = c1*rand*(y(i).Posxy-newpop(i).Posxy)+c2*rand*(pg-newpop(i).Posxy); 
        else
           v{i} = w*v{i}+c1*rand*(y(i).Posxy-newpop(i).Posxy)+c2*rand*(pg-newpop(i).Posxy);    
        end
    end
    for i=1:Pops
        tmps            = newpop(i).Posxy+v{i};
        [VV,II]         = sort(tmps);
        
        newpop(i).Posxy = II;
        tmps            = newpop(i).Posxy;
        for ij = 1:length(tmps)
            if tmps(ij)<=1;
               tmps(ij)=1; 
            end
        end
        newpop(i).Posxy = tmps;
    end
    %更新目标
    for i = 1:Pops
       [newpop(i).fitness,newpop(i).pops] = Objs(newpop(i).Posxy);
       if pop(i).fitness<BestSol.fitness
          BestSol=pop(i);
       end
       y(i).Posxy = newpop(i).Posxy;
    end
    
    %路线处理
    pop        = [pop;newpop']; 
    [Vmax,Idx] = sort([pop.fitness]);
    pop        = pop(Idx(1:Pops));
    pops       = pop(1);
    bestnewsol = pop(1);
    for i=1:Lens
        if Tabu(i)==0
           newsol.Posxy                 = func_variation2(pops.Posxy ,Routes{i});
           [newsol.fitness,newsol.pops] = Objs(newsol.Posxy);
           newsol.ActionIndex           = i ;
           if newsol.fitness<=bestnewsol.fitness
              bestnewsol = newsol;
           end
        end
    end

    if pops.fitness == bestnewsol.fitness
       pops = bestnewsol;
       pops.ActionIndex = [] ;
    else
       pops = bestnewsol ;
    end
    for i=1:Lens
        if i== pops.ActionIndex
           Tabu(i)=Lens2;          
        else
           Tabu(i)=max(Tabu(i)-1,0);  
        end
    end

    pop(1).Posxy    =  pops.Posxy    ;
    pop(1).fitness  =  pops.fitness;
    pop(1).pops     =  pops.pops;
    
    if pop(1).fitness <= BestSol.fitness
       BestSol=pop(1);
    end
    Bestfit(it)= BestSol.fitness;
 
    pg         = pop(1).Posxy;
end
 
bestN  = BestSol.pops.Infor_Route.seqs;
for ij = 1:Sysm.NCar
    seqs2{ij}  = BestSol.pops.Infor_Route(ij).seqs;
    LENS(ij)   = BestSol.pops.Infor_Route(ij).Rlen;
end
02_105m

4.完整MATLAB

V

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

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

相关文章

微软12月多个安全漏洞修复解决方案

安全狗应急响应中心监测到&#xff0c;微软发布了2022年12月份安全更新&#xff0c;事件等级&#xff1a;严重&#xff0c;事件评分&#xff1a;10.0。此次安全更新发布了52个漏洞的补丁&#xff0c;主要覆盖了以下组件&#xff1a;Azure; Office and Office Components; SysIn…

提高电网的稳态稳定性(Matlab代码实现)

目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 一点小智慧 5 Matlab代码实现 1 概述 随着电力系统的复杂性和规模的增加&#xff0c;电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略&#xff0c;该策略基于通过…

如何使用typeScript实现贪吃蛇游戏?

1.配置文件 配置文件写过一次之后&#xff0c;可以复制粘贴使用&#xff0c;修改部分细节就可以了。 package.json {"name": "snake","version": "1.0.0","description": "","main": "index.js&q…

网络协议——RPC协议综述

拿最简单的场景&#xff0c;客户端调用一个加法函数&#xff0c;将两个整数加起来&#xff0c;返回它们的和。 如果放在本地调用&#xff0c;那是简单的不能再简单了&#xff0c;。但是一旦变成了远程调用&#xff0c;门槛一下子就上去了。 如何解决这五个问题&#xff1f; …

秦力洪复盘2022:蔚来的长板和误判

作者 | 张祥威 编辑 | 王博最初我们看蔚来&#xff0c;觉得它是中国的特斯拉。后来它主动挑战宝马&#xff0c;以46万的平均单价在高端品牌阵营厮杀&#xff0c;看上去又具备成为宝马的潜力。再到后来&#xff0c;蔚来宣布将推出全新品牌&#xff0c;喊话月销5万辆&#xff0c;…

[附源码]Nodejs计算机毕业设计基于大数据的高校国有固定资产管理及绩效自动评价系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Django学习15 -- 验证码

1. 验证码 验证码&#xff08;CAPTCHA&#xff0c;Completely Automated Public Turing test to tell Computers and Humans Apart&#xff09;&#xff0c;全自动区分计算机和人类的图灵测试的简称&#xff0c;一种区分用户是计算机还是人的公共全自动程序。防止恶意破解密码、…

Java+Swing+mysql实现学生选课管理系统

JavaSwing实现学生选课管理系统一、系统介绍二、系统展示1.课程查询2.课程添加3.退课三、系统实现四、其他1.其它系统2.获取源码一、系统介绍 本系统实现了学生登录和管理员登录&#xff0c;学生实现选课&#xff0c;查看已选课程&#xff0c;修改密码&#xff0c;查看学生信息…

Vue.use 与 Vue.prototype 在注册插件时,使用上有什么区别

很多使用Vue开发的童鞋&#xff0c;可能对Vue的原型对象prototype有了解过&#xff0c;但对于Vue.use只知如何使用&#xff0c;却不知其背后的含义。那么&#xff0c;今天我们就来瞧一瞧Vue.use()背后的逻辑。 &#x1f388; 首先&#xff0c;Vue.use()是什么&#xff1f; 官方…

外汇天眼:投资200美元起 每天收益7%!千万别被蒙蔽双眼!

12月14日&#xff0c;英国金融行为监管局( FCA )首次对 GoldVest FX 发出警告&#xff0c;提示投资者警惕与这家未经授权的公司打交道。 FCA警告称&#xff1a;GoldVest FX 在未经我们授权的情况下在英国提供金融服务或产品&#xff0c;如果一旦遭受资金损失&#xff0c;您将无…

logback-spring.xml 配置化说明记录如何在SpringBoot项目里面配置logback-spring.xml教程说明

目录 前言描述 logback-spring.xml 配置项详细 配置位置路径 前言描述 无论什么样的java应用都需要日志分级&#xff0c; 日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。1.static L…

【三维目标检测】FCAF3D(二)

FCAF3D数据和源码配置调试过程请参考上一篇博文&#xff1a;【三维目标检测】FCAF3D&#xff08;一&#xff09;_Coding的叶子的博客-CSDN博客。本文主要详细介绍FCAF3D网络结构及其运行中间状态。 1 模型总体过程 FCAF3D模型的整体结构如下图所示。该模型属于anchor-free目标…

SIoU Loss 原理与代码解析

paper&#xff1a;SIoU Loss: More Powerful Learning for Bounding Box Regression code&#xff1a;https://github.com/meituan/YOLOv6/blob/main/yolov6/utils/figure_iou.py#L75 存在的问题 之前的目标检测模型的回归损失考虑到了预测的bounding box和gt box之间的dis…

【头歌C语言程序与设计】选择结构程序设计进阶

目录 写在前面 正文 第1关&#xff1a;快递费用计算 第2关&#xff1a;计算一元二次方程的根 第3关&#xff1a;产品信息格式化 写在最后 写在前面 本文代码是我自己所作&#xff0c;本人水平有限&#xff0c;可能部分代码看着不够简练&#xff0c;运行效率不高,但都能运…

cmake笔记 编译与链接

文章目录概述编译最简单的hello world编译工程化的helloWorld更工程化的Hello World&#xff1a; 构建静态库与动态库如何使用外部共享库和头文件其他有用的cmake命令include_directoriesfind_package file(GLOB variable [RELATIVE path] [globbing expressions]...)windows 下…

【Maven基础】IDEA环境使用

第一节 创建父工程 1、创建 Project 2、开启自动导入 创建 Project 后&#xff0c;IDEA 会自动弹出下面提示&#xff0c;我们选择**『Enable Auto-Import』**&#xff0c;意思是启用自动导入。 这个自动导入一定要开启&#xff0c;因为 Project、Module 新创建或 pom.xml 每次…

微服务的相关概念及知识

微服务概念 微服务的概念最早是在2014年由Martin Fowler和James Lewis共同提出&#xff0c;他们定义了微服务是由单一应用程序构成的小服务&#xff0c;拥有自己的进程与轻量化处理&#xff0c;服务依业务功能设计&#xff0c;以全自动的方式部署&#xff0c;与其他服务使用HT…

6-zookeeper-hadoop-ha原理简述-fail

6-zookeeper-hadoop-ha故障转移机制&#xff0c;原理简述: HA概述&#xff08;2.X版本架构&#xff09;。 1&#xff09;、HA&#xff08;High available&#xff09;&#xff0c;即高可用&#xff08;7*24小时不间断服务。&#xff09; 1、zookeeper协调服务&#xff0c;通…

jsp+ssm计算机毕业设计毕业设计管理系统【附源码】

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

Qt扫盲-QScrollBar理论总结

QScrollBar理论总结1. 简述2. 滚动条组成3. 常用设置5. 信号6. 键盘功能1. 简述 QScrollBar其实就是一个滚动条控件&#xff0c;它使用户能够访问大于用于显示文档的小组件的文档部分。它提供了用户在文档中的当前位置以及可见的文档量的可视指示。滚动条通常配备其他控件&…