基于改进遗传算法的卡车和两架无人机旅行推销员问题(D2TSP)(Matlab代码实现)

简介: 基于改进遗传算法的卡车和两架无人机旅行推销员问题(D2TSP)(Matlab代码实现)

1 概述

 本文为解决卡车和两个无人机旅行推销员的问题,表示为串联团队,无人机提供最后一英里的努力。使用遗传算法(路由突变)来解决问题。该问题可以解决随机生成坐标的100个城市的D2TSP。该解决方案基于最小化时间而不是距离。最短时间计算基于卡车或无人机在操作中交付的最长时间。操作表示为无人机(或两者)发射、发送交付然后在会合位置恢复的节点或停靠点。每架无人机都受到航程和容量的限制。因此,操作中的停靠范围和停靠次数受到无人机约束的限制。


2 运行结果

部分代码:

% Sanity Checks
    popSize     = max(12,12*ceil(popSize(1)/12));
    numIter     = max(1,round(real(numIter(1))));
    showProg    = logical(showProg(1));
    showResult  = logical(showResult(1));
    showWaitbar = logical(showWaitbar(1));
    % Initialize the Populations
    popRoute = zeros(popSize,n); %routes        
    popTrk   = zeros(popSize,n); %truck route
    popDrn   = zeros(popSize,n); %drone route
    popDrn2   = zeros(popSize,n); %drone 2 route
    popOps   = zeros(popSize,n); %operations drone 1
    popRoute(1,:) = (1:n);
    rp =popRoute(1,:);
    %[rp, optr, oppr, opdr] = map_cir2(rp) ;  
    [rp, optr, oppr, opdr, opdr2] = map_cir2(rp);
    popRoute(1,:) = map_cir( rp);   
    popTrk(1,:)   = optr;    
    popDrn(1,:)   = opdr; 
    popDrn2(1,:)  = opdr2;
    popOps(1,:)   = oppr;
    for k = 2:popSize
        [op, tr, dr, dr2]  = rand_ops_d_o();
       % op=oppr; tr=optr; dr=opdr; dr2=opdr2;
        popRoute(k,:) = randperm(n);
         if mod(k,2)==0    % swap
            r = sort([randi(n) randi(n)]);
            r1=r(1); r2=r(2);
            popRoute(k,:)= popRoute(1,:);
            popRoute(k,[r1 r2]) = popRoute(k,[r2 r1]); 
        elseif mod(k,3)==0 % flip
            r = sort([randi(n) randi(n)]);
            r1=r(1); r2=r(2);
            popRoute(k,:)= popRoute(1,:);
            popRoute(k,r1:r2) = popRoute(k,r2:-1:r1); 
        elseif mod(k,4)==0% swap, flip
            r = sort([randi(n) randi(n)]);
            r1=r(1); r2=r(2);
            popRoute(k,:)= popRoute(1,:);
            popRoute(k,[r1 r2]) = popRoute(k,[r2 r1]);
            popRoute(k,r1:r2)   = popRoute(k,r2:-1:r1);
        else
            r = sort([randi(n) randi(n)]);
            r1=r(1); r2=r(2);
            popRoute(k,:)= popRoute(1,:);
            popRoute(k,[r1 r2]) = popRoute(k,[r2 r1]);
           % popRoute(k,r1:r2)   = popRoute(k,r2:-1:r1);    
        end
        popTrk(k,:)   = tr;
        popOps(k,:)   = op;
        popDrn(k,:)   = dr;
        popDrn2(k,:)  = dr2;
    end
    % Run the GA
    globalMin   = Inf;
    totalDist    = zeros(1,popSize);
    totalTime    = zeros(1,popSize);              % total time for route
    totalEnergy  = zeros(1,popSize);              % total energy for route
    totalCost    = zeros(1,popSize);              % cost of route
    totalCostkm  = zeros(1,popSize);
    totalCosthr  = zeros(1,popSize);
    totalEnergyP = zeros(1,popSize);
    distHistory  = zeros(1,numIter);      
    timeHistory  = zeros(1,numIter);
    energyHistory= zeros(1,numIter);
    costHistory  = zeros(1,numIter);
    costkmHistory= zeros(1,numIter);
    costhrHistory= zeros(1,numIter);
    tmpPopRoute  = zeros(12,n);
    tmpPopTrks   = zeros(12,n);
    tmpPopOps    = zeros(12,n);
    tmpPopDrns   = zeros(12,n);
    tmpPopDrns2  = zeros(12,n);
    newPopRoute  = zeros(popSize,n);
    newPopTrks   = zeros(popSize,n);
    newPopOps    = zeros(popSize,n);
    newPopDrns   = zeros(popSize,n);
    newPopDrns2  = zeros(popSize,n);


3 参考文献

[1]黄书召,田军委,乔路,王沁,苏宇.基于改进遗传算法的无人机路径规划[J.计算机应用,2021,41(02):390-397.

4 Matlab代码实现

相关文章
|
5天前
|
人工智能 算法 数据安全/隐私保护
基于遗传优化的SVD水印嵌入提取算法matlab仿真
该算法基于遗传优化的SVD水印嵌入与提取技术,通过遗传算法优化水印嵌入参数,提高水印的鲁棒性和隐蔽性。在MATLAB2022a环境下测试,展示了优化前后的性能对比及不同干扰下的水印提取效果。核心程序实现了SVD分解、遗传算法流程及其参数优化,有效提升了水印技术的应用价值。
|
11天前
|
存储
基于遗传算法的智能天线最佳阵列因子计算matlab仿真
本课题探讨基于遗传算法优化智能天线阵列因子,以提升无线通信系统性能,包括信号质量、干扰抑制及定位精度。通过MATLAB2022a实现的核心程序,展示了遗传算法在寻找最优阵列因子上的应用,显著改善了天线接收功率。
|
28天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
该算法结合了遗传算法(GA)与分组卷积神经网络(GroupCNN),利用GA优化GroupCNN的网络结构和超参数,提升时间序列预测精度与效率。遗传算法通过模拟自然选择过程中的选择、交叉和变异操作寻找最优解;分组卷积则有效减少了计算成本和参数数量。本项目使用MATLAB2022A实现,并提供完整代码及视频教程。注意:展示图含水印,完整程序运行无水印。
|
16天前
|
算法 决策智能
基于GA-PSO遗传粒子群混合优化算法的TSP问题求解matlab仿真
本文介绍了基于GA-PSO遗传粒子群混合优化算法解决旅行商问题(TSP)的方法。TSP旨在寻找访问一系列城市并返回起点的最短路径,属于NP难问题。文中详细阐述了遗传算法(GA)和粒子群优化算法(PSO)的基本原理及其在TSP中的应用,展示了如何通过编码、选择、交叉、变异及速度和位置更新等操作优化路径。算法在MATLAB2022a上实现,实验结果表明该方法能有效提高求解效率和解的质量。
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
162 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
117 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
84 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
6月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)

热门文章

最新文章