人工智能TSP旅行商问题实验报告Word文档格式.docx
- 文档编号:14338591
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:10
- 大小:74.91KB
人工智能TSP旅行商问题实验报告Word文档格式.docx
《人工智能TSP旅行商问题实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《人工智能TSP旅行商问题实验报告Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
2要求求出问题最优解,若得不出最优解,请分析原因;
3对实验中的几个算法控制参数进行仔细定义,并能通过实验选择参数的最佳值;
4要求界面显示每次迭代求出的局部最优解和最终求出的全局最优解。
四数据结构
请说明染色体个体和群体的定义方法。
structRanSeTi//染色体的个体的定义方法
{
intcity[cities];
//基因的排列(即城市的顺序,路径的组织)
intadapt;
//记录适应度
doublep;
//记录其在种群中的幸存概率
}RanSeTi[num],RanSeTitemp[num];
//用数组来存储染色体群体方法
五实验算法
1说明算法中对染色体的编码方法,适应度函数定义方法
1)染色体的编码方法:
即为染色体个体定义过程中生成的基因排列(路径中城市的顺序)
intcity[cities];
intadapt;
doublep;
2)适应度函数定义方法:
评价函数即适应度函数,在遗传算法中用来计算一个染色体优劣的函数。
在进行遗传操作和种群进化的时候,每个染色体的适应值是决定它是否进入下一轮种群进化的关键因素。
适应值高的函数被选作新一代个体的可能性就会大。
TSP问题中适应度函数常取路径长度的倒数(或倒数的相关函数),如:
其中,N是个调节参数,根据实验情况进行确定。
for(i=0;
i<
num;
i++)
{
sumdistance=0;
for(j=1;
j<
cities;
j++)
{
n1=RanSeTi[i].city[j-1];
n2=RanSeTi[i].city[j];
sumdistance+=distance[n1][n2];
}
RanSeTi[i].adapt=sumdistance;
//每条染色体的路径总和
biggestsum+=sumdistance;
//种群的总路径
}
2采用的选择、交叉、变异操作算子的具体操作
1)选择操作
我们定义f(xi)为第i(i=1,2,3.....popsize)个染色体的适应度,则每个个体被选中的概率
是:
本题中具体使用的是期望值方法
//初始化梯度概率
for(i=0;
gradient[i]=0.0;
xuanze[i]=0.0;
gradient[0]=group[0].p;
for(i=1;
gradient[i]=gradient[i-1]+group[i].p;
srand((unsigned)time(NULL));
//随机产生染色体的存活概率
xuanze[i]=(rand()%100);
xuanze[i]/=100;
//选择能生存的染色体
for(j=0;
if(xuanze[i]<
gradient[j])
{
xuan[i]=j;
//第i个位置存放第j个染色体
break;
}
}
//拷贝种群
grouptemp[i].adapt=group[i].adapt;
grouptemp[i].p=group[i].p;
grouptemp[i].city[j]=group[i].city[j];
//数据更新
temp=xuan[i];
group[i].adapt=grouptemp[temp].adapt;
group[i].p=grouptemp[temp].p;
group[i].city[j]=grouptemp[temp].city[j];
2)交叉操作:
交叉算子就是把两个父代个体的部分结构加以替换重组而生成新个体的操作。
部分匹配交叉、顺序交叉、改进的启发式顺序交叉
//temp1号染色体和temp2染色体交配
t/2;
point1=rand()%cities;
point2=rand()%cities;
for(j=temp1;
if(jiaopeiflag[j]==1)
temp1=j;
break;
for(j=temp1+1;
temp2=j;
//进行基因交配
if(point1>
point2)//保证point1<
=point2
temp=point1;
point1=point2;
point2=temp;
memset(map1,-1,sizeof(map1));
memset(map2,-1,sizeof(map2));
//断点之间的基因产生映射
for(k=point1;
k<
=point2;
k++)
map1[group[temp1].city[k]]=group[temp2].city[k];
map2[group[temp2].city[k]]=group[temp1].city[k];
//断点两边的基因互换
for(k=0;
point1;
temp=group[temp1].city[k];
group[temp1].city[k]=group[temp2].city[k];
group[temp2].city[k]=temp;
for(k=point2+1;
//处理产生的冲突基因
for(kk=point1;
kk<
kk++)
if(group[temp1].city[k]==group[temp1].city[kk])
group[temp1].city[k]=map1[group[temp1].city[k]];
if(group[temp2].city[k]==group[temp2].city[kk])
group[temp2].city[k]=map2[group[temp2].city[k]];
temp1=temp2+1;
3)变异操作
TSP问题中,经常采取的变异操作主要有:
位点变异、逆转变异、对换变异、插入变异。
//随机产生变异概率
bianyip[i]=(rand()%100);
bianyip[i]/=100;
//确定可以变异的染色体
t=0;
if(bianyip[i]<
pm)
bianyiflag[i]=1;
t++;
//变异操作,即交换染色体的两个节点
if(bianyiflag[i]==1)
temp1=rand()%10;
temp2=rand()%10;
point=group[i].city[temp1];
group[i].city[temp1]=group[i].city[temp2];
group[i].city[temp2]=point;
3实验中采用的算法参数的最佳选择值是多少
#definecities10/30//城市的个数
#defineMAXX150//迭代次数
#definepc0.72/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 TSP 旅行 问题 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)