蚁群算法与神经网络
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蚁群算法
% 计算最短路径距离及平均距离 if iter == 1 [min_Length,min_index] = min(Length); Length_best(iter) = min_Length; Length_ave(iter) = mean(Length); Route_best(iter,:) = Table(min_index,:); else [min_Length,min_index] = min(Length); Length_best(iter) = min(Length_best(iter - 1),min_Length); Length_ave(iter) = mean(Length); if Length_best(iter) == min_Length Route_best(iter,:) = Table(min_index,:); else Route_best(iter,:) = Route_best((iter-1),:); end end
蚂蚁数量m:一般取10-50
最大进化代数G:一般取100-500
蚁群算法
TSP旅行商问题:31个省会城市,每个城市只能拜访一次,最后回到出发城市, 要求选择的路径为所有路径最小值
蚁群算法
%% I. 清空环境变量 clear all clc %% II. 导入数据 citys=[………..]; %% III. 计算城市间相互距离 n = size(citys,1); D = zeros(n,n); for i = 1:n
2),' 终点');
Shortest_Route(1)])]);
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
%% VII. 绘图
title(['蚁群算法优化路径(最短距离:'
figure(1)
num2str(Shortest_Length) ')'])
plot([citys(Shortest_Route,1);citys(Shortest_Route(1 figure(2)
for j = 2:n tabu = Table(i,1:(j - 1)); % 已访问的城市集合(禁忌表) allow_in;
% 随机产生各个蚂蚁的起点城市
allow = citys_index(allow_index); % 待访问的城市集合
蚁群算法数学模型
在路径搜索过程中,蚂蚁会根据路径上信息素的多少及距离启发信息进行节 点间的转移。蚂蚁k在t时刻由节点i转移到节点j的状态转移概率如式所示:
蚁群算法
另外,为了避免残留信息素过多引起残留信息淹没启发 信息, 在每只蚂蚁走完一步或者完成对所有n个元素的遍历后, 要对 残留信息进行更新处理。由此, t+n时刻在路径(i,j) 上的信息量可按 如下规则进行调整其更新规则如下式所示:
蚁群算法
end
for i = 1:size(citys,1)
text(citys(i,1),citys(i,2),[' ' num2str(i)]);
%% VI. 结果显示
end
[Shortest_Length,index] = min(Length_best);
text(citys(Shortest_Route(1),1),citys(Shortest_Route(1),2),'
Eta(tabu(end),allow(k))^beta; end P = P/sum(P); % 轮盘赌法选择下一个访问城市
citys_index = 1:n;
Pc = cumsum(P);
target_index = find(Pc >= rand);
target = allow(target_index(1));
蚁群算法
% 更新信息素 Delta_Tau = zeros(n,n); % 逐个蚂蚁计算 for i = 1:m % 逐个城市计算 for 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); end Delta_Tau(Table(i,n),Table(i,1)) = Delta_Tau(Table(i,n),Table(i,1)) + Q/Length(i); end Tau = (1-rho) * Tau + Delta_Tau; % 迭代次数加1,清空路径记录表 iter = iter + 1; Table = zeros(m,n);
神经网络
三层BP网络
神经网络
• 激活函数
– 必须处处可导
• 一般都使用S型函数
• 使用S型激活函数时BP网络输入与输出关系
– 输入 net= x1w1 + x2w2 + ... + xnwn
∑ σ = ωi xi + s i =1
3. 用非线性特征函数 进行转换,获得输出
y = f (σ )
神经网络
• 神经元互连基本形式(分为前馈和反馈两种): … …
… … … …
输入层
…
隐层 输出层
前向网络
输入层 隐层 输出层 反馈网络
输入层 隐层 输出层 层内互连网络
输入层 隐层 输出层 互连网络
Length_best = zeros(iter_max,1); % 各代最佳路径的长度
Length_ave = zeros(iter_max,1); % 各代路径的平均长度
蚁群算法
for i = 1:m
% 逐个城市路径选择
%% V. 迭代寻找最佳路径 while iter <= iter_max
蚁群算法
根据信息素更新策略的不同, M. Dorigo 曾提出3 种不 同的基本蚁群算法模型,其差别在于Δτkij (t)求法的不同,即: Ant - Cycle 模型 Ant - Quantity 模型 Ant - Density 模型
其中Ant - antity 模型和Ant - Density 模型利用的是局 部信息; 而Ant- Cycle 模型利用的是整体信息, 在求解TSP 时性能较好, 因此通常采用Ant - Cycle 模型作为蚁群算 法的基本模型。
for j = 1:n if i ~= j D(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2)); else D(i,j) = 1e-4; end
end end
%% IV. 初始化参数
m = 50;
% 蚂蚁数量
alpha = 1;
% 信息素重要程度因子
beta = 5;
start = zeros(m,1); for i = 1:m
temp = randperm(n);
P = allow; % 计算城市间转移概率 for k = 1:length(allow)
P(k) = Tau(tabu(end),allow(k))^alpha *
start(i) = temp(1); end Table(:,1) = start;
Table(i,j) = target;
end
end
蚁群算法
% 计算各个蚂蚁的路径距离 Length = zeros(m,1); for i = 1:m Route = Table(i,:); for j = 1:(n - 1) Length(i) = Length(i) + D(Route(j),Route(j + 1)); end Length(i) = Length(i) + D(Route(n),Route(1)); end
o-');
ylabel('距离')
grid on
title('各代最短距离与平均距离对比')
神经网络
• 神经元的M-P模型,即将人工神经元的基本模型和激活函数合在一 起构成人工神经元,称之为处理单元。
• 单输出神经元(感知器)的工作过程是: 1. 从输入端接收输入信号 2. 根据连接权值 ,n求出所有输入的加权和σ
蚁群算法
Ant-Cycle模型
式中,Q表示信息素强度,它在一定程度上影 响算法的收敛速度;Lk表示第k只蚂蚁在本次 循环中所走路径的总长度。
实验设计:多球壳菌素对线粒体功能影响
Ant-Quantity模型
Ant-Density模型
蚁群算法
区别 后两个式子中利用的是局部信息,即蚂蚁
),1)],...
plot(1:iter_max,Length_best,'b',1:iter_max,Length_ave,'r:')
legend('最短距离','平均距离')
[citys(Shortest_Route,2);citys(Shortest_Route(1),2)],' xlabel('迭代次数')
完成一步后更新路径上的信息素;而第一个式 中利用的是全局信息,即蚂蚁完成一个循环后 更新所有路径上的信息素,在求解TSP时性能 较好,因此通常采用第一个模型作为蚁群算法 的基本模型。
蚁群算法
信息素启发式因子α:是否选择当前路径影响程度,也就是说反应蚂蚁在运 动中所积累信息量在指导蚂蚁搜索相对重要性,其值越大蚂蚁在选择以前 走过的路径可能性越大,过小容易陷入局部最优,取值范围一般为[1,4]. 期望启发因子β:向导性,越大越容易局部最优,收敛速度得以加快,一般 取值[3,5]. 信息素蒸发含量ρ:过小,路径再次被选择可能性升高,影响随机性和全 局搜索能力。过大,无用搜索降低算法收敛程度。
Southwest Jiaotong University
蚁群算法与神经网络
蚁群算法
three
蚁群算法
蚂蚁行走路线
整个蚂蚁群体所有路径
待优化可行解
优化问题解空间
蚁群算法
• 基本蚁群算法流程图 1. 在初始状态下,一群蚂蚁外出,此时没有信息素,那么各自会 随机的选择一条路径。 2. 在下一个状态,每只蚂蚁到达了不同的点,从初始点到这些点 之间留下了信息素,蚂蚁继续走,已经到达目标的蚂蚁开始返回, 与此同时,下一批蚂蚁出动,它们都会按照各条路径上信息素的 多少选择路线(selection),更倾向于选择信息素多的路径走(当然 也有随机性)。 3. 又到了再下一个状态,刚刚没有蚂蚁经过的路线上的信息素不 同程度的挥发掉了(evaporation),而刚刚经过了蚂蚁的路线信息素 增强(reinforcement)。然后又出动一批蚂蚁,重复第2个步骤。 每个状态到下一个状态的变化称为一次迭代,在迭代多次过后, 就会有某一条路径上的信息素明显多于其它路径,这通常就是一 条最优路径。
% 启发函数重要程度因子
rho = 0.1;
% 信息素挥发因子
Q = 1;
% 常系数
Eta = 1./D;
% 启发函数
Tau = ones(n,n);
% 信息素矩阵
Table = zeros(m,n);
% 路径记录表
iter = 1;
% 迭代次数初值
iter_max = 200;
% 最大迭代次数
Route_best = zeros(iter_max,n); % 各代最佳路径
Shortest_Route = Route_best(index,:);
起点');
disp(['最短距离:' num2str(Shortest_Length)]);
text(citys(Shortest_Route(end),1),citys(Shortest_Route(end),
disp(['最短路径:' num2str([Shortest_Route
终止条件: 1 给定一个外循环的最大数目,表明已经有足够的蚂蚁工作; 2 当前最优解连续K次相同而停止,其中K是一个给定的整数,表 示算法已经收敛,不再需要继续; 3 目标值控制规则,给定优化问题(目标最小化)的一个下界和一 个误差值,当算法得到的目标值同下界之差小于给定的误差值时, 算法终止。
由于信息素更新策略的不同, 以及城市规模取值 在适当范围时,全局搜索能使之得到更优的解,因此采用全局信 息素更新规则,形式如下:
式中,Q表示蚂蚁循环一周,且在一定程度上影 响算法收敛速度的信息素总量;Lk表示本次循环中,蚂蚁k所走路 段的长度。
蚁群算法
蚁群的规模和停止规则
蚁群大小: 一般情况下蚁群中蚂蚁的个数不超过TSP图中节点的个数。