【路径规划】基于遗传算法求解多车多类型车辆的车辆路径优化问题附matlab代码

article/2025/8/8 10:14:33

1 内容介绍

多车辆多路线的交通路线优化涉及到排序问题,是一个N-P难题,高效精确的算法存在的可能性不大.提出了基于遗传算法的求解方法,给出了实例来证明如何利用遗传算法解决多车辆多路线的优化问题.结果证明,一般情况下利用遗传算法对于多车辆多路线的行车路线优化能得到一组比较满意的解.​

2 仿真代码

%fitness

%输入:种群数量,长度周转判断符,当前种群,车型,车数,点对位置,距离矩阵

%输出:fitness

function [ Chrom_ini_fitness ] = ga_fitness( PAR_ga_chrom_size,PAR_LONG_OR_UPUP,Chrom_ini,PAR_car_cap,PAR_car_kind,BASE_DATA_USING,BASE_D,PAR_car_cost)

for i=1:PAR_ga_chrom_size %PAR_ga_chrom_size输入

    Chrom_this = Chrom_ini(i,:); %抽取当前一组解

    [ALL_PATH,ALL_CARK,ALL_EMPT] = cun_coding_to_path_and_cark(Chrom_this,PAR_car_cap,BASE_DATA_USING); %PAR_car_cap即容积输入,BASE_DATA_USING输入

    %换成路径

    [ALL_LONG_UNT,ALL_UPUP_UNT] = cun_path_info( ALL_PATH,BASE_DATA_USING,BASE_D);

    if size(find(cell2mat(ALL_LONG_UNT)>200),2)~=0

        Chrom_this_fitness = 100000000;

    else

        Chrom_this_fitness = 0;

    end

         %计算长度及周转量

    if PAR_LONG_OR_UPUP == 1 %如果是以长度为标准 %PAR_LONG_OR_UPUP输入

        Chrom_this_fitness = Chrom_this_fitness + sum(cell2mat(ALL_LONG_UNT))*3.4;

        ALL_CARK_NUM = cell2mat(ALL_CARK); %元胞转数值

        for m=1:PAR_car_kind                            %输入PAR_car_kind

            Chrom_car_kind = PAR_car_cap(1,m);

            Chrom_car_kind_num(1,m) = size(find(ALL_CARK_NUM == Chrom_car_kind),1); %算出每种分别有多少辆

            Chrom_this_fitness_add = PAR_car_cost(1,m) * Chrom_car_kind_num(1,m);   %算出增加的固定成本

            

            if m==1&&Chrom_car_kind_num(1,m)>3

            Chrom_this_fitness = Chrom_this_fitness + Chrom_this_fitness_add*10000;       %固定成本累加到fitness上

            end

            if m==2&&Chrom_car_kind_num(1,m)>3

            Chrom_this_fitness = Chrom_this_fitness + Chrom_this_fitness_add*10000;       %固定成本累加到fitness上

            end

            if m==3&&Chrom_car_kind_num(1,m)>3

            Chrom_this_fitness = Chrom_this_fitness + Chrom_this_fitness_add*10000;       %固定成本累加到fitness上

            end

            

            Chrom_this_fitness = Chrom_this_fitness + Chrom_this_fitness_add;       %固定成本累加到fitness上

        end

    

    end

    if PAR_LONG_OR_UPUP == 2 %如果是周转量

        Chrom_this_fitness = sum(cell2mat(ALL_UPUP_UNT)); 

        ALL_CARK_NUM = cell2mat(ALL_CARK); %元胞转数值

    end  

    

    Chrom_ini_fitness(i,1) = Chrom_this_fitness;

end

end

3 运行结果

4 参考文献

[1]郭鸿伟, 王娅, 郑应文. 基于遗传算法的多车辆多路线的优化方法研究[J]. 江苏电器, 2008.

[2]付春菊, 吴成东, 雷寒,等. 基于遗传算法的车辆路径规划问题研究[J]. 科技广场, 2008(10):2.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

 


http://chatgpt.dhexx.cn/article/4pGm7H9H.shtml

相关文章

机动车登记信息代码

原链接:机动车登记信息代 搜索结果本栏目用于收集和整理行业相关标准,如机械行业,化工行业等。http://www.gb99.cn/e/search/result/?searchid76243针对其中第七项车辆信息牌照代码如下:

利用低代码平台进行车辆管理,为交通行业添砖加瓦

概要:本文介绍了交通行业车辆管理的重要性,并详细阐述了基于低代码平台设计的车辆管理系统的优势。通过快速开发、易于维护、增加灵活性、提高数据可靠性、降低成本以及实时监控等多个方面,这种车辆管理系统可以帮助企业提高效率和降低成本&a…

(c++课程设计)简单车辆管理系统(有五种类型的车辆)代码+报告

关于这个课程设计 ,差点没把我头发愁没。 好了其实本质还是东拼西凑,编程能力没怎么长进,花里胡哨的东西却学了不少(不是) 万恶的学院,虽然要求三人一组,但是却分一二三类,三个人代…

什么是车辆识别代码(VIN)

车辆识别代码(VIN),VIN是英文Vehicle Identification Number(车辆识别码)的缩写。因为ASE标准规定:VIN码由17位字符组成,所以俗称十七位码。正确解读VIN码,对于我们正确地识别车型,以致进行正确地诊断和维修都是十分重要的。车辆识别代码根据国家车辆管理标准确定,包…

Eigen学习笔记1:在VS2015下Eigen(矩阵变换)的配置

一、Eigen简介 Eigen是一个高层次的C 库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。 Eigen适用范围广,支持包括固定大小、任意大小的所有矩阵操作,甚至是稀疏矩阵;支持所有标准的数值类型&…

鲁鹏老师三维重建课程之单视图重建

配置Json环境 使用Jsoncpp包中的.cpp和 .h文件 解压上面下载的 Jsoncpp 文件,把 jsoncpp-src-0.5.0文件拷贝到工程目录下, 将 jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\include\json 和 jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\src\lib_json 目录里的文…

常用 Linux 软件汇总!很全,但不敢说最全

点击下方公众号「关注」和「星标」 回复“1024”获取独家整理的学习资料! 音频 Airtime - Airtime 是一款用于调度和远程站点管理的开放广播软件 Ardour - 在 Linux 上录音,编辑,和混音 Audacious - 开源音频播放器,按你想要的方式…

RoadMap:面向自动驾驶视觉定位的轻量级语义地图(ICRA2021)

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 标题:RoadMap: A Light-Weight Semantic Map for Visual Localization towards Autonomous Driving 作者:Tong Qin, Yuxin Zheng, Tongqing Chen, Yilun Chen, and Qing Su 来源&#…

计算机图形学作业( 三):使用openGL画一个立方体,并实现平移、旋转和放缩变换

计算机图形学作业( 三):使用openGL画一个立方体,并实现平移、旋转和放缩变换 题目引入GLM库画立方体模型、观察和投影修改着色器立方体的顶点深度测试立方体变换平移旋转放缩渲染管线的理解代码题目 引入GLM库 利用 openGL 进行 3D 绘图需要用到大量的数学矩阵运算,而 Op…

一文掌握基于深度学习的自动驾驶小车开发(Pytorch实现,含完整数据和源码,树莓派+神经计算棒)

目录 一 . 基本介绍 二、模拟平台安装和基本使用 三、基于OpenCV的自动驾驶控制 3.1基于HSV空间的特定颜色区域提取 3.2基于canny算子的边缘轮廓提取 3.3感兴趣区域定位 3.4基于霍夫变换的线段检测 3.5动作控制:转向角 四、基于深度学习的自动驾驶控制 4.…

OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序)

 实验平台:win7,VS2010 先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): a.鼠标拖拽旋转物体,类似于OGRE中的“OgreBites::CameraStyle::CS_ORB…

Python-WingIde各种调试方法

一、 本地从IDE启动文件调试 主要步骤:设置断点,F5开始调试 二、 本地从IDE外启动文件调试 1.) 从WingIDE的安装目录(默认C:\Program Files (x86)\Wing IDE 6.0)复制wingdbstub.py到被调试代码所在目录 2.) 代码中添加importwingdbstub 3.) IDE左下角设置如图 4.) 在…

图形处理单元(GPU)的演进

CPU 和 GPU 好久没有更新了,最近在阅读 CUDA 相关的一些论文,因为都是碎片化阅读,容易导致读过后,可能过一段时间又忘记掉,所以决定抽时间翻译翻译阅读的论文,一方面增强自己记忆,一方面与大家共…

图形学 光栅化 matlab 源代码

实验二:直线的光栅化算法 DDA Bresenham 实验三:圆的光栅化算法 编程实现两种中点画圆算法,第2种算法利用二阶差分方法; 实验四:多边形扫描转换算法 4.1对多边形扫描线填充算法进行简要描述,并给出多边形扫…

图形学入门合集1

Games101作业0 1虚拟机的使用 1.1虚拟机的安装 这里我们使用 Oracle VM VirtualBox 虚拟机。如果你使用 Windows 系统,你可以直接下载[链接](https://download.virtualbo%20%09%09x.org/virtualbox/6.1.4/VirtualBox-6.1.4-136177-Win.exe),下载完成后…

Recorder︱图像特征检测及提取算法、基本属性、匹配方法

在做图像的研究,发现对图像本质、内核以及可以提取的特征方式一点儿都不懂,赶紧补补课。 . 一、图像常用属性 本节指的是一般来说,图像处理的一些角度,也是根据一些美图软件最为关注的一些图像属性: 基本属性&#…

视觉SLAM十四讲学习笔记-第三讲-相似、仿射、射影变换和eigen程序、可视化演示

专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和E…

多视图几何三维重建实战系列之MVSNet

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 1. 概述 MVS是一种从具有一定重叠度的多视图视角中恢复场景的稠密结构的技术,传统方法利用几何、光学一致性构造匹配代价,进行匹配代价累积,再估计深度值。虽然传统方法有较…

一文搞懂NSCT(Nonsubsampled Contourlet)变换,matlab程序实现并讲解NSCT_TOOLBOX的使用方法

文章目录 一、前言二、NSCT理论背景三、NSCT图像表述3.1 图像变换综述3.2 非下采样的金字塔分解3.2 非下采样的方向滤波器组分解 四、NSCT的matlab程序实现五、总结5.1 NSCT现存不足5.2 致谢 一、前言 在这篇文章中我将从图像分解领域的发展方面为大家讲解NSCT的出现背景和实现…

视图几何三维重建实战系列之MVSNet

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 1. 概述 MVS是一种从具有一定重叠度的多视图视角中恢复场景的稠密结构的技术,传统方法利用几何、光学一致性构造匹配代价,进行匹配代价累积,再估计深度值。虽然传统方法有较…