目录
前言
很遗憾现在才想到可以用写博客的方式把大学中的一些代码经历记录下来
作为一份回忆和分享
之后我也会陆续整理一些学习经验,并通过这样写博客的方式分享出来
1.首先介绍一下蚁群算法:
蚁群算法是一种模拟蚂蚁觅食行为的模拟优化算法,还是一种用于寻找优化路径的概率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。这种算法具有分布计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。
单个的蚂蚁行为比较简单,但是蚁群整体的行为却体现出智能,蚁群算法就是通过模拟整个蚁群的行为解决问题。蚁群算法应用于解决优化问题的基本思路为:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。
2.蚁群算法的基本思想
提到蚁群算法,还不能少了其中的重要参数,通过定义这些参数来实现蚁群行为的模拟
基于TSP问题的基本蚁群算法,需要设置:
①迭代次数;②蚁群数量;③城市数量;④信息素挥发速率等等
基本原理为:
①蚂蚁在路径上释放信息素
②碰到没走过的路口就随机选择一条路走,同时释放和路径长度有关的信息素,信息素浓度越高,路径越短,之后再次来到这个路口的时候就选择浓度高的路径即更短的路径
③最后得到的最短路径也就是信息浓度最高的路径
在实际求解TSP问题还要考虑蚁群的迭代次数、修改禁忌表、更新信息素、轮盘算法选择下一个城市等等
先放本次实验使用的代码:
对本次实验的代码理解和思路书写如下
1.设置各种参数,对它们进行赋值,城市的坐标数据用了两组老师提供的数据进行实验,方便对之后的结果进行分析处理;
2.根据城市坐标点计算城市之间距离,并且初始化城市间路线上的信息素;
3.判断迭代次数是否达到给定的值,如果已经达到给定的目标值则跳出循环,输出当前求得的最短路径,程序结束;否则进入步骤4
4.判断在某次迭代中,判断完成旅行的蚂蚁数量是否达到目标值,若达到目标值则结束当前迭代,并且迭代次数加1,更新最短路径和最短路径值,并且利用蚁环模型更新信息素,进入步骤3。否则进入步骤5
5.判断当前蚂蚁走过的城市数是否等于所有城市数,若完成旅行,则完成旅行的蚂蚁数量加1,进入步骤4。否则进入步骤6
6.计算蚂蚁从当前城市到所有未经过的下一个城市的概率,并通过轮盘算法进行选择下一个城市,则当前蚂蚁走过的城市数+1,修改禁忌表,进入步骤5
放出本次实验所用的代码
#include <iostream>
#include <algorithm>
#include <cstring>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include &l