目录

1、物流中心选址问题说明

2、模型构建

3、遗传算法

 3.1、染色体编码方式

 3.2、选择算子

 3.3、交叉算子和变异算子

 4、部分代码展示


1、物流中心选址问题说明

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代

如图所示,物流网络主要由生产制造商集合、配送中心集合、销售点集合、客户集合四个集合所构成。本文主要关注的问题如下:

        1、主要关注物流网络节点的选择和网络连接方式的确定,物流网络节点的选择主要包括销售中心的选择;网络连接方式的确定包括厂商与运输中心之间的连接、运输中心与销售中心的连接,目前假设生产制造厂商只有1个。

        2、考虑的碳排放只考虑二氧化碳的排放在内,且只考虑运输过程中的排放,配送中心和销售中心的建立或其他方式所产生的二氧化碳不计算在内。

        3、在运输线上运用到了更加贴近现实的方案:生产厂商和配送中心之间的运输可以选择公路、铁路和水路三种运输方式,而配送中心与销售中心之间只允许采用公路运输方式完成配送;且一个销售中心的货物只能由一个配送中心提供。

2、模型构建

k:交通运输方式,1为公路运输,2为铁路运输,3为水路运输, k={1,2,3}。

i: 开设第i个配送中心,i={1,2,3,...,n}

j:开设第j个销售中心,j={1,2,3,...,m}

物流配送中心选址与路径优化问题python 物流配送中心选址算法_遗传算法_02 :第j个销售中心的需求量

物流配送中心选址与路径优化问题python 物流配送中心选址算法_遗传算法_03 :第i个配送中心最低设立货物数量下限

物流配送中心选址与路径优化问题python 物流配送中心选址算法_遗传算法_04 :从生产厂运输到第i个运输中心货物采用第k种运输中心的比率

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_05 :从生产厂运输到第i个运输中心货物采用第k种运输中心的运输距离

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_06 :从生产厂运输到第i个运输中心货物采用第k种运输中心的运输费率

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_07 :第k种运输方式的单位碳排量

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_08 :开设第i个运输中心的固定费用

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_09 :第i个运输中心的是否开启的01变量

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_10 :第j个销售中心是否由第i个运输中心供货的01决策变量

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_11 :采用公路运输方式的第i个运输中心和第j个销售中心之间的距离

物流配送中心选址与路径优化问题python 物流配送中心选址算法_matlab_12 :采用公路运输方式的第i个运输中心和第j个销售中心之间的运输费率

 目标构建和限制条件:

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_13

利用模糊隶属度的方法将多目标转换为单目标再求解,这里的Z1和Z2的模糊隶属度都取0.5。

3、遗传算法

        遗传算法(Genetic Algorithm),又称为进化算法,于20世纪70年代由美国学者约翰.霍华德教授提出的,是一种根据达尔文自然选择模拟计划而得的计算模型,原理是通过模拟自然界生物进化规律的方式来寻求最优解。具体运行方式如下图所示。

物流配送中心选址与路径优化问题python 物流配送中心选址算法_遗传算法_14

         

 3.1、染色体编码方式

        这里染色体编码方式为对销售中心进行自然数编码。具体解码方式为编号为销售中心的号码,例如X=(1 2 2 2 2 2 2 2 2 2 2 2 2 3)的解码方式如下图所示。

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_15

 3.2、选择算子

        本文在初始化种群后,将会进行选择操作;经过多次实验,常用的轮盘赌方法结果收敛效果很差(见左下图),通过采用锦标赛的方法,大约只需要不到200次迭代即可(见右下图),使得结果收敛。其具体方法是在所有的染色体中随机选取若干个个体,如果这若干个染色体的适应度大于父代染色体适应度,则会存放到父代染色体中,进行下一次繁殖,这样就可以达到父代染色体中的值达到最优,直至收敛。

物流配送中心选址与路径优化问题python 物流配送中心选址算法_编码方式_16

物流配送中心选址与路径优化问题python 物流配送中心选址算法_迭代_17

交叉算子和变异算子

 

物流配送中心选址与路径优化问题python 物流配送中心选址算法_遗传算法_18

 4、部分代码展示

%问题:找到成本和碳排放最低的网络运行方案
%编码:自然数编码
%选择:锦标赛
%交叉:顺序交叉
%变异:两个随机位置互换

clear;
clc;
close all;
tic;
%% Ⅰ通过data将数据导入,并设置相关参数
[N,D,Iter,Pc,Pm,d1,d2,q,c1,t,e,g,cIndex,mIndex] = data;

[A,B] = size(q);

[R,C] = size(d2);
[~,K] = size(e);

GA = zeros(N,D+1); %前D位置为销售中心对应的运输中心位置  D+1 位置为总费用
%%  Ⅱ 初始化
[GA] = initialization(d2,N,D,GA,c1,t,d1,q,g,e,R,K,cIndex,mIndex);
%%  Ⅲ 迭代
[GA,Gbest,fitnesses] = iteration(N,D,Iter,Pc,Pm,d2,GA,c1,t,d1,q,g,e,R,K,cIndex,mIndex);
%% Ⅳ命令行显示,并画图
[value,row] = min(GA(:,D+1));
disp(['最优方案出现在第',num2str(row),'代']);
disp(['最优方案为:',num2str(GA(row,1:D))]);
disp(['minL为:',num2str(min(GA(:,D+3)))]);
disp(['其中成本为:',num2str(GA(row,D+1)/cIndex)]);
disp(['碳排放为:',num2str(GA(row,D+2)/mIndex)]);

subplot(1,2,1)
plot(Gbest);
title("仿真结果")
xlabel("迭代次数")
ylabel("费用")

subplot(1,2,2)
plot(fitnesses);
title("适应度迭代过程")
xlabel("迭代次数")
ylabel("适应度")
toc

        不好意思,近期本人网上冲浪的时间较少,没有回到大家信息。代码是本人本科毕业时所编写,如有问题请随时咨询我。