人工免疫算法与物流中心选址问题

人工免疫算法与物流中心选址问题

人工免疫算法

免疫算法是模仿生物免疫机制,结合基因的进化机理,人工构造出的一种新型智能优化算法。采用群体搜索策略,通过迭代计算,最终以较大的概率得到问题的最优解。相比于其他算法,免疫算法利用自身产生多样性和维持机制的特点,保证了群体多样性,克服了‘早熟’问题,可以得到全局最优解。具有自适应性,随机性并行性,全局收敛性,种群多样性等特点。

免疫算法具体实现步骤如下:
(1)分析问题。对问题及其解的特性进行分析,设计解的合适表达形式。
(2)产生初始抗体群。随机产生N个个体并从记忆库中提取m个个体构成初始种群,其中m为记忆库中个体的数量。
(3)对上述群体中个体抗体进行评价。在本算法中对个体的评价是以个体的期望繁殖率P为标准的。
(4)形成父代种群。将初始群体按期望繁殖率P进行降序排列,并提取前N个个体构成父代群体;同时取前m个个体存入记忆库中。
(5)判断是否满足结束条件,是则结束,不是则进行下一步操作。
(6)新种群的产生。基于步骤(4)的计算结果对抗体种群进行选择、交叉、变异操作得到新群体,再从记忆库中取出记忆的个体,共同构成新一代的群体。
(7)转去执行步骤(3).
在这里插入图片描述

问题

物流配送中心的选址问题。我们有如下的假设:1.配送中心的规模容量总可以满足需求点,并由配送辐射范围内的需求量确定。2.一个需求点仅有一个配送中心供应。3。不考虑工厂到配送中心的运输费用。数据源如下,其中city是城市的坐标,cargo是该城市物资的需求量。
city = [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];
crago = [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];

代码

% 免疫优化算法
clear 
clc
% 初始参数设定
popsize = 30;
overbest = 10;
maxgen = 300;
pc = 0.5;
pm = 0.4;
ps = 0.95;      % 多样性评价参数
len = 6;
M = popsize + overbest;
individuals = struct('fitness',zeros(1,M),'concentration',zeros(1,M),'excellence',zeros(1,M),'chrom',[]);
individuals.chrom = popinit2(M,len);     %种群初始化
trace = [];
% 开始迭代
for iii = 1:maxgen
    [row,~] = size(individuals.chrom);
    M = row;
    for i = 1:M
        individuals.fitness(i) = fitness6(individuals.chrom(i,:));
        individuals.concentration(i) = concentration6(i,M,individuals);
    end
    % 计算期望繁殖概率
    individuals.excellence = excellence6(individuals,M,ps);
    % 记录当代最优个体和种群平均适应度
    [best,index] = min(individuals.fitness);
    bestchrom = individuals.chrom(index,:);
    average = mean(individuals.fitness);
    trace = [trace;best,average];
    % 形成父代种群,更新记忆库
    bestindividuals = bestselect6(individuals,M,overbest);
    % 选择、交叉、变异,再加入记忆库中的抗体,产生新种群
    individuals = select6(individuals,popsize);
    individuals.chrom = cross6(pc,individuals.chrom,popsize,len);
    individuals.chrom = mutate6(pm,individuals.chrom,popsize,len);
    individuals = incorporate6(individuals,popsize,bestindividuals,overbest);
end
plot([1:maxgen],trace)
xlabel('代数')
ylabel('平均值和最小值')
title('优化过程')
disp(['最优选址为',num2str(bestchrom)])

结果与分析

在这里插入图片描述
在这里插入图片描述
可以看到在150代的时候,结果已基本上收敛了。上面是我们最优选址的物流中心的序号。

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原创小白变怪兽

帮助原创小白成为怪兽吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值