当前位置: 首页 > news >正文

漳州建网站5000元网站seo推广

漳州建网站,5000元网站seo推广,企业网站源码 企业网站管理系统,网站 收录 做301蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的方法。 蚁…

蚁群算法简介

蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的方法。
蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质。

蚁群算法最早用来求解TSP问题,并且表现出了很大的优越性,因为它分布式特性,鲁棒性强并且容易与其它算法结合,但是同时也存在这收敛速度慢,容易陷入局部最优(local optimal)等缺点。

蚂蚁寻找食物

蚂蚁在行走过程中会释放一种称为“信息素”的物质,用来标识自己的行走路径。在寻找食物的过程中,根据信息素的浓度选择行走的方向,并最终到达食物所在的地方。

信息素会随着时间的推移而逐渐挥发,所以在一开始的时候,由于地面上没有信息素,因此蚂蚁们的行走路径是随机的。蚂蚁们在行走的过程中会不断释放信息素,标识自己的行走路径。随着时间的推移,有若干只蚂蚁找到了食物,此时便存在若干条从洞穴到食物的路径。由于蚂蚁的行为轨迹是随机分布的,因此在单位时间内,短路径上的蚂蚁数量比长路径上的蚂蚁数量要多,从而蚂蚁留下的信息素浓度也就越高。这为后面的蚂蚁们提供了强有力的方向指引,越来越多的蚂蚁聚集到最短的路径上去。

示意图

优化问题与蚂蚁寻找食物的关系
蚁群算法自然界的蚂蚁
可行解蚂蚁行走的路径
最优解待寻找的最短路径
解空间所有可能的路径
信息素矩阵某条途径上的信息素浓度
轮盘赌选择路径根据信息素浓度来选择路径

蚁群算法基本操作

初始化参数

蚁群算法所需要的参数:

  • 蚁群规模(蚂蚁数量) m m m
  • 信息素重要程度因子 α \alpha α
  • 启发函数重要程度因子 β \beta β
  • 信息素挥发因子 ρ \rho ρ
  • 信息素释放总量 Q Q Q
  • 最大迭代次数 i t e r m a x iter_{max} itermax

另外,设节点i与节点j之间的距离(权)为 d i j ( i , j = 1 , 2 , . . . , n ) d_{ij} \ (i,j=1,2,...,n) dij (i,j=1,2,...,n) t t t时刻节点i与节点j连接路径上的信息素浓度为 τ i j ( t ) \tau_{ij}(t) τij(t),在初始时刻各路径上信息素浓度相同,即 τ i j ( 0 ) = τ 0 \tau_{ij}(0) = \tau_0 τij(0)=τ0

构建解空间
  • 随机将蚂蚁置于所有出发点
  • 蚂蚁按规则访问所有节点
  • 计算每个蚂蚁经过的路径和长度,求出最优路径

访问规则:蚂蚁 k ( k = 1 , 2 , . . . , m ) k \ (k = 1,2,...,m) k (k=1,2,...,m)根据各个节点连接路径上的信息素浓度和路径距离(权)决定其下一个要访问的节点。t时刻蚂蚁k从节点i访问节点j的概率(蚂蚁已经在节点i)为:

P i j k = [ τ i j ( t ) ] α ∗ [ η i j ( t ) ] β ∑ s ∈ a l l o w k [ τ i j ( t ) ] α ∗ [ η i j ( t ) ] β s ∈ a l l o w k P^k_{ij} = \frac{[\tau_{ij}(t)]^\alpha*[\eta_{ij}(t)]^\beta}{\sum_{s \in allow_k}[\tau_{ij}(t)]^\alpha*[\eta_{ij}(t)]^\beta} \qquad s \in allow_k Pijk=sallowk[τij(t)]α[ηij(t)]β[τij(t)]α[ηij(t)]βsallowk
其中 η i j \eta_{ij} ηij为启发函数, η i j = 1 d i j \eta_{ij} = \frac{1}{d_{ij}} ηij=dij1,表示蚂蚁从节点i转移到节点j的期望程度; a l l o w k allow_k allowk表示蚂蚁k剩余待访问的节点集合。

更新信息素

蚂蚁访问完所有城市之后,进行信息素的更新。信息素的更新包括挥发和蚂蚁的产生,由以下公式决定:

τ i j ( t + 1 ) = ( 1 − ρ ) τ i j ( t ) + Δ τ i j \tau_{ij}(t+1) = (1-\rho)\tau_{ij}(t)+\Delta\tau_{ij} τij(t+1)=(1ρ)τij(t)+Δτij

前一部分是信息素的挥发,后一部分表示每只蚂蚁在这一段路上新差生的信息素。

Δ τ i j = ∑ k = 1 n Δ τ i j k \Delta\tau_{ij} = \sum_{k=1}^n \Delta\tau_{ij}^k Δτij=k=1nΔτijk
即对每只蚂蚁在该段路上释放信息素浓度之和。而对于蚂蚁k在i到j之间所释放的信息素 Δ τ i j k \Delta\tau_{ij}^k Δτijk的计算,有三种不同的模型:

  • 蚁周模型:释放总量一定,利用路径整体信息计算:( L k L_k Lk为第k只蚂蚁经过路径的总长)
    Δ τ i j k = Q L k \Delta\tau_{ij}^k = \frac{Q}{L_k} Δτijk=LkQ
  • 蚁量模型:释放总量一定,利用路径局部信息计算:
    Δ τ i j k = Q d i j \Delta\tau_{ij}^k = \frac{Q}{d_{ij}} Δτijk=dijQ
  • 蚁密模型:每段路释放量一定:
    Δ τ i j k = Q \Delta\tau_{ij}^k = Q Δτijk=Q
判断终止与迭代

递增迭代次数计数器,如果达到了最大代数则输出,否则清空路径记录表继续迭代。

代码实现

代码使用蚁群算法计算中国TSP问题的最优解。

% 使用蚁群算法解决旅行商(TSP)问题的优化
% 中国31个省会城市的坐标数据保存在文件city_data.mat中%导入数据
load city_data.mat%计算城市之间的相互距离矩阵
n = size(city_data,1); %城市数目为n
D = zeros(n,n); %距离矩阵为D
for i = 1:nfor j = 1:nif i ~= jD(i,j) = sqrt((city_data(i,1)-city_data(j,1))^2+(city_data(i,2)-city_data(j,2))^2);elseD(i,j) = 1e-4; %为了不使启发函数变成infendend
end%初始化蚁群算法各个参数
eta = 1./D; %启发函数
m = 31; %蚂蚁个数31
alpha = 1; %信息素重要程度因子
beta = 5; %启发函数重要程度因子
rho = 0.5; %信息素挥发因子
Q = 1; %信息素释放总量
iter_max = 400; %最大迭代次数
iter = 0; %代数初值
Table = zeros(m,n); %每只蚂蚁的路径记录表
tau = ones(n,n); %各节点间路径上的信息素含量记录表(tau0 = 1)%开始迭代
while 1%结束迭代的条件iter = iter + 1;if iter >= iter_maxbreakend%清空路径记录表Table = zeros(m,n);%构建解空间city = 1:n;%随机将蚂蚁置于所有出发点start = floor(n*rand(m,1))+1;Table(:,1) = start;%逐个蚂蚁进行路径选择for i = 1:m%对于每个蚂蚁,逐个节点进行访问for j = 2:n%初始化以访问的节点(禁忌表)tabu = Table(i,1:(j-1));allow = city(~ismember(city,tabu));%计算节点间转移概率P = zeros(size(allow));for k = 1:length(allow)P(k) = tau(tabu(end),allow(k))^alpha * eta(tabu(end),allow(k))^beta;endP = P/sum(P);%轮盘赌法选择下一个访问的城市P_sum = cumsum(P);target = allow(find(P_sum >= rand,1));Table(i,j) = target;endend%计算每个蚂蚁经过的路径Length = zeros(m,1);for i = 1:mRoute = Table(i,:);for j = 1:(n-1)Length(i) = Length(i) + D(Route(j),Route(j+1));endLength(i) = Length(i) + D(Route(n),Route(1));end%更新信息素Delta_tau = zeros(n,n);for i = 1:mfor j = 1:(n-1)Delta_tau(Table(i,j),Table(i,j+1)) = Delta_tau(Table(i,j),Table(i,j+1)) + Q/Length(i);endDelta_tau(Table(i,n),Table(i,1)) = Delta_tau(Table(i,n),Table(i,1)) + Q/Length(i);endtau = (1-rho)*tau + Delta_tau;endmin(Length)

代码输出结果为:

output

而中国TSP问题的最新研究结果为15377km,因此该算法寻求到的是一个局部最优解。

http://www.15wanjia.com/news/39156.html

相关文章:

  • 深圳疫情防控情况seo培训机构哪家好
  • 大连模板网站制作哪家专业网络营销的好处和优势
  • 建设网站公司地址南昌百度快速排名提升
  • 旅游网站自己怎么做近一周新闻热点事件
  • wordpress做双语网站婚恋网站排名前三
  • 35互联做的网站如何厦门网络推广外包
  • 支付宝怎么做网站维护关键词是怎么排名的
  • 电子商务网站建设规划教案企业网站推广有哪些
  • 做网站的公司怎么转型网站服务费一年多少钱
  • 上海网站设计公司推荐亿企邦二级域名注册
  • 怎么做动漫小广告视频网站windows优化大师最新版本
  • 专业做网站 上海seo每日工作内容
  • 什么网站可以做兼职赚钱吗广州公关公司
  • 网站导航是做链接赚钱么怎么建网站平台卖东西
  • 招聘网官方网站网站首页的优化
  • 自己做网站需要多少钱智慧软文网站
  • 专业建设专题网站室内设计培训
  • 沧州手机网站网站片区
  • 怀柔成都网站建设免费的云服务器有哪些
  • 和龙建设局网站旺道优化软件
  • 南昌县建设局网站2345网址导航官网
  • 协会网站开发百度助手
  • 动地科技登录网站餐饮品牌全案策划
  • 做购物网站需要学数据库吗hao123网址之家官网
  • 有专业做网站学历提升
  • 狗和人做愛网站谁知道如何做一个网页
  • html5网站开发aso优化技术
  • 鲜花店的网站设计与推广网络营销渠道有哪些
  • 阿里云网站空间申请互联网广告营销是什么
  • 找程序员做网站病毒营销案例