✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。​

⛄ 内容介绍

在军事运输中,采用多种运输方式联合投送是加强战略投送能力建设发展的重要途径,而路径规划是制定多式联运输送保障方案的关键第一步。本文提出了一个以遗传算法为主框架的解决方案,用来求解多式联运的路径规划问题。首先,本文从运输需求内容、运输过程、应用场景等角度对多式联运在军事运输中的应用进行分析,定义多式联运路径规划问题,建立分别以时问最短、路线最短、成本最低为目标的多式联运路径规划模型。该问题是一个规模庞大的组合优化问题,属于NP-hard问题。提出了以遗传算法为主,A*算法为辅的求解思路。接着,参考层次空间推理理论,将铁路、水路、公路、航空等多种运输方式的道路网络数据融合并分层,构建多式联运路径规划专用的网络拓扑。这样的分层处理,能够将单一运输方式道路网络中的最短路这一子问题剥离出来,也能够有效地降低遗传算法搜索空间的规模。

⛄ 部分代码

function mupop=mutetu(pop,GA,Math,P,qi,zdd)

mupop=cell(size(pop));

    for i=1:GA.popsize

        indv=cell2mat(pop(i));

        indv2= indv;

        if rand< GA.pm

            if length(indv)<=3

                k = 2;

            else

                k=round(rand()*(length(indv)-3))+2;% 只能取去掉起点和终点后的点的随机索引。

%             k= unidrnd(length(indv));

            end

            %  单点变异

            if mod(k,2)==0

                try

                    math = cell2mat(Math(indv(k-1),indv(k+1)));% 所有可行的运输方式

                    math2 = setdiff(math,indv(k));

                catch ErrorInfo

                    disp(ErrorInfo);

                end

                if isempty(math2)

                    mupop(i)={indv};

                else    

                    indv2(k)= math2(randi(length(math2)));

                    flag = test(indv2,qi,zdd);

                    if flag ==1

                        [v1]=Objfun2( indv,Modd);

                        [v2]=Objfun2( indv2,Modd);

                        if v1>v2

                             mupop(i)={indv2};

                        else

                            mupop(i)={indv};

                        end

                    else

                         mupop(i)={indv};

                    end            

                end

            else

                % 节点变异

                indv2 = cell2mat(proM(indv(k-1),indv(end),P,Math,1));

                flag = test(indv2,qi,zdd);

                %             mupop(i)={indv};

                if flag ==1

                    mupop(i)={indv2};

                else

                    mupop(i)={indv};

                end

%                 mu_Point(k,indv,P,Math);

            end

        else 

              mupop(i)={indv};

        end

    end

end

⛄ 运行结果

【路径规划-多式联运】基于遗传算法求解多式联运冷链运输成本优化问题附matlab代码_路径规划

【路径规划-多式联运】基于遗传算法求解多式联运冷链运输成本优化问题附matlab代码_路径规划_02

【路径规划-多式联运】基于遗传算法求解多式联运冷链运输成本优化问题附matlab代码_参考文献_03

【路径规划-多式联运】基于遗传算法求解多式联运冷链运输成本优化问题附matlab代码_遗传算法_04

【路径规划-多式联运】基于遗传算法求解多式联运冷链运输成本优化问题附matlab代码_遗传算法_05

【路径规划-多式联运】基于遗传算法求解多式联运冷链运输成本优化问题附matlab代码_参考文献_06

⛄ 参考文献

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除