蚁群算法的C语言实现

//段海滨教授主编的《蚁群算法原理及其应用》附录里的C程序代码. 并有几位网友修改。

//Basic Ant Colony Algorithm for TSP

#include

#include

#include

#include

#include

#include

#include

#define N 31 //city size

#define M 31 //ant number

double inittao=1;

double tao[N][N];

double detatao[N][N];

double distance[N][N];

double yita[N][N];

int tabu[M][N];

int route[M][N];

double solution[M];

int BestRoute[N];

double BestSolution=10000000000;

double alfa,beta,rou,Q;

int NcMax;

void initparameter(void); // initialize the parameters of basic ACA

double EvalueSolution(int *a); // evaluate the solution of TSP, and calculate the length of path

void InCityXY( double x[], double y[], char *infile ); // input the nodes' coordinates of TSP

void initparameter(void)

{

alfa=1; beta=5; rou=0.9; Q=100;

NcMax=200;

}

void main(void)

{

int NC=0;

initparameter();

double x[N];

double y[N];

InCityXY( x, y, "city31.tsp" );

for(int i=0;i

for(int j=i+1;j

{

distance[j][i]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));

distance[i][j]=distance[j][i];

}

// calculate the heuristic parameters

for(i=0;i

for(int j=0;j

{

tao[i][j]=inittao;

if(j!=i)

yita[i][j]=100/distance[i][j];

}

for(int k=0;k

for(i=0;i

route[k][i]=-1;

srand(time(NULL));

for(k=0;k

{

route[k][0]=k%N;

tabu[k][route[k][0]]=1;

}

//each ant try to find the optiamal path

do {

int s=1;

double partsum;

double pper;

double drand;

//ant choose one whole path

while(s

{

for(k=0;k

{

int jrand=rand()%3000;

drand=jrand/3001.;

partsum=0;

pper=0;

for(int j=0;j

{

if(tabu[k][j]==0)

partsum+=pow(tao[route[k][s-1]][j],alfa)*pow(yita[route[k][s-1]][j],beta);

}

for(j=0;j

{

if(tabu[k][j]==0)

pper+=pow(tao[route[k][s-1]][j],alfa)*pow(yita[route[k][s-1]][j],beta)/partsum;

if(pper>drand)

break;

}

tabu[k][j]=1;

route[k][s]=j;

}

s++;

}

// the pheromone is updated

for(i=0;i

for(int j=0;j

detatao[i][j]=0;

for(k=0;k

{

solution[k]=EvalueSolution(route[k]);

if(solution[k]

{

BestSolution=solution[k];

for(s=0;s

BestRoute[s]=route[k][s];

}

}

for(k=0;k

{

for(s=0;s

detatao[route[k][s]][route[k][s+1]]+=Q/solution[k];

detatao[route[k][N-1]][route[k][0]]+=Q/solution[k];

}

for(i=0;i

for(int j=0;j

{

tao[i][j]=rou*tao[i][j]+detatao[i][j];

if(tao[i][j]<0.00001)

tao[i][j]=0.00001;

if(tao[i][j]>20)

tao[i][j]=20;

}

for(k=0;k

for(int j=1;j

{

tabu[k][route[k][j]]=0;

route[k][j]=-1;

}

NC++;

} while(NC

//ou

tput the calculating results

fstream result;

result.open("optimal_results.log", ios::app);

if(!result)

{

cout<

C语言double里的deta,蚁群算法(C语言版)相关推荐

  1. 蚁群算法c语言实现加注释,蚁群算法代码实现

    旅行商问题大都是用遗传算法求解,不过蚁群算法比它高效得多,在百度的蚁群算法吧里有人发了个注释清晰的代码,有兴趣的可以去研究一下蚁群算法和模拟退火算法,这两者都可以解决旅行商问题.而关于遗传算法和模拟退 ...

  2. 蚁群算法 c语言,蚁群算法(C语言实现)

    这是我2012年第一个学期的期末大作业. 不得不说这段代码参考了网络上的一些代码,以及书本上的一些相关数据. 但是无论是网络上还是书上难免总是有很多C++的影子,这是我自己理解之后用C编写的蚁群算法的 ...

  3. 蚁群算法C语言最短路径规划,蚁群算法规划路径

    蚁群算法可以用于路径规划,在本例中,地形矩阵用0表示无障碍物.用1表示有障碍物,机器人从1x1处走到10x10处,使用蚁群算法找最短路径. 步骤如下:初始化参数.地形矩阵.信息素矩阵和启发式因子矩阵. ...

  4. C语言double里的deta,C语言考试练习题_一元二次方程 (C++代码)

    解题思路:1.判断deta的值:deta>0,x1=-b+sqrt(deta)/2*a;x2=-b-sqrt(deta)/2*a; deta=0,x1.x2=-b/2*a;此题不需考虑复数解得情 ...

  5. 人工免疫算法c语言实例,毕业设计_蚁群算法模拟系统的设计与实现.doc

    J I A N G S U U N I V E R S I T Y 本 科 毕 业 论 文 蚁群算法模拟系统的设计与实现 Ant Colony Simulation System Design and ...

  6. c语言编译免疫算法亲和力,蚁群算法模拟系统设计及实现.doc

    J I A N G S U U N I V E R S I T Y 本 科 毕 业 论 文 蚁群算法模拟系统的设计与实现 Ant Colony Simulation System Design and ...

  7. 任务分配算法c语言,基于蚁群算法多Agent任务分配方法.pdf

    基于蚁群算法多Agent任务分配方法.pdf 第26 卷第4 期 湖 南 工 业 大 学 学 报 Vol.26 No.4 20 12 年7 月 Journal of Hunan University ...

  8. 蚁群算法解决tsp问题c语言,蚁群算法解决TSP问题程序.doc

    蚁群算法解决TSP问题程序 蚁群算法用于求解TSP问题,经过仿真测试,发现此程序的优化效率和鲁棒性都非常好. 这与在无线多媒体传感器网络路由算法应用到的寻找最佳路径的蚁群算法非常相似. functio ...

  9. 蚁群算法求最值c语言实现,蚁群算法代码(求函数最值)

    <蚁群算法代码(求函数最值)>由会员分享,可在线阅读,更多相关<蚁群算法代码(求函数最值)(4页珍藏版)>请在人人文库网上搜索. 1.function F=F(x1,x2) % ...

最新文章

  1. python之抽象基类
  2. OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so
  3. 【python教程入门学习】Pandas库下载和安装
  4. hdu 4350 Card(递推循环节,3级)
  5. 在FAANG面试中破解堆算法
  6. php json_decode NULL
  7. 227 Puzzle
  8. This program requires version 3.4.0 of the Protocol Buffer runtime library
  9. qml鼠标拖动_QML学习笔记(七)— 实现可拖拽、编辑、选中的ListView
  10. HTML 基础源代码
  11. 画出使用回溯法解0/1背包问题的解空间树
  12. excel多列合并关联数据
  13. 基于WebGIS的电子政务应用(基于J2EE的MVC架构)
  14. Python+scrapy+mysql实现爬取磁力链接
  15. 用python做下拉菜单
  16. 百家号自媒体如何提升文章质量,百家号怎么写好文章,百家号写文章技巧
  17. C语言基础:求解一元二次方程
  18. 【第九篇】商城系统-商城首页功能
  19. 面对这个缓慢、脆弱、健忘的互联网,IPFS协议势在必行!
  20. 网络安全知识之Cross-Site Request Forgery (CSRF) 简介

热门文章

  1. 通过tftp32在3110E上调试程序
  2. Galaxy Note 通过Kies升级,固件存放目录在哪里?
  3. 界面打飞机游戏,C语言
  4. 安卓pdf阅读器_BOOX阅读器:不仅阅读效果逆天,PDF阅读和手写体验更出色!
  5. 全球潮汐数据API使用方法,潮汐数据查询
  6. 日期+月份的计算,得出另一个日期
  7. java超级玛丽含图片背景_java超级玛丽(带背景音乐)
  8. 27、用户操作srv、web服务实现
  9. 区块链革命 - 第2篇 转型 - 第4章 重新设计公司架构:核心与边缘
  10. 文件夹下的多个sdf文件批量转化为csv