这是我2012年第一个学期的期末大作业。
不得不说这段代码参考了网络上的一些代码,以及书本上的一些相关数据。
但是无论是网络上还是书上难免总是有很多C++的影子,这是我自己理解之后用C编写的蚁群算法的代码。
这几个城市的相关测试数据在CSDN上可以找到。
//蚁群算法关于简单的TSP问题求解//
#include
#include
#include
#include
#include
#define M 13 //蚂蚁的数量
#define N 144 //城市的数量
#define R 1000 //迭代次数
#define IN 1 //初始化的信息素的量
#define MAX 0x7fffffff //定义最大值
struct coordinate{
char city[15]; //城市名
int x; //城市相对横坐标
int y; //城市相对纵坐标
}coords[N];
double graph[N][N]; //储存城市之间的距离的邻接矩阵,自己到自己记作MAX
double phe[N][N]; //每条路径上的信息素的量
double add[N][N]; //代表相应路径上的信息素的增量
double yita[N][N]; //启发函数,yita[i][j]=1/graph[i][j]
int vis[M][N]; //标记已经走过的城市
int map[M][N]; //map[K][N]记录第K只蚂蚁走的路线
double solution[M]; //记录某次循环中每只蚂蚁走的路线的距离
int