免疫算法在物流配送中心选址中的应用

1.实验目的

掌握免疫算法解决物流中心选址问题的方法,了解免疫算法与遗传算法的应用差别。

2.实验环境

Matlab

3.实验内容

使用免疫算法实现物流中心选址。

采集了31个城市的坐标,每个用户的位置以及物资需求量由下表给出。这里的物资需求量是经过规范化处理后的数值,并不代表实际值。从中选择6个配送中心。

 

根据配送中心选址模型,按照免疫算法流程对该例求解。

参数设置:

种群规模:50;

记忆库容量:10;

迭代次数:100;

交叉率:0.5;

变异概率:0.4;

多样性评价参数:0.95;

4.实验过程 

%% 免疫优化算法在物流配送中心选址中的应用
%% 清空环境
clc
clear
%% 算法基本参数           
sizepop=50;           % 种群规模
overbest=10;          % 记忆库容量
MAXGEN=100;            % 迭代次数
pcross=0.5;           % 交叉概率
pmutation=0.4;        % 变异概率
ps=0.95;              % 多样性评价参数
length=6;             % 配送中心数
M=sizepop+overbest;
 %% step1 识别抗原,将种群信息定义为一个结构体
individuals = struct('fitness',zeros(1,M), 'concentration',zeros(1,M),'excellence',zeros(1,M),'chrom',[]);
%% step2 产生初始抗体群
individuals.chrom = popinit(M,length);
trace=[]; %记录每代最个体优适应度和平均适应度
%% 迭代寻优
for iii=1:MAXGEN
 
     %% step3 抗体群多样性评价
     for i=1:M
         individuals.fitness(i) = fitness(individuals.chrom(i,:));      % 抗体与抗原亲和度(适应度值)计算
         individuals.concentration(i) = concentration(i,M,individuals); % 抗体浓度计算
     end
     % 综合亲和度和浓度评价抗体优秀程度,得出繁殖概率
     individuals.excellence = excellence(individuals,M,ps);
          
     % 记录当代最佳个体和种群平均适应度
     [best,index] = min(individuals.fitness);   % 找出最优适应度 
     bestchrom = individuals.chrom(index,:);    % 找出最优个体
     average = mean(individuals.fitness);       % 计算平均适应度
     trace = [trace;best,average];              % 记录
     
     %% step4 根据excellence,形成父代群,更新记忆库(加入精英保留策略,可由s控制)
     bestindividuals = bestselect(individuals,M,overbest);   % 更新记忆库
     individuals = bestselect(individuals,M,sizepop);        % 形成父代群
 
     %% step5 选择,交叉,变异操作,再加入记忆库中抗体,产生新种群
     individuals = Select(individuals,sizepop);                                                             % 选择
     individuals.chrom = Cross(pcross,individuals.chrom,sizepop,length);                                    % 交叉
     individuals.chrom = Mutation(pmutation,individuals.chrom,sizepop,length);   % 变异
     individuals = incorporate(individuals,sizepop,bestindividuals,overbest);                               % 加入记忆库中抗体      
 
end
 
%% 画出免疫算法收敛曲线
figure(1)
plot(trace(:,1));
hold on
plot(trace(:,2),'--');
legend('最优适应度值','平均适应度值')
title('免疫算法收敛曲线','fontsize',12)
xlabel('迭代次数','fontsize',12)
ylabel('适应度值','fontsize',12)
 
%% 画出配送中心选址图
%城市坐标
city_coordinate=[1304,2312;3639,1315;4177,2244;3712,1399;3488,1535;3326,1556;3238,1229;4196,1044;4312,790;4386,570;
                 3007,1970;2562,1756;2788,1491;2381,1676;1332,695;3715,1678;3918,2179;4061,2370;3780,2212;3676,2578;
                 4029,2838;4263,2931;3429,1908;3507,2376;3394,2643;3439,3201;2935,3240;3140,3550;2545,2357;2778,2826;2370,2975];
carge=[20,90,90,60,70,70,40,90,90,70,60,40,40,40,20,80,90,70,100,50,50,50,80,70,80,40,40,60,70,50,30];
%找出最近配送点
for i=1:31
    distance(i,:)=dist(city_coordinate(i,:),city_coordinate(bestchrom,:)');
end
[a,b]=min(distance');
 
index=cell(1,length);
 
for i=1:length
%计算各个派送点的地址
index{i}=find(b==i);
end
figure(2)
title('最优规划派送路线')
cargox=city_coordinate(bestchrom,1);
cargoy=city_coordinate(bestchrom,2);
plot(cargox,cargoy,'rs','LineWidth',2,...
    'MarkerEdgeColor','r',...
    'MarkerFaceColor','b',...
    'MarkerSize',20)
hold on
 
plot(city_coordinate(:,1),city_coordinate(:,2),'o','LineWidth',2,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor','g',...
    'MarkerSize',10)
 
for i=1:31
    x=[city_coordinate(i,1),city_coordinate(bestchrom(b(i)),1)];
    y=[city_coordinate(i,2),city_coordinate(bestchrom(b(i)),2)];
    plot(x,y,'c');hold on
end

 

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
免疫遗传算法是一种基于免疫系统和遗传算法的优化算法,它通过模拟免疫系统的进化过程和遗传算法的遗传操作来实现优化。在物流配送中心选址问题,免疫遗传算法可以用于确定最优的物流中心选址方案。 物流配送中心选址问题的主要目标是确定最佳的物流中心位置,以最小化物流成本和满足客户求。免疫遗传算法可以通过以下步骤来解决这个问题: 1. 定义适应度函数:适应度函数可以根据不同的目标函数来定义,如最小化物流成本、最大化服务范围等。 2. 初始化种群:初始化一定数量的个体,每个个体代表一个可能的物流中心位置。 3. 免疫选择:通过免疫选择操作来选择适应度高的个体,并将其作为下一代个体的父代。 4. 遗传操作:对父代个体进行遗传操作,包括交叉和变异,产生新的个体,并计算它们的适应度值。 5. 环境选择:从父代和子代选择适应度高的个体,作为下一代个体的种群。 6. 迭代:重复执行免疫选择、遗传操作和环境选择操作,直到达到预设的迭代次数或满足停止条件。 通过免疫遗传算法,可以在物流配送中心选址问题寻找到最优的物流中心位置,从而最小化物流成本和满足客户求。免疫遗传算法具有全局搜索能力和适应性优势,在解决复杂的优化问题具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值