参考一篇论文《An ant colony optimization algorithm for image edge detection》来尝试说清楚蚁群优化算法的大概流程。
蚁群算法是一种群体智能算法,这类算法主要是依靠随机选择加上(目标函数)引导来拓宽解的搜索能力。我个人觉得这一类的群体算法在概率上并不能保证得到的结果都是最优的,因此会出现不可控性。但是它的表示能力比较强,许多难以用数学函数描述的问题,能够借助群体智能算法来就行巧妙地求解,且能得到一个满意的解,群体智能算法的另一个优点是易于实现并行化。
1.初始化
蚁群算法在初始的情况下,会随机出现一定数量的蚂蚁来搜索食物。比如论文中:在 nrow×ncol 大小的图像中,随机生成K(ant_total_num)只蚂蚁:
temp = rand(ant_total_num, 2);
ant_pos_idx(:,1) = round(1 + (nrow-1) * temp(:,1));
ant_pos_idx(:,2) = round(1 + (ncol-1) * temp(:,2));
蚂蚁在运动过程中所携带的信息素初始为:
p = 0.0001 .* ones(size(img));
2.构造解
论文中,edge detection这个问题的解(也是下一步移动的参考依据–转移概率)定义为:
p(n)(l,m),(i,j)=(τ(n−1)i,j)