C++蚁群算法求解TSP问题


C++利用蚁群算法,求解TSP问题。含代码,可用VC2010打开。
资源截图
代码片段和文件信息
//#include“ComHeadFile.h“
#include“Graph.h“

Graph::Graph()
{
vexnum=arcnum=0;

for(int i=0;i for(int j=0;j arcs[i][j].value=0;

for(int i=0;i visited[i]=0;
}

int Graph::FindNum(string c)         //根据名字找到节点编号
{
int num;
for(num=0;num {
if(c==vex[num])
break;
}

if(num else return -1;
}

void Graph::CreatGraph()
{
int xy;                      //临时坐标
ifstream inFile(“graph.txt“);
string c;
vexnum=0;
arcnum=0;
if(inFile.fail()) {cout<<“Fail to open file“<
inFile.seekg(0Lios::beg);
getline(inFilec);
if(c==“DG“) kind=DG;
else if(c==“AG“) kind=AG;
else if(c==“DN“) kind=DN;
else if(c==“AN“) kind=AN;
inFile>>vexnum;
inFile>>arcnum;

for(int i=0;i {
inFile>>x;
inFile>>y;
if(kind==DG||kind==AG) arcs[x][y].value=1;
else  inFile>>arcs[x][y].value;
if (kind==DG||kind==DN) 
{
arcs[y][x].value=arcs[x][y].value;
arcs[x][y].Pass=arcs[y][x].Pass=0;
arcs[x][y].Element=arcs[y][x].Element=ORGINAL_ELEMENT;
}
}

inFile.get();
for(int i=0;i {
getline(inFilec);
vex[i]=c;

}

inFile.close();
}

void Graph::PrintGraph()
{
cout<<“Graph Kind:“< cout<<“Vex Num“< cout<<“Arc Num“<
for(int i=0;i {
for(int j=0;j {
cout< }
cout< }

for(int i=0;i {
cout<<“No “< }
}

void Graph::InsertVex(string c)               //插入节点
{

}
void Graph::DeleteVex(int v)               //删除结点
{
 
}

//void Graph::InsertArc(int vint wint i=1)     //增加弧v->w 无向则同时增加w->v 无权则权值为1 
//void Graph::DeleteArc(int vint w)

void Graph::DFSTraverse(int v)
{
stack dfs;
dfs.push(v);

while(dfs.size())
{
int tmp=dfs.top();
if(!visited[tmp])
{
visit(thistmp);
visited[tmp]=1;
}
dfs.pop();
for(int i=vexnum-1;i>=0;i--)
{
if(arcs[tmp][i].value)
if(!visited[i])
{
dfs.push(i);

}
}
}
    for(int i=0;i visited[i]=0;


}

void Graph::BFSTraverse(int v)
{
queue bfs;
bfs.push(v);
visited[v]=1;
while(bfs.size())
{
int tmp=bfs.front();
visit(thistmp);

bfs.pop();
for(int i=0;i {
if(arcs[tmp][i].value)
if(!visited[i])
{
bfs.push(i);
visited[i]=1;
}
}
}
    for(int i=0;i visited[i]=0;

}

void Graph::ShortestPath_DIJ(int v/*int *pathint *distance*/)
{

int pathNow=v;                   //现在走到哪里去了==
bool *done=new bool[vexnum];                            //标记是否找到
int *path=new int[vexnum];
int *distance=new int[vexnum];

for(int i=0;i {
path[i]=v;
done[i]=0;
distance[i]=(arcs[v][i].value==0)?INT_MAX:arcs[v][i].value;
}

distance[v]=0;
done[v

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-06-13 22:54  TSP
     目录           0  2013-06-13 22:54  TSPALL_tsp
     文件        1296  2013-06-04 18:16  TSPALL_tspa280.opt.tour
     文件         589  1995-04-27 23:09  TSPALL_tspa280.opt.tour.gz
     文件        1331  1995-04-27 23:08  TSPALL_tspa280.tsp.gz
     文件        9548  1994-04-28 18:43  TSPALL_tspali535.tsp
     文件        4202  1995-04-27 23:08  TSPALL_tspali535.tsp.gz
     文件         211  1995-04-27 23:09  TSPALL_tspatt48.opt.tour.gz
     文件         480  1995-04-27 23:08  TSPALL_tspatt48.tsp.gz
     文件        3617  1995-04-27 23:08  TSPALL_tspatt532.tsp.gz
     文件         181  1995-04-27 23:09  TSPALL_tspayg29.opt.tour.gz
     文件        1196  1995-04-27 23:08  TSPALL_tspayg29.tsp.gz
     文件         179  1995-04-27 23:09  TSPALL_tspays29.opt.tour.gz
     文件        1941  1995-04-27 23:08  TSPALL_tspays29.tsp.gz
     文件         192  1995-04-27 23:09  TSPALL_tsperlin52.opt.tour.gz
     文件         472  1995-04-27 23:08  TSPALL_tsperlin52.tsp.gz
     文件         991  1995-04-27 23:08  TSPALL_tspier127.tsp.gz
     文件        3947  1995-04-27 23:08  TSPALL_tsprazil58.tsp.gz
     文件       92153  1995-04-27 23:08  TSPALL_tsprd14051.tsp.gz
     文件         403  1995-04-27 23:09  TSPALL_tsprg180.opt.tour.gz
     文件        4443  1995-04-27 23:08  TSPALL_tsprg180.tsp.gz
     文件         307  1995-04-27 23:08  TSPALL_tspurma14.tsp.gz
     文件         325  1995-04-27 23:09  TSPALL_tspch130.opt.tour.gz
     文件        2475  1995-04-27 23:08  TSPALL_tspch130.tsp.gz
     文件         366  1995-04-27 23:09  TSPALL_tspch150.opt.tour.gz
     文件        2847  1995-04-27 23:08  TSPALL_tspch150.tsp.gz
     文件        5705  1995-04-27 23:08  TSPALL_tspd1291.tsp.gz
     文件      110191  1995-06-20 21:34  TSPALL_tspd15112.tsp.gz
     文件        7922  1995-04-27 23:08  TSPALL_tspd1655.tsp.gz
     文件      122371  1995-04-27 23:09  TSPALL_tspd18512.tsp.gz
     文件        1215  1995-04-27 23:09  TSPALL_tspd198.tsp.gz
............此处省略174个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)