物流选址基于遗传算法实现物流选址matlab源码

Posted 博主QQ2449341593

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了物流选址基于遗传算法实现物流选址matlab源码相关的知识,希望对你有一定的参考价值。

遗传算法

• 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法 则,它最初由美国Michigan大学的J. Holland教授于1967年提出。 • 遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一 定数目的个体(individual)组成。因此,第一步需要实现从表现型到基因型的映射即编码工作。初代种群产生之后,按照 适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度 (fitness)大小选择个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉和变异,产生出代表新 的解集的种群。这个过程将导致种群像自然进化一样,后生代种群比前代更加适应于环境,末代种群中的最优个体经过解 码(decoding),可以作为问题近似最优解。

• 遗传算法有三个基本操作:选择(Selection)、交叉(Crossover)和变异(Mutation)。 • (1)选择。选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁衍子孙。根据各个个体的 适应度值,按照一定的规则或方法从上一代群体中选择出一些优良的个体遗传到下一代种群中。选择的依据是适应性强的 个体为下一代贡献一个或多个后代的概率大。 • (2)交叉。通过交叉操作可以得到新一代个体,新个体组合了父辈个体的特性。将群体中的各个个体随机搭配成对,对每 一个个体,以交叉概率交换它们之间的部分染色体。 • (3)变异。对种群中的每一个个体,以变异概率改变某一个或多个基因座上的基因值为其他的等位基因。同生物界中一样, 变异发生的概率很低,变异为新个体的产生提供了机会。

遗传算法的基本步骤:

1)编码:GA在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据, 这些串结构数据的丌同组合便构成了丌同的点。 2)初始群体的生成:随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个 个体构成了一个群体。GA以这N个串结构数据作为初始点开始进化。 3)适应度评估:适应度表明个体或解的优劣性。丌同的问题,适应性函数的定义方式也丌 同。

4)选择:选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一 代繁殖子孙。遗传算法通过选择过程体现这一思想,进行选择的原则是适应性强的个体为 下一代贡献一个或多个后代的概率大。选择体现了达尔文的适者生存原则。 5)交叉:交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体, 新个体组合了其父辈个体的特性。交叉体现了信息交换的思想。 6)变异:变异首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机地改变 串结构数据中某个串的值。同生物界一样, GA中变异发生的概率很低,通常取值很小。

 

遗传算法工具箱:

• MATLAB内嵌遗传算法工具箱: gadst • Sheffield大学遗传算法工具箱: gatbx • 北卡罗来纳大学遗传算法工具箱: gaot

initializega函数:

ga函数:

遗传算法优化BP神经网络初始权值与阈值:

 

clear
clc
close all
tic
%% 输入信息
% 末端需求点位置
demand_pos=load('需求点位置.txt');
demand_num=size(demand_pos,1);
% 备选中心位置
center_pos=load('备选中心位置.txt');
center_num=size(center_pos,1);
%每个末端需求点的配送量
demand_amount=load('需求点对应的配送量.txt');
%固定投资
center_fixi=rand(10,2)*1000;
%% 计算备选中心到需求点的距离
vertexs=[demand_pos;center_pos];                                %所有点的坐标x和y
h=pdist(vertexs);
dist=squareform(h);                                             %距离矩阵,满足三角关系,暂用距离表示花费c[i][j]=dist[i][j]
%% 遗传算法参数设置
NIND=2000;                                                       %种群大小
MAXGEN=400;                                                     %迭代次数
Pc=0.9;                                                         %交叉概率
Pm=0.05;                                                        %变异概率
GGAP=0.9;                                                       %代沟(Generation gap)
N=demand_num+center_num-1;                                      %染色体长度=需求点数目+备选中心数目-1
%% 初始化种群
rand('seed',1);                      
Chrom=InitPopCW(NIND,N);  %构造初始解
%% 遗传算法优化
gen=1;
figure;;
hold on;box on
xlim([0,MAXGEN])
ObjV=calObj(Chrom,demand_num,center_fixi,demand_amount,dist);             %计算种群目标函数值
preObjV=min(ObjV);
while gen<=MAXGEN
    %% 计算适应度
    ObjV=calObj(Chrom,demand_num,center_fixi,demand_amount,dist);%计算种群目标函数值
    subplot 211;
    line([gen-1,gen],[preObjV,min(ObjV)]);drawnow;
    title('优化过程');
    xlabel('代数');
    ylabel('最优值');
    preObjV=min(ObjV);
    FitnV=Fitness(ObjV);
    %% 选择
    SelCh=Select(Chrom,FitnV,GGAP);
    %% OX交叉操作
    SelCh=Recombin(SelCh,Pc);
    %% 变异
    SelCh=Mutate(SelCh,Pm);
    %% 重插入子代的新种群
    Chrom=Reins(Chrom,SelCh,ObjV);
    %% 删除种群中重复个体,并补齐删除的个体
    Chrom=(Chrom);
    %% 打印当前最优解
    ObjV=calObj(Chrom,demand_num,center_fixi,demand_amount,dist);             %计算种群目标函数值
    [minObjV,minInd]=min(ObjV);
    disp(['第',num2str(gen),'代最优化值:',num2str(minObjV)])
    [bestVC,bestNV]=decode(Chrom(minInd(1),:),demand_num);
    subplot 212;
    draw_Best_num(bestVC,bestNV,demand_pos,center_pos,vertexs);
    drawnow;
    %% 更新迭代次数
    gen=gen+1 ;
end
%% 画出最优解的路线图
ObjV=calObj(Chrom,demand_num,center_fixi,demand_amount,dist);             %计算种群目标函数值
[minObjV,minInd]=min(ObjV);
%% 输出最优解的路线和总距离
disp('最优解:')
bestChrom=Chrom(minInd(1),:);
[bestVC,bestNV]=decode(bestChrom,demand_num);
%% 画出最终路线图
figure;draw_Best_num(bestVC,bestNV,demand_pos,center_pos,vertexs);
toc

 

以上是关于物流选址基于遗传算法实现物流选址matlab源码的主要内容,如果未能解决你的问题,请参考以下文章

优化选址基于matlab遗传算法求解多城市多应急物流中心选址优化问题含Matlab源码 H001期

优化求解基于matlab遗传算法求解多城市多应急物流中心选址问题含Matlab源码 1724期

基于遗传算法实现物流选址(多约束条件)matlab代码

物流选址基于遗传算法实现物流选址

物流选址基于matlab粒子群算法求解物流选址问题含Matlab源码 410期

物流选址基于佛洛依德算法求解物流选址问题matlab源码