蚁群算法

4-2蚁群算法(ACO)代码

匿名 (未验证) 提交于 2019-12-03 00:41:02
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt coordinates = np.array([[565.0,575.0],[25.0,185.0],[345.0,750.0],[945.0,685.0],[845.0,655.0], [880.0,660.0],[25.0,230.0],[525.0,1000.0],[580.0,1175.0],[650.0,1130.0], [1605.0,620.0],[1220.0,580.0],[1465.0,200.0],[1530.0, 5.0],[845.0,680.0], [725.0,370.0],[145.0,665.0],[415.0,635.0],[510.0,875.0],[560.0,365.0], [300.0,465.0],[520.0,585.0],[480.0,415.0],[835.0,625.0],[975.0,580.0], [1215.0,245.0],[1320.0,315.0],[1250.0,400.0],[660.0,180.0],[410.0,250.0], [420.0,555.0],[575.0,665.0],[1150.0,1160.0],[700.0,580.0],[685.0,595

蚁群算法求解TSP问题

匿名 (未验证) 提交于 2019-12-03 00:17:01
一、蚁群算法简介 二、TSP问题(旅行商问题) 1、构建图:构建图与问题描述图是一致的,成份的集合C对应着点的集合(即:C=N),连接对应着边的集合(即L=A),且每一条边都带有一个权值,代表点i和j之间的距离。 2、约束条件:所有城市都要被访问且每个城市最多只能被访问一次。 3、信息素和启发式信息:TSP 问题中的信息素表示在访问城市i后直接访问城市j的期望度。启发式信息值一般与城市i和城市j的距离成反比。 4、解的构建:每只蚂蚁最初都从随机选择出来的城市出发,每经过一次迭代蚂蚁就向解中添加一个还没有访问过的城市。当所有城市都被蚂蚁访问过之后,解的构建就终止。 随机生成50个城市进行测试,初始蚂蚁数量为50,信息素重要程度因子alpha = 1,启发函数重要程度因子beta = 5,信息素挥发因子rho = 0.1, 最大迭代次数为150 %% 旅行商问题(TSP)优化 %% 清空环境变量 clear all clc %% 导入数据 %load citys_data.mat city = ceil(rand(50,2) * 5000) load city.mat %% 计算城市间相互距离 fprintf('Computing Distance Matrix... \n'); n = size(city,1); D = zeros(n,n); for i = 1:n for j =

模拟退火算法理论及其MATLAB实现

邮差的信 提交于 2019-11-29 14:26:17
像遗传算法,模拟退火,免疫算法,粒子群算法,神经网络,蚁群算法,禁忌搜索这样的智能算法,都是 独立于问题 的算法。对于TSP这种NP难问题,不可能有解析的确定的算法去求解全局最优解,只能依靠这种随机搜索算法去求解局部最优解。 这个 “独立于问题” 描述地特别到位,精辟,道出了本质。 来源: https://blog.csdn.net/qq_36607894/article/details/100584628

蚁群算法

天大地大妈咪最大 提交于 2019-11-27 07:15:53
TSP问题(Traveling Salesman Problem)是数学领域中著名问题之一。假设有一个旅行商人要拜访N个城市,他必须选择所要走的路径, 路径的限制是每个城市只能拜访一次(通过禁忌表) ,而且最后要回到原来出发的城市,要求路径的总和最小 蚁群算法(AG)是一种模拟蚂蚁觅食行为的模拟优化算法,首先使用在解决TSP(旅行商问题)上。 人工蚁群与真实蚁群对比: 相同点 不同点 都是为了寻找最短路径问题 人工蚁群具有记忆功能 都存在个体间的信息交互问题 人工蚁群的选择并不盲目性 都采用根据当前的信息进行随机选择策略 人工蚂蚁生活在离散的时间环境中 代码部分: 蚁群算法实现核心有两点 :1,蚂蚁如何选择下一个城市;2,城市间路径信息素如何更新。 a. 计算城市之间的转移概率: % 计算城市之间的转移概率 for k = 1:length(allow) P(k) = Tau(tabu(end),allow(k))^alpha * Eta(tabu(end),allow(k))^beta; %等式的分子 End P = P/sum(P); %上面等式的分母部分 在计算出来城市之间的转移概率之后还要用轮盘赌法的原因: 在得到剩下去城市概率,产生一个随机数,基于随机数决定去下面哪一个城市。例如:剩3个城市,概率为:0.1,0.2,0.7,累计概率为:0.1,0.3,0.7

蚁群算法

落花浮王杯 提交于 2019-11-26 16:58:32
原理==书上有==懒的写了_(:з」∠)_ 写了TSP问题,用的数据还是几天前写遗传算法 模拟退火算法解TSP问题的数据,算出来的结果比前面几个算法好多了 x=[41 94;37 84;54 67;25 62;7 64;2 99;68 58;71 44;54 62;83 69;64 60;18 54;22 60; 83 46;91 38;25 38;24 42;58 69;71 71;74 78;87 76;18 40;13 40;82 7;62 32;58 35;45 21;41 26;44 35;4 50]; n=size(x,1); d=zeros(n,n); for i=1:n for j=1:n if i>j d(i,j)=(sum((x(i,:)-x(j,:)).^2)).^0.5; d(j,i)=d(i,j); if i==j d(i,j)=1e-4; end end end end %初始参数 m=50; %蚂蚁数量 alpha=1; %信息素重要程度因子 beta=5; %启发函数重要程度因子 rho=0.1; %信息素挥发因子 Q=1; %常系数 Eta=1./d; %启发函数 距离的倒数 Tau=ones(n,n); %信息素矩阵 table=zeros(m,n); %路径记录表 iter=1; %迭代次数初值 iter_max=200; %最大迭代次数