智能算法实验报告精要.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智能算法实验报告精要

人工智能实验—智能算法实验一 实验目的: 实验原理: 实验内容:#includeiostream #includemath.h #includetime.h using namespace std; const int MaxInt=~(unsigned int)0 / 2; /*double d[5][5]={ {0, 7, 6,10,13}, {7, 0, 7,10,10}, {6, 7, 0,5 ,9 }, {10,10,5,0, 6 }, {13,10,9,6, 0 } }; //表示路径(i,j)之间的长度 */ class Ant { private: int AntNum;//蚂蚁个数; int NodeNum;//节点个数; int MaxRunNum;//最大运行次数 int RunNum;//运行次数 double **d;//表示路径(i,j)之间的长度 double **n;//边弧(i,j)的能见度(visibility), 或称局部启发因子,一般取1/d 表示路径(i,j)之间的长度; double **t;//边弧(i,j)的信息素轨迹强度(intensity) double INITINFO;//初始的信息素值 //double **deltaT;//蚂蚁k 于弧上(i,j)留下的单位长度轨迹信息素数量; double **P;//蚂蚁k 在结点的转移概率,j 是尚未访问结点; int **tab;//蚂蚁的禁忌表 double MinSum;//最短路径长度 int *MinRoute;//最优路径 double a;//信息素轨迹的相对重要性 double b;//边弧能见度的相对重要性 double p;//信息素轨迹的持久性(Evaporation) double Q;//(轨迹数量) public: Ant(int Num,double position[][2]):NodeNum(Num) { srand(time(NULL)); AntNum=50; p=0.8; a=1;//(1~2) b=2;//(2~5) P=get2DMemory(P,NodeNum); t=get2DMemory(t,NodeNum); n=get2DMemory(n,NodeNum); d=get2DMemory(d,NodeNum); tab=get2DMemory(tab,AntNum,NodeNum); posToDistance(position); MinSum=MaxInt; MinRoute=new int[NodeNum]; MaxRunNum=200; RunNum=0; INITINFO=200; Q=2000; } void posToDistance(double pos[][2]) { for(int i=0;iNodeNum;i++) for(int j=0;jNodeNum;j++) { d[i][j]=sqrt((pos[i][0]-pos[j][0])*(pos[i][0]-pos[j][0])+(pos[i][1]-pos[j][1])*(pos[i][1]-pos[j][1])); } } void getMinRoute(int *CurrentRoute) { for(int i=0;iNodeNum;i++) MinRoute[i]=CurrentRoute[i]; } double getPossiblity(int i,int j,int k,int cNode) { if(i==j) return 0; else { if(inTab(j,k,cNode)==true) return 0; } return Pow(t[i][j],a)*Pow(n[i][j],b)/sumPossiblity(i,k,cNode); } bool inTab(int s,int k,int cNode) { for(int m=0;mcNode;m++) if(s==tab[k][m]) return true; return false; } doubl

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档