精品文档
精品文档
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "math.h"
#include "time.h"
#define num_C
12
//
个体的个数,前
6
位表示
x1
,后
6
位表示
x2
#define N
100
//
群体规模为
100
#define pc
0.9
//
交叉概率为
0.9
#define pm
0.1
//
变异概率为
10%
#define ps
0.6
//
进行选择时保留的比例
#define genmax 2000
//
最大代数
200
int RandomInteger(int low,int high);
void Initial_gen(struct unit group[N]);
void Sort(struct unit group[N]);
void Copy_unit(struct unit *p1,struct unit *p2);
void Cross(struct unit *p3,struct unit *p4);
void Varation(struct unit group[N],int i);
void Evolution(struct unit group[N]);
float Calculate_cost(struct unit *p);
void Print_optimum(struct unit group[N],int k);
/*
定义个体信息
*/
typedef struct unit
{
int path[num_C]; //
每个个体的信息
double cost;
//
个体代价值
};
struct unit group[N]; //
种群变量
group
int num_gen=0; //
记录当前达到第几代
int main()
{
int i,j;
srand((int)time(NULL)); //
初始化随机数发生器
Initial_gen(group);
//
初始化种群
Evolution(group);
//
进化:选择、交叉、变异
getch();
return 0;
}
/*
初始化种群
*/
void Initial_gen(struct unit group[N])
{
int i,j;
struct unit *p;
for(i=0;i<=N-1;i++) //
初始化种群里的
100
个个体
{