[経路計画]免疫アルゴリズムに基づくロジスティクスセンターの場所の選択[Matlab016]

1.はじめに

免疫アルゴリズムの主なステップ:
(1)抗原認識と初期抗体産生。
(2)抗体評価
(3)免疫操作
免疫アルゴリズムの特徴:
(1)グローバル検索機能
(2)多様性維持メカニズム
(3)ロバスト性
(4)並列分散検索メカニズム
(1)抗原認識、すなわち問題を理解する最適化され、問題の実現可能性を分析し、事前知識を抽出し、適切な親和性関数を構築し、さまざまな制約を定式化します。
(2)初期抗体集団。これは、問題の実行可能解をエンコードによってソリューション空間内の抗体として表現し、ソリューション空間内にランダムに初期集団を生成します。
(3)母集団内の実行可能解ごとに親和性評価を実行します。
(4)アルゴリズム終了条件が満たされているかどうかを判断します。条件が満たされている場合は、アルゴリズム最適化プロセスを終了して計算結果を出力します。それ以外の場合は、最適化操作を続行します。
(5)抗体濃度と動機を計算します。
(6)免疫選択、クローニング、突然変異、クローン抑制などの免疫治療を行います。
免疫選択:集団内の抗体の親和性と濃度の計算結果に基づいて高品質の抗体を選択し、それらを活性化します。
クローニング:活性化された抗体をクローン化して複数のコピーを取得します。
突然変異:クローン化されたコピーに対して突然変異操作を実行して作成します。それら親和性突然変異が発生します;
クローン阻害:低親和性で抗体を阻害し、高親和性で突然変異結果を保持するために突然変異結果を再選択します。
(7)集団をリフレッシュし、集団内の意欲の低い抗体をランダムに生成された新しい抗体に置き換えて、新世代の抗体を形成し、ステップ(3)に進みます。

第二に、ソースコード

clc
clear
 
%% 算法基本参数           
sizepop=50;           % 种群规模
overbest=10;          % 记忆库容量
MAXGEN=100;            % 迭代次数
pcross=0.5;           % 交叉概率
pmutation=0.1;        % 变异概率
ps=0.95;              % 多样性评价参数
length=5;             % 配送中心数
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=[140,130;145,118;160,96;142.5,71;150,70;144,112;139,117;144.5,115;163,105;149,99.5;143,102;137,103;
               125,98;129,96;136,90;142,96;148,96;142,91;147,91;140,70;140,63;137.5,63;138,59;143,63;176,141;170,140;
               168,145;180,149;183,145;202,131;150,33];
%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];
carge=[20,90,90,60,70,70,40,90,90,70,60,40,40,40,30,90,70,100,50,50,60,80,70,80,50,40,60,70,50,30,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','r',...
    'MarkerSize',20)
hold on
 
plot(city_coordinate(:,1),city_coordinate(:,2),'o','LineWidth',2,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor','y',...
    '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
 

四、備考

QQ912100926の過去のレビューを追加するための完全なコードまたは記述
>>>>>>
[経路計画] 3次元UAV経路計画のための粒子群最適化アルゴリズム[ Matlab012 ]
[経路計画]複数のロジスティクスセンターでのオープンビークルの遺伝的アルゴリズム経路計画[ Matlab 013]
[経路計画]ロボットグリッド経路計画のための粒子群アルゴリズム[Matlab014]
[経路計画]最短経路を解くためのAntコロニーアルゴリズム[Matlab015]

おすすめ

転載: blog.csdn.net/m0_54742769/article/details/112984683