三个简单遗传算法

  • F7_870893
    了解作者
  • 3.4KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-15 02:26
    上传日期
基本遗传算法程序,遗传算法,蚁群算法与粒子群算法,代码后有附注释
AC.zip
  • AC.m
    2.7KB
  • GA.m
    2.6KB
  • LA.m
    1.8KB
内容介绍
function [Rb,Lb,SR,SL]=AC(R,NC_max,m,alpha,beta,rho) % R 城市的距离矩阵 % NC_max 最大迭代次数 % m 蚂蚁个数 % alpha 表征信息素重要程度的参数 % beta 表征启发式因子重要程度的参数 % rho 信息素蒸发系数 % Rb 各代最佳路线 % Lb 各代最佳路线的长度 n=size(R,1);%n表示城市个数 Eta=1./R;%Eta为启发因子,这里设为距离的倒数 Tau=ones(n,n);%Tau为信息素矩阵 Tabu=zeros(m,n);%存储并记录路径的生成 NC=1;%迭代计数器,记录迭代次数 Rb=zeros(NC_max,n);%各代最佳路线 Lb=ones(NC_max,1);%各代最佳路线的长度 La=zeros(NC_max,1);%各代路线的平均长度 Tau=0.3*Tau;%初始化信息素矩阵 while NC<=NC_max %停止条件之一:达到最大迭代次数 Randpos=[];%建立随机存取的空数组 for i=1:(ceil(m/n))%ceil(m/n)对m/n向上取整 Randpos=[Randpos,randperm(n)];%randperm(n) 从1到n随机排列 end Tabu(:,1)=(Randpos(1,1:m));%将Tabu的第一列用randpos中的第n*m个数赋值 for j=2:n %依次选择剩下的城市 for i=1:m %蚂蚁个数 visited=Tabu(i,1:(j-1));%这个矩阵记录已经访问过的城市 J=zeros(1,(n-j+1)); %记录待访问的城市 P=J;%待访问城市的选择概率分布 Jc=1; for k=1:n if length(find(visited==k))==0 %find是查询函数 J(Jc)=k; Jc=Jc+1; end end %到此处为止,J中装载了还没有走的城市 for k=1:length(J) P(k)=(Tau(visited(end),J(k))^alpha)*(Eta(visited(end),J(k))^beta); end P=P/(sum(P));%到此处为止,P中存储了去其他三个城市的概率 Pcum=cumsum(P);%第m行就是原先1到m行的和 select=find(Pcum>=rand);%轮盘赌算法选择路线 tovisit=J(select(1)); Tabu(i,j)=tovisit; end end L=zeros(m,1);%建立一个三行一列数组存放长度 for i=1:m D=Tabu(i,:); for j=1:(n-1) L(i)=L(i)+R(D(j),D(j+1));%相邻两个城市的距离依次相加 end L(i)=L(i)+R(D(1),D(n));%再加上头和尾的两个城市的距离 end Lb(NC)=min(L);%第NC次迭代中最小的距离 pos=find(L==Lb(NC));%找到L中所对应最短的那条路 Rb(NC,:)=Tabu(pos(1),:);%存到Rb中 La(NC)=mean(L);%此轮迭代后的平均距离 NC=NC+1;%迭代继续 Delta_Tau=zeros(n,n);%初始设为n*n的0矩阵 for i=1:m for j=1:n-1 Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+1./L(i);%增量是本轮构建路径长度的倒数 end Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+1./L(i);%整个路径信息素增量 end Tau=(1-rho).*Tau+Delta_Tau;%更新后的信息素 Tabu=zeros(m,n);%禁忌表清零 end Pos=find(Lb==min(Lb)); SR=Rb(Pos(1),:);%最短路程 SL=Lb(Pos(1));%最短距离
评论
    相关推荐
    • 算法
      算法 算法
    • 程序员算法
      这是一个算法文档压缩包,其中包括《可能与不可能的边界》、《具体数学》、《算法的乐趣》、《啊哈!算法》。这些书很适合对算法感兴趣的朋友,书籍讲解算法非常有趣。注意,其中有些文档是试读版本。
    • 算法实验
      算法实验算法实验算法实验算法实验算法实验算法实验算法实验算法实验
    • SIFT 算法
      SIFT 算法SIFT 算法SIFT 算法SIFT 算法
    • RSA算法
      RSA算法是公钥加密算法中重要的算法之一,本算法即实现RSA的加解密过程。
    • 分词算法介分词算法
      算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语...
    • unify算法
      unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法
    • 寻路算法
      寻路算法 寻路封装
    • dsp算法算法算法算法
      dsp各种算法
    • 大数据算法
      本书共分为10章,第1章概述大数据算法,第2章介绍时间亚线性算法,第3章介绍空间亚线性算法,第4章概述外存算法,第5章介绍大数据外存查找结构,第6章讲授外存图数据算法,第7章概述MapReduce算法,第8章通过一系列...