[最適化ソリューション] matalbの改良された遺伝的アルゴリズムIGAに基づく都市信号の最適化[Matlabソースコード215を含む]

1.はじめに

1遺伝的アルゴリズムの基本理論遺伝
学は、遺伝は各細胞にカプセル化され、遺伝子の形で染色体に含まれる命令遺伝暗号であると信じています。各遺伝子には特別な位置があり、特別な特性を制御します。各遺伝子によって生成される個体は、環境に対してある程度の適応性を持っています。遺伝子の交配と突然変異は、環境に適応できる子孫を生み出す可能性があります。適者生存の自然淘汰を通じて、高い適応度の遺伝子構造が維持されます。
遺伝的アルゴリズムは、「適者生存」の遺伝理論を利用し、最適化問題の解を「染色体」の「適者生存」プロセスとして表現します。複製、交差、突然変異の世代の進化を通じて「染色体」グループ、私たちは最終的に得ます問題の最適または満足のいく解決策を得るために環境に最も適応できるのは個人です。これは、高度に並列化された、ランダムで適応性のある一般的な最適化アルゴリズムです。
遺伝的アルゴリズムの一連の利点は、近年ますます重要になっており、輸送分野での応用の成功を含め、多くの分野で最適化問題の解決に広く使用されています。
2
遺伝的アルゴリズムの特徴遺伝的アルゴリズムは、生物学的自然環境における遺伝的および進化的プロセスをシミュレートすることによって形成された、自己適応型のグローバル最適化確率的検索アルゴリズムです。これは、複雑なシステムの最適化計算に使用できる一種のロバストな検索アルゴリズムであり、他の最適化アルゴリズムと比較して、多くの特徴があります。
従来の最適化アルゴリズムには、列挙、ヒューリスティック、検索の3つの主要なアルゴリズムがあります:
1。列挙法
列挙法は、実行可能解集合内のすべての実行可能解を列挙して、正確な最適解を見つけます。連続関数の場合、この方法では最初に離散化が必要であるため、離散処理のために最適解に到達することはありません。さらに、列挙スペースが比較的大きい場合、このアルゴリズムのソリューション効率は非常に低く、非常に時間がかかります。
2.2。ヒューリスティックアルゴリズム
ヒューリスティックアルゴリズムは、実行可能解を生成して最適解または近似最適解を見つけることができるヒューリスティックルールを探します。ヒューリスティックアルゴリズムの効率は比較的高いですが、解決する必要のある問題ごとに、固有のヒューリスティックルールを見つける必要があります。このヒューリスティックルールは一般に普遍的ではなく、他の問題には適していません。
3.3。検索アルゴリズム
検索アルゴリズムは、実行可能解セットのサブセットで検索操作を実行して、問題の最適解または近似最適解を見つけます。検索アルゴリズムでは、問題の最適な解が得られることを保証できませんが、ヒューリスティックな知識を適切に使用すれば、近似解の品質と効率のバランスをとることができます。
3基本的な遺伝的アルゴリズムのワークフロー
ここに画像の説明を挿入
4適応度関数
ここに画像の説明を挿入
5選択演算子
選択は、複製とも呼ばれ、グループ内で活力の強い個人を選択して新しいグループを生成するプロセスです。遺伝的アルゴリズムは、選択演算子を使用してグループ内の個人の適者生存を実行し、各個人の適応度に応じて選択します。適応度の高い個人は、次世代の集団に継承される可能性が高くなります。その逆も同様です。このようにして、グループ内の個人の適応度の値に継続的に最適なソリューションにアプローチすることができます。選択演算子の決定は、遺伝的アルゴリズムの計算結果に直接影響します。
一般的で一般的に使用される選択演算子は次のとおりです
。1。ルーレットセレクション
2。ランダムな競争の選択
3。ランダムトラバーサル選択
4。ソート選択
5。リーグの選択
6クロスオーバー演算子
以下では、バイナリコード化された個人または10進コード化された個人に適したいくつかのクロスオーバー演算子を紹介します。
l。シングルポイントクロスオーバー
シングルポイントクロスオーバー(ワンポイントクロスオーバー)は、単純クロスとも呼ばれ、最も一般的な基本的なクロス演算子です。バイナリ文字列のランダムな選択ポイントから始まります。ペアになっている個体のペアごとに、設定されたクロスオーバー確率に従って、クロスオーバーポイントで2つの個体の部分染色体を交換し、2つの新しい個体を生成します。
2.2。
2点クロスオーバーとマルチポイントクロスオーバー2点クロスオーバーとは、個々のコード文字列に2つのクロスオーバーポイントを設定してから、部分的な遺伝子交換を行うことです。2点交差の具体的なプロセスは次のとおりです。
(1)2つの交差点は、互いにペアになっている2つの個別のコード文字列にすぐに設定されます。
(2)2つの設定された交点間で2人の個体の染色体の一部を交換します。
3.3。均一な交叉
均一な交叉とは、2つの対になった個体の各遺伝子座の遺伝子が同じ交叉確率で交換されて2つの新しい個体を形成することを意味します。特定の操作を使用して、マスクを設定することにより、新しい個体の各遺伝子がどの親個体によってどのように提供されるかを決定できます。
4.4。算術クロスオーバー
算術クロスオーバーは、2つの新しい個体を生成するための2つの個体の線形結合を指します。線形結合演算を実行できるようにするために、算術交差の演算オブジェクトは、通常、浮動小数点数コードで表される個人です。
7突然変異演算子
遺伝的アルゴリズムにおけるいわゆる突然変異操作とは、個々の染色体コーディングストリング内のある遺伝子座の遺伝子値をその遺伝子座の他の対立遺伝子に置き換えて、新しい個体を形成することを指します。突然変異は、新しい個体を生成する遺伝的アルゴリズムの主要な方法の1つであり、突然変異操作は、アルゴリズムの操作中に集団の多様性を維持し、早期成熟を効果的に回避し、遺伝的アルゴリズムの局所探索能力を向上させることができます。
遺伝的アルゴリズムの突然変異演算子も、さまざまな要件に従って選択および設計する必要があります。以下は、一般的に使用されるいくつかの突然変異演算子です。
8遺伝的アルゴリズムの改善
ここに画像の説明を挿入

第二に、ソースコード

%% 改进的GA
%% 清空环境变量
clc,clear,close all % 清除变量空间
warning off      % 消除警告
feature jit off  % 加速代码执行
%% 遗传算法参数初始化
maxgen = 50;                      % 进化代数,即迭代次数
sizepop = 50;                     % 种群规模
pcross = [0.7];                    % 交叉概率选择,01之间
pmutation = [0.01];                 % 变异概率选择,01之间
delta = 0.1;
% 城市交通信号系统参数
C = 140;
L = 10;
load('data.mat')  % 包含交通流量q以及饱和流量xij
q = q./3600;      % 转化为秒s
xij = xij./3600;  % 转化为秒s
%染色体设置
lenchrom=ones(1,3);    % t1、t2、t3
bound=[38,59;26,37;33,44;];   % 数据范围
%---------------------------种群初始化------------------------------------
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]);  %将种群信息定义为一个结构体
avgfitness = [];                      %每一代种群的平均适应度
bestfitness = [];                     %每一代种群的最佳适应度
bestchrom = [];                       %适应度最好的染色体

%% 初始化种群
for i=1:sizepop
    % 随机产生一个种群
    individuals.chrom(i,:)=Code(lenchrom,bound); % 编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)
    x=individuals.chrom(i,:);
    % 计算适应度
    individuals.fitness(i)=fun(x);   % 染色体的适应度 
end

%% 找最好的染色体
[bestfitness bestindex] = min(individuals.fitness);
bestchrom = individuals.chrom(bestindex,:);    % 最好的染色体
% 记录每一代进化中最好的适应度和平均适应度
trace = [bestfitness]; 

%% 迭代求解最佳初始阀值和权值
% 进化开始
for i=1:maxgen
    disp(['迭代次数:  ',num2str(i)])
    % 选择
    individuals=Select(individuals,sizepop); 
    % 交叉
    individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
    % 变异
    individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);
    t4 = C-L - t(1)-t(2)-t(3);
flag=1;
if (t(1)<bound(1,1))||(t(2)<bound(2,1))||(t(3)<bound(3,1))||(t(1)>bound(1,2))||(t(2)>bound(2,2))||(t(3)>bound(3,2))||t4<22||t4>33
    flag=0;
end     
function ret=Mutation(pmutation,lenchrom,chrom,sizepop,num,maxgen,bound)
% 本函数完成变异操作
% pcorss                input  : 变异概率
% lenchrom              input  : 染色体长度
% chrom     input  : 染色体群
% sizepop               input  : 种群规模
% opts                  input  : 变异方法的选择
% pop                   input  : 当前种群的进化代数和最大的进化代数信息
% bound                 input  : 每个个体的上届和下届
% maxgen                input  :最大迭代次数
% num                   input  : 当前迭代次数
% ret                   output : 变异后的染色体
k1 = 0.6;   k2 = 0.7;
k3 = 0.001; k4 = 0.01;
% 计算适应度
for j=1:sizepop
    x=chrom(j,:);    % 解码
    f(j)=fun(x);     % 染色体的适应度 
end
fmax = max(f);      % 适应度最大值
fmin = min(f);      % 适应度最小值
favg = mean(f);     % 适应度平均值

for i=1:sizepop   %每一轮for循环中,可能会进行一次变异操作,染色体是随机选择的,变异位置也是随机选择的,
    %但该轮for循环中是否进行变异操作则由变异概率决定(continue控制)
    % 随机选择一个染色体进行变异
    pick=rand;
    while pick==0
        pick=rand;
    end
    index=ceil(pick*sizepop);
    
     f1 = fun( chrom(index(1),:) );  % 个体适应度值
     f3 = max(f1);                   % 两者中大者
     if f3>=favg
         pmutation = k3*(fmax - f3)./(fmax-favg);
     else
         pmutation = k4;
     end
    
    % 变异概率决定该轮循环是否进行变异
    pick=rand;
    if pick>pmutation
        continue;
    end
    flag=0;
    num = 0;
    chrom1 = chrom(i,:);
    while flag==0&&num<=20 
        % 变异位置
        pick=rand;
        while pick==0      
            pick=rand;
        end
        pos=ceil(pick*sum(lenchrom));  %随机选择了染色体变异的位置,即选择了第pos个变量进行变异
    
        pick=rand; %变异开始     
        fg=(rand*(1-num/maxgen))^2;
        if pick>0.5
            chrom(i,pos)=chrom(i,pos)+(bound(pos,2)-chrom(i,pos))*fg;
        else
            chrom(i,pos)=chrom(i,pos)-(chrom(i,pos)-bound(pos,1))*fg;
        end   %变异结束
        

3、実行中の結果

ここに画像の説明を挿入

四、備考

完全なコードまたは書き込み追加QQ1564658423過去のレビュー
>>>>>>
[最適化] matlab粒子群最適化に基づくグレイウルフアルゴリズム[Matlabソースコード006を含む]
[最適化] matlab多目的グレイウルフ最適化アルゴリズムMOGWOに基づく[Matlabを含むソースコードの問題007]
[最適化されたソリューション] matlab粒子群アルゴリズムに基づく充電ステーションの最適なレイアウト[Matlabソースコード012を含む]
[最適化されたソリューション] matlab遺伝子アルゴリズムに基づく複数移動セールスマンの問題[Matlabソースコード016を含む]
[最適化解決策】matlab遺伝子アルゴリズムに基づいて最短パスを見つける[Matlabソースコード023を含む]
[最適化ソリューション] matlab遺伝子およびシミュレートされたアニーリングに基づく3Dパッキング問題[Matlabソースコード031を含む]
[最適化ソリューション]車両出発間隔の最適化を解決するmatlab遺伝子アルゴリズムに基づく問題[Matlabソースコード132を含む]
[最適化ソリューション] Krillswarmアルゴリズム[matlabソースコード133を含む]
[最適化ソリューション]微分進化アルゴリズム[Matlabソースコード134を含む]
[最適化ソリューション]に基づくペナルティ関数法matlab制約の最適化[Matlabソースコード163期間を含める]
[最適化ソリューション]重油熱分解モデルを解決するためのmatlab改良グレイウルフアルゴリズムに基づく[Matlabソースコード164期間を含める]
[最適化ソリューション] matlabantコロニーアルゴリズム配布ネットワーク障害に基づく場所[Matlabソースコード165期間を含む]
[島の材料補充最適化問題を解決するためのmatalb遺伝子アルゴリズムに基づく最適化ソリューション[Matlabソースコード172を含む]
[最適化ソリューション]コロナウイルス集団免疫最適化アルゴリズム(CHIO)[Matlabソースコード186を含む]
[最適化ソリューション]ゴールデンイーグル最適化アルゴリズム(GEO))【Matlabソースコード187期間を含める]
[多目的最適化ソリューション] matlabゴールデンイーグルアルゴリズム(MOGEO)に基づく多目的最適化ソリューション[Matlabソースコード188を含む]
[最適化ソリューション] matlabGUIインターフェイスに基づくBPニューラルネットワーク最適化ソリューション[Matlabソースコード208]
[最適化ソリューション] matlabGUIインターフェイスに基づく遺伝的アルゴリズム最適化ソリューション[Matlabソースコード209を含む]
[最適化ソリューション] matlab免疫アルゴリズムに基づく数値近似最適化分析[Matlabソースコード211を含む]
[最適化ソリューション] matlabヒューリスティックアルゴリズムに基づく関数最適化分析[Matlabソースコード212を含める]
[最適化ソリューション] MATLAB改良遺伝的アルゴリズム(GA + IGA)に基づく都市交通信号の最適化[Matlabソースコード213期間を含める]
[最適化ソリューション] MATLAB改良遺伝的アルゴリズムGAに基づく都市交通信号の最適化[ Matlabソースコード214期間を含む]

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/113642093
おすすめ