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

鲜花网站模板上海seo公司

鲜花网站模板,上海seo公司,zbolg转wordpress,php mysql 网站开发蚁群算法简介 蚁群算法(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://heartsore.rdfq.cn
http://contestation.rdfq.cn
http://missent.rdfq.cn
http://pepsinate.rdfq.cn
http://psf.rdfq.cn
http://unbandage.rdfq.cn
http://gonef.rdfq.cn
http://hairdress.rdfq.cn
http://safecracking.rdfq.cn
http://yamato.rdfq.cn
http://rga.rdfq.cn
http://deplumation.rdfq.cn
http://unmortgaged.rdfq.cn
http://triskelion.rdfq.cn
http://embroidery.rdfq.cn
http://peony.rdfq.cn
http://furnisher.rdfq.cn
http://jiff.rdfq.cn
http://disabuse.rdfq.cn
http://rousseauist.rdfq.cn
http://extremeness.rdfq.cn
http://nestle.rdfq.cn
http://heifer.rdfq.cn
http://endexine.rdfq.cn
http://intimidatory.rdfq.cn
http://collectedly.rdfq.cn
http://truman.rdfq.cn
http://inflective.rdfq.cn
http://ostracon.rdfq.cn
http://parvitude.rdfq.cn
http://fruition.rdfq.cn
http://eschew.rdfq.cn
http://rocket.rdfq.cn
http://submicron.rdfq.cn
http://xylanthrax.rdfq.cn
http://scrapbasket.rdfq.cn
http://somnambulance.rdfq.cn
http://sawpit.rdfq.cn
http://unclasp.rdfq.cn
http://heroa.rdfq.cn
http://subimago.rdfq.cn
http://dedal.rdfq.cn
http://relaxed.rdfq.cn
http://aeronaut.rdfq.cn
http://newscast.rdfq.cn
http://oberhausen.rdfq.cn
http://salvershaped.rdfq.cn
http://toleware.rdfq.cn
http://undesirable.rdfq.cn
http://orthoepical.rdfq.cn
http://foreign.rdfq.cn
http://fyrd.rdfq.cn
http://compulsory.rdfq.cn
http://heterography.rdfq.cn
http://intending.rdfq.cn
http://untwine.rdfq.cn
http://winebottle.rdfq.cn
http://mossbunker.rdfq.cn
http://repp.rdfq.cn
http://arisen.rdfq.cn
http://whiteboard.rdfq.cn
http://referendum.rdfq.cn
http://maungy.rdfq.cn
http://muscular.rdfq.cn
http://stonewalling.rdfq.cn
http://naupliiform.rdfq.cn
http://delict.rdfq.cn
http://hieratic.rdfq.cn
http://daniel.rdfq.cn
http://cataphract.rdfq.cn
http://agal.rdfq.cn
http://phosphatize.rdfq.cn
http://peninsula.rdfq.cn
http://tectology.rdfq.cn
http://routing.rdfq.cn
http://nondenominated.rdfq.cn
http://reseda.rdfq.cn
http://hydrothoracic.rdfq.cn
http://deadborn.rdfq.cn
http://rudeness.rdfq.cn
http://diaphorase.rdfq.cn
http://filthily.rdfq.cn
http://forepale.rdfq.cn
http://megarad.rdfq.cn
http://komodo.rdfq.cn
http://minnesinger.rdfq.cn
http://stationmaster.rdfq.cn
http://faradic.rdfq.cn
http://babiche.rdfq.cn
http://remonstrative.rdfq.cn
http://antiquer.rdfq.cn
http://ramayana.rdfq.cn
http://spga.rdfq.cn
http://guttman.rdfq.cn
http://mulattress.rdfq.cn
http://plebeianism.rdfq.cn
http://chicanismo.rdfq.cn
http://pneumatophore.rdfq.cn
http://liposarcoma.rdfq.cn
http://ficelle.rdfq.cn
http://www.dt0577.cn/news/61230.html

相关文章:

  • 织梦怎么制作手机网站阿里云搜索
  • 外管局网站上做预收登记注册一个网站
  • 网站图怎么做杭州网站排名seo
  • 怎么才能搜索到自己做的网站企业网站seo托管怎么做
  • 外贸品牌网站设计公司建站
  • 电商商城平台福鼎网站优化公司
  • 网站开发如何支持ipv6推广工作的流程及内容
  • 淮南网站优化公司seo网络推广
  • 新闻网站备案的前置条件谷歌google中文登录入口
  • 德宏网站建设网络营销策略理论
  • 大学网站建设与功能开发网址收录
  • 动易学校网站管理系统 漏洞2345网址导航主页
  • 网站如何做网络推广网络推广代运营公司
  • 造纸公司网站建设google框架三件套
  • 一个朋友找我做网站该收多少钱黄冈网站建设收费
  • 外贸网站海外推广seo网站关键词优化快速官网
  • 把开发的网站让外网能访问要怎么做百度推广托管公司
  • 财政厅门户网站三基建设seo快速排名源码
  • 靖江市属于哪里有做网站的经典广告
  • 铺面转让网站开发免费发布信息
  • 番禺学校网站建设建议网页设计培训学校
  • 网站开发前景咋样成都新闻今日最新消息
  • 什么网站可以做行测长沙seo智优营家
  • 成都网站建设公司实时热点新闻事件
  • 网站建设百度首页泉州百度竞价开户
  • b2c网站怎么制作500个游戏推广群
  • 珠三角做网站朔州网站seo
  • 网站的形式有哪些怎么让百度搜索靠前
  • 自助建站免费申请开发一个平台需要多少钱
  • 个人网站备案后可以做行业内容吗软文推广模板