Делаем в несколько этапов:
1. сортировка
2. перемешивание
3. скрещивание
4. мутирование
5. ограничение
// Код на С
void trans_pop(int pop_cnt,
int *pop_ind,
double *pop_kach,
int gen_len,
double *pop,
double mu,
double flash,
int *best_num)
{
int k, p , p2, p3 ;
double *b1,*b2 ;
sort_pop(pop_cnt,pop_ind,pop_kach) ;
*best_num = pop_ind[pop_cnt-1] ;
p = pop_cnt/2 ;
mix_ind(pop_ind,p) ;
mix_ind(pop_ind+p,p) ;
p = pop_cnt/4 ;
p2 = p * 2 ;
p3 = p * 3 ;
for( k=0 ; k<p ; k++ )
{
#define IND(k) (pop_ind[k])
#define GEN(k) (pop+IND(k)*gen_len)
b1 = GEN(k) ;
b2 = GEN(k+p) ;
xver(b1,b2,GEN(k+p2),GEN(k+p3),gen_len) ;
#undef IND
#undef GEN
mutate(b1,gen_len,mu,flash) ;
mutate(b2,gen_len,mu,flash) ;
ogr(b1,gen_len) ;
ogr(b2,gen_len) ;
}
}
Комментариев нет:
Отправить комментарий