91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-06
  • 語言: C/C++
  • 標簽: 遺傳算法??TSP??

資源簡介

本程序是采用C++實現的遺傳算法實現TSP問題,城市數不多,但是思想很清楚,有用的就下吧。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
using?namespace?std;

#define?N?5????????????//群體規模N數字0~9對應A~J
#define?Pc?0.75????????//交配概率Pc
#define?Pw?0.01????????//變異概率Pw
#define MAX?200????????//沒有直接連接設為MAX,值200與計算概率有關

int?small=1000;

int?t=0;???????????????//代數
int?F(int?*a);?????????//適應函數
void?mating();?????????//交配函數
void?change();?????????//變異函數
int?sol[N];????????????//最優解
int?chrom[N];??????????//染色體
int?chromnew[N];???????//交配后獲得的新染色體
int?group[N][N+1];?????//初始群體
float?group_p[N][1];???//群體中染色體被選中概率
int?race[N][N+1];??????//種群
float?race_p[N][1];????//種群中染色體被選中概率

int?variation_count=0;???//計算變異次數

//構造城市圖0~4對應A~E
//最短路徑?0?1?3?4?2?F()=9
//?????????0?1?3?2?4,F()=10
int?array[N][N]=
{
{MAX1MAXMAXMAX}
{1MAXMAX2MAX}
{MAXMAXMAX34}
{MAX23MAX2}
{MAXMAX42MAX}
};

void?show_sol()
{
cout<}

//顯示group[N][N+1]的內容
void?show_group(int?**group)
{
int?ij;
int?y=0;

for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{

cout<<*((int*)group+6*i+j)<<“?“;?
}
cout< }
}

//顯示race[N][N+1]的內容
void?show_race(int?**race)
{
int?ij;
int?y=0;

for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{

cout<<*((int*)race+6*i+j)<<“?“;?
}
cout< }
}

//生成單個染色體函數,存于chrom[N]中
void?create_chrom()
{
srand(time(0)%rand()^rand());
for(int?i=0;i {
chrom[i]=rand()%N;?
}
while(chrom[0]==chrom[1])?chrom[1]=rand()%N;
while(chrom[0]==chrom[2]||chrom[1]==chrom[2])?chrom[2]=rand()%N;
while(chrom[0]==chrom[3]||chrom[1]==chrom[3]||chrom[2]==chrom[3])?chrom[3]=rand()%N;
while(chrom[0]==chrom[4]||chrom[1]==chrom[4]||chrom[2]==chrom[4]||chrom[3]==chrom[4])?chrom[4]=rand()%N;
}

//計算適應值函數
int?F(int?*a)
{
int?temp=0;
for(int?i=0;i {
temp=array[a[i]][a[i+1]]+temp;
}
return?temp;
}

//隨機生成N個染色體作為初始群體
//用函數F()計算每個染色體的適應值并存在group[i][5]中
void?create_group()
{?
for(int?i=0;i {
create_chrom();
group[i][5]=F(chrom);
for(int?j=0;j {
group[i][j]=chrom[j];
}
}
}

//計算概率函數
void?prob_group(int?**group)
{
int?i;
int?y=0;
int?temp=0;
float?P=0;
for(i=0;i<5;i++)
{
temp=temp+1000-*((int*)group+6*i+5);
}
cout< for(i=0;i<5;i++)
{
P=float(1000-*((int*)group+6*i+5))/temp;
group_p[i][0]=P;
}
}

//計算概率函數
void?prob_race(int?**race)
{
int?i;
int?y=0;
int?temp=0;
float?P=0;
for(i=0;i<5;i++)
{
temp=temp+1000-*((int*)race+6*i+5);
}
//cout< for(i=0;i<5;i++)
{
P=float(1000-*((int*)race+6*i+5))/temp;
race_p[i][0]=P;
}
}

//選擇函數
void?choose()
{
int?i=0

評論

共有 條評論