资源简介
遗传算法求解TSP旅行商问题,C语言源代码。人工智能经典算法
![](http://www.nz998.com/pic/42364.jpg)
代码片段和文件信息
// TSPGA.cpp : Defines the entry point for the console application.
//用遗传算法求解TSP问题的程序模板
#include
#include
#include
#include “math.h“
#include “time.h“
#define CITY_NUM 30 //城市编号是0~CITY_NUM-1
#define POPSIZE 100
#define MAXVALUE 10000 //路径越短越好
#define N 10000//需要根据实际求得的路径值修正
unsigned seed=(unsigned)time(0);
int Hash[CITY_NUM+1];
typedef struct CityPosition
{
int x;
int y;
}CityPosition;
// CityPosition CityPos[10]={{877}{9138}{8346}{7144}{6460}{6858}{8369}{8776}{7478}{7171}};
CityPosition CityPos[30]={{877}{9138}{8346}{7144}{6460}{6858}{8369}{8776}{7478}{7171}
{5869}{5462}{5167}{3784}{4194}{299}{764}{2260}{2562}{1854}{450}{1340}{1840}
{2442}{2538}{4126}{4521}{4435}{5835}{6232}};
double CityDistance[CITY_NUM][CITY_NUM];
typedef struct{
int colony[POPSIZE][CITY_NUM+1];//城市种群默认出发城市编号为0,则城市编号的最后一个城市还应该为0
double fitness[POPSIZE];// 路径适应值
double Distance[POPSIZE];//路径实际长度
int BestRooting[CITY_NUM+1];//最优城市路径序列
double BestFitness;//最优路径适应值
double BestValue;//最优路径长度
int BestNum;
}TSP*PTSP;
void CalculatDist()
{
int ij;
int temp1temp2;
for(i=0;i for(j=0;j<=CITY_NUM;j++){//最后一个城市还应该返回到出发节点
temp1=CityPos[j].x-CityPos[i].x;
temp2=CityPos[j].y-CityPos[i].y;
CityDistance[i][j]=sqrt(temp1*temp1+temp2*temp2);
}
}
}
void copy(int a[]int b[])
{
int i=0;
for(i=0;i {
a[i]=b[i];
}
}
bool check(TSP &cityint popint numint k)
{//用来检查新生成的节点是否在当前群体中,0号节点是默认出发节点和终止节点
int i;
for(i=0;i<=num;i++){
if(k==city.colony[pop][i])
return true;//新生成节点存在于已经生成的路径中
}
return false;//新生成节点没有存在于已经生成的路径中
}
void InitColony(TSP &city)
{
int ijr;
for(i=0;i city.colony[i][0]=0;
city.colony[i][CITY_NUM]=0;
city.BestValue=MAXVALUE;
city.BestFitness=0;//适应值越大越好
}
for(i=0;i {
for(j=1;j {
r=rand()%(CITY_NUM-1)+1;//产生1~CITY_NUM-1之间的随机数
while(check(cityijr))
{
r=rand()%(CITY_NUM-1)+1;
}
city.colony[i][j]=r;
}
}
}
void CalFitness(TSP &city)
{
int ij;
int startend;
int Best=0;
for(i=0;i city.Distance[i]=0;
for(j=1;j<=CITY_NUM;j++){
start=city.colony[i][j-1];end=city.colony[i][j];
city.Distance[i]=city.Distance[i]+CityDistance[start][end];
}
// city.fitness[i]=pow(1.1N/city.Distance[i]);
city.fitness[i]=N/city.Distance[i];
if(city.fitness[i]>city.fitness[Best])
Best=i;
}
copy(city.BestRootingcity.colony[Best]);
city.BestFitness=city.fitness[Best];
city.BestValue=city.Distance[Best];
city.BestNum=Best;
}
void Select(TSP &city)
{//选择算子
int TempColony[POPSIZE][CITY_NUM+1];
int ijst;
double GaiLv[POPSIZE];
int SelectP[POPSIZE+1];
double avg;
double sum=0;
for(i=0;i {
sum+=city.fitness[i];
}
fo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 66560 2011-03-07 15:24 TSP\Debug\TSP.bsc
文件 217144 2011-03-07 15:24 TSP\Debug\TSP.exe
文件 255244 2011-03-07 15:24 TSP\Debug\TSP.ilk
文件 15656 2010-12-16 16:31 TSP\Debug\TSP.obj
文件 239716 2011-03-07 15:23 TSP\Debug\TSP.pch
文件 525312 2011-03-07 15:24 TSP\Debug\TSP.pdb
文件 0 2010-12-16 16:31 TSP\Debug\TSP.sbr
文件 16318 2011-03-07 15:24 TSP\Debug\TSP2.obj
文件 0 2011-03-07 15:24 TSP\Debug\TSP2.sbr
文件 41984 2011-03-07 15:24 TSP\Debug\vc60.idb
文件 53248 2011-03-07 15:24 TSP\Debug\vc60.pdb
文件 6461 2010-12-16 16:31 TSP\TSP.CPP
文件 4253 2010-12-16 18:28 TSP\TSP.dsp
文件 514 2010-12-16 11:37 TSP\TSP.dsw
文件 41984 2011-03-07 15:24 TSP\TSP.ncb
文件 54784 2011-03-07 15:24 TSP\TSP.opt
文件 1821 2011-03-07 15:24 TSP\TSP.plg
文件 7393 2011-03-07 15:24 TSP\TSP2.cpp
目录 0 2011-03-07 15:24 TSP\Debug
目录 0 2011-03-07 15:24 TSP
----------- --------- ---------- ----- ----
1548392 20
- 上一篇:C++矩阵计算类
- 下一篇:数据结构中用栈实现迷宫问题的c++代码
相关资源
- 基于遗传算法的机器人路径规划
- C++实现的改进遗传算法
- 人工智能经典作业,野人与传教士过
- 遗传算法解决车辆调度问题
- wumpus世界(MFC编写)
- 最短路径的篇论文及必经节点的遗传
- c语言实现的遗传算法
- 遗传算法代码NSGA-II
- 四子棋智能下棋C语言实现
- LeNet-5神经网络——C源代码
- Python基础教程第3版) 高清PDF
- 基于人工智能的五子棋人机对弈
- C++遗传算法解决柔性作业车间调度附
- 用c语言实现的遗传算法单目标优化
- 推箱子人工智能算法
- 人工智能小游戏-基于alpha-beta剪枝算法
- 动物识别系统MFC)
- 九宫格程序c++人工智能
- 遗传算法c++源程序
- 遗传算法解决背包问题(C++版本)
- K210使用情况指南以及测试情况
- 用遗传算法实现语音识别--基于mfcc参
- 人工智能归结反演c++代码
- 用遗传算法解决车辆优化调度问题
- 人工智能 A算法 九宫格 启发式搜索
- 遗传算法解八数码问题
- 遗传算法解决0-1背包问题
- C/C++使用遗传算法解决车辆路径问题
- NSGA II代码实现集合包含、讲解及 网络
- 遗传算法c++代码.rar
评论
共有 条评论