#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<math.h>
#include<time.h>
#include<iostream>
#define D 10//基因维数
#define popsize 100//种群大小
#define genetic 2000 //繁衍代数
#define URAND (rand()/(RAND_MAX+1.0))
#define epx 3.1415926
#define U_S 20
int rand_int(int low,int hight);
double rand_real(double low,double high);
int cmp1(const void *a,const void *b);
int cmp2(const void *a,const void *b);
int cmp3(const void *a,const void *b);
int temp1[popsize];
int mark[popsize];
using namespace std;
class indivial
{
public:
double x[D];
int domi[2*popsize],np,is_domied;//支配集合
void inition();
int rank;
double crowding;
double fintness[2];
void fitness_count();
};
indivial F[2*popsize][2*popsize];
class population
{
public:
population();
indivial P[popsize];//当代
indivial Q[popsize];//产生的子代
indivial R[2*popsize];
int R_num;
void set_p_q();
int P_num;
int Q_num;
void nodominata_sort();//非支配排序
int len[2*popsize];
int len_f;
void crowding_distance(int i);
void sorts(int i);
void make_new_pop();
void fast_sort_nondominate();
void cal();
int m_choice(int a,int b);
};
bool is_dominated(const indivial &a,const indivial &b);
int main()
{