【Matlab代码】基于遗传算法和蚂蚁优化算法的路径优化问题

简介: 【Matlab代码】基于遗传算法和蚂蚁优化算法的路径优化问题

1 概述

在1959年,Dantzing 和 Ramser在经过实验和思考后,首次提出配送车辆路径优化问题。在物流运输中配送是重要的环节,准确选择配送车辆路径能有效缩短运输时间、降低运输成本、满足顾客需求等目的。关于寻找最优配送线路问题已经成为研究的热点之一2。最初蚁群算法是研究旅行商的问题⒆,现在已经广泛应用到许多寻找最优解的问题中。例如:郑娟毅等利用蚁群算法寻找配送车辆路径最优的问题,张银玲等利用蚁群算法寻找移动机器人的最优路径,鲁丰玲、白俊强等通过蚁群算法寻找无人机最优路径P~,蚁群算法被应用到解决旅游最优路线的问题中9-10]Wang Yong等""利用蚁群算法解决VNF布局网络问题,张肖琳等在绿色环保角度,对油耗、污染物排放等因素进行约束构建路径优化模型,利用蚁群算法找出最优路径。可以看出蚁群算法虽然可以解决许多实际问题,但还存在不足,于是提出最大最小蚂蚁系统吧以及混合蚂蚁系统等方法,都在一定程度上提高了运算效率。虽然大多数文献已经对路径优化进行了充分研究.

本文基于遗传算法和蚂蚁优化算法的路径优化问题


2 Matlab代码

function [ genxx,genyy ] = addallgen( genx,geny,xs,ys,xt,yt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% addallgen():将起始点和目标点存入种群
% genx geny为种群 xs ys,xt,yt分别为起始点和目标点
% genxx genyy 返回包含起始点和目标点的坐标
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[sizex,sizey] = size(genx);     %获取种群维度
genxx = zeros(sizex,sizey+2);   %初始化种群x方向
genxx(:,1) = ones(sizex,1)*xs;  %分别将目标点 起始点加入
genxx(:,end) = ones(sizex,1)*xt;%个体加入
genxx(:,2:end-1)=genx;
genyy = zeros(sizex,sizey+2);   %y方向上同操作
genyy(:,1) = ones(sizex,1)*ys;
genyy(:,end) = ones(sizex,1)*yt;
genyy(:,2:end-1)=geny;
end
function [ newgenx,newgeny ] = jiaocha( genx,geny,pa,fitvalue,xobs,yobs,robs,xs,ys,xt,yt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% jiaocha():交叉操作
% genx geny为种群
% pa 交叉概率
% newgenx newgeny返回新种群
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 关注公众号:荔枝科研社
%% 回复关键字:基于遗传算法和蚂蚁优化算法的路径规划问题
%% 下载全部代码
    [maxfitvalue,maxvalueindex] = max(fitvalue);
    [gensizex,gensizey] = size(genx);         %获取种群的维度 genx 种群个数
    newgenx = zeros(gensizex,gensizey);       %初始化新种群
    newgeny = zeros(gensizex,gensizey);       %初始化新种群
    newgenx(1,:) = genx(maxvalueindex,:);     %保留最优个体
    newgeny(1,:) = geny(maxvalueindex,:);
    genx(maxvalueindex,:) = genx(1,:);        %替换最优个体
    geny(maxvalueindex,:) = geny(1,:);
    genx(1,:) = newgenx(1,:);
    geny(1,:) = newgenx(1,:);
    for i = 2:2:gensizex-1
        pat = rand(1);             %产生随机数
        if pat<=pa                 %产生交叉
            a = rand(1);           %交叉比率
            xx1 = a*genx(i,:)+(1-a)*genx(i+1,:);
            xx2 = a*genx(i+1,:)+(1-a)*genx(i,:);
            yy1 = a*geny(i,:)+(1-a)*geny(i+1,:);
            yy2 = a*geny(i+1,:)+(1-a)*geny(i,:);
            while(1)   %交叉后与障碍物碰撞 则重新交叉
                if (iscollison([xs xx1 xt],[ys yy1 yt],xobs,yobs,robs)~=0)
                    if (iscollison([xs xx2 xt],[ys yy2 yt],xobs,yobs,robs)~=0)
                        break;
                    end
                end
                a = rand(1);           %交叉比率
                xx1 = a*genx(i,:)+(1-a)*genx(i+1,:);
                xx2 = a*genx(i+1,:)+(1-a)*genx(i,:);
                yy1 = a*geny(i,:)+(1-a)*geny(i+1,:);
                yy2 = a*geny(i+1,:)+(1-a)*geny(i,:);
            end
            newgenx(i,:) = xx1;       %保留交叉后的结果
            newgenx(i+1,:) = xx2;
            newgeny(i,:) = yy1;
            newgeny(i+1,:) = yy2;
        else                          %不交叉
            newgenx(i,:) = genx(i,:); %直接保留个体
            newgenx(i+1,:) = genx(i+1,:);
            newgeny(i,:) = geny(i,:);
            newgeny(i+1,:) = geny(i+1,:);
        end
    end
end

3 运行结果


在物流运输中配送是重要的环节,准确选择配送车辆路径能有效缩短运输时间、降低运输成本、满足顾客需求等目的。关于寻找最优配送线路问题已经成为研究的热点之一2。最初蚁群算法是研究旅行商的问题⒆,现在已经广泛应用到许多寻找最优解的问题中。例如:郑娟毅等利用蚁群算法寻找配送车辆路径最优的问题,张银玲等利用蚁群算法寻找移动机器人的最优路径,鲁丰玲、白俊强等通过蚁群算法寻找无人机最优路径P~,蚁群算法被应用到解决旅游最优路线的问题中9-10]Wang Yong等""利用蚁群算法解决VNF布局网络问题,张肖琳等在绿色环保角度,对油耗、污染物排放等因素进行约束构建路径优化模型,利用蚁群算法找出最优路径。可以看出蚁群算法虽然可以解决许多实际问题,但还存在不足,于是提出最大最小蚂蚁系统吧以及混合蚂蚁系统等方法,都在一定程度上提高了运算效率。虽然大多数文献已经对路径优化进行了充分研究.


首次提出配送车辆路径优化问题。在物流运输中配送是重要的环节,准确选择配送车辆路径能有效缩短运输时间、降低运输成本、满足顾客需求等目的。关于寻找最优配送线路问题已经成为研究的热点之一2。最初蚁群算法是研究旅行商的问题⒆,现在已经广泛应用到许多寻找最优解的问题中。例如:郑娟毅等利用蚁群算法寻找配送车辆路径最优的问题,张银玲等利用蚁群算法寻找移动机器人的最优路径,鲁丰玲、白俊强等通过蚁群算法寻找无人机最优路径P~,蚁群算法被应用到解决旅游最优路线的问题中9-10]Wang Yong等""利用蚁群算法解决VNF布局网络问题,张肖琳等在绿色环保角度,对油耗、污染物排放等因素进行约束构建路径优化模型,利用蚁群算法找出最优路径。可以看出蚁群算法虽然可以解决许多实际问题,但还存在不足,于是提出最大最小蚂蚁系统吧以及混合蚂蚁系统等方法,都在一定程度上提高了运算效率。虽然大多数文献已经对路径优化进行了充分研究.

本文基于遗传算法和蚂蚁优化算法的路径优化问题

相关文章
|
存储 传感器 分布式计算
针对大尺度L1范数优化问题的MATLAB工具箱推荐与实现
针对大尺度L1范数优化问题的MATLAB工具箱推荐与实现
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
994 0
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
561 8
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
756 8
|
机器学习/深度学习 供应链 算法
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
423 0
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
604 0
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
597 2
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
443 6
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
525 3
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
480 14

热门文章

最新文章