亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? genera~1.c

?? 遺傳算法工具
?? C
字號:
/*
SGPC: Simple Genetic Programming in C
(c) 1993 by Walter Alden Tackett and Aviram Carmi
 
 This code and documentation is copyrighted and is not in the public domain.
 All rights reserved. 
 
 - This notice may not be removed or altered.
 
 - You may not try to make money by distributing the package or by using the
   process that the code creates.
 
 - You may not distribute modified versions without clearly documenting your
   changes and notifying the principal author.
 
 - The origin of this software must not be misrepresented, either by
   explicit claim or by omission.  Since few users ever read sources,
   credits must appear in the documentation.
 
 - Altered versions must be plainly marked as such, and must not be
   misrepresented as being the original software.  Since few users ever read
   sources, credits must appear in the documentation.
 
 - The authors are not responsible for the consequences of use of this 
   software, no matter how awful, even if they arise from flaws in it.
 
If you make changes to the code, or have suggestions for changes,
let us know!  (gpc@ipld01.hac.com)
*/

#ifndef lint
static char generations_c_rcsid[]="$Id: generations.c,v 2.13 1993/04/22 07:39:12 gpc-avc Exp gpc-avc $";
#endif

/*
 *
 * $Log: generations.c,v $
 * Revision 2.13  1993/04/22  07:39:12  gpc-avc
 * Removed old log messages
 *
 * Revision 2.12  1993/04/15  09:10:10  gpc-avc
 * Added bsd_qsort()
 *
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <errno.h>
#include "gpc.h"

#ifdef ANSI_FUNC

VOID generations(
  int		numpops,
  int		numgens,
  int		start_gen,
  pop_struct	*pop,
  int		demes,
  pop_struct	***grid,
  int		demerows,
  int		demecols
  )
#else

VOID generations(numpops,numgens,start_gen,pop,demes,grid,demerows,demecols)
  int		numpops;
  int		numgens;
  int		start_gen;
  pop_struct	*pop;
  int		demes;
  pop_struct	***grid;
  int		demerows;
  int		demecols;
#endif
{
  int	g, p, i, j;
  float valperf;

  for (g=start_gen; g<numgens; g++) {

    if (g) {
      for (p = 0; p<numpops; p++) {
	if (demes) {
	  for (i=0;i<demerows;i++) {
	    for (j=0;j<demecols;j++) {
	      if (pop[p].steady_state) {
		/* not strictly necessary, really, but removes what
		   i think would otherwise be a trend for the upper
		   left hand of the grid to have much lower fitness
		   than the lower right */
		breed_new_population(grid[random_int(demerows)]
				         [random_int(demecols)],
				     p,demes,demerows,demecols,
				     pop[p].steady_state);
	      } else  {
		breed_new_population(grid[i][j],p,demes,demerows,demecols,
				   pop[p].steady_state);
	      }
	    }
	  }
	} else {

	  breed_new_population(pop,p,0,0,0,pop[p].steady_state);
	}
	if (!(pop[p].steady_state)) {
	  free_population(pop,p);
	  load_new_population(pop,p);
	}
      }
    } else {
      /* generation 0 is random */
      initialize_populations(numpops,pop);
      for (p = 0; p<numpops; p++) {
	if (pop[p].steady_state) {
	  evaluate_fitness_of_populations(numpops,numgens,pop,p);
	  if (pop[p].parsimony_factor > 0.0) add_parsimony_to_fitness(pop,p);
	}
      }
    }

    /* NOTE that we breed ALL populations before we evaluate their fitness
       (except in the case of steady-state).  This is done to support
       co-evolution where there are multiple interacting populations
       who are co-evaluated at each generation */

    for (p = 0; p<numpops; p++) {

      if (!(pop[p].steady_state)) {
	zero_fitness_of_populations(numpops,pop,p);
	evaluate_fitness_of_populations(numpops,numgens,pop,p);
	if (pop[p].parsimony_factor > 0.0) add_parsimony_to_fitness(pop,p);
      }

      normalize_fitness_of_population(pop,p);

      sort_population_by_fitness(pop,p);

      pop[p].best_of_gen_fitness =
	pop[p].standardized_fitness[pop[p].fitness_sort_index[0]];

      pop[p].best_of_generation =
	copy_tree(pop[p].population[pop[p].fitness_sort_index[0]]);

#if REP_ON_GEN == 1
      report_on_generation(g,pop,p);
#endif

#if ((DEBUG == 1)||(DBSS == 1))
      dump_population(pop,p);
#endif      
#if ((DBDEMES == 1)||(DBSS == 1))
      if (demes) { /* this should alway be true, but still.... */
	for (i=0;i<demerows;i++) {
	  for (j=0;j<demecols;j++) {
	    printf("\nDUMPING DEME row=%d col=%d\n",i,j);
	    dump_population(grid[i][j],p);
	  }
	}
      }
#endif

      valperf =
	validate_fitness_of_tree(numpops, numgens, pop, p,
				 pop[p].population[pop[p].fitness_sort_index[0]]);

#if REP_ON_GEN == 1
      printf("\nValidation Fitness= %f\n", valperf);
#endif

      if (!g) {
	pop[p].best_of_run_fitness = valperf;
	pop[p].best_of_run = copy_tree(pop[p].population[pop[p].fitness_sort_index[0]]);
	pop[p].best_of_run_gen = 0;
      }
      else if (valperf < pop[p].best_of_run_fitness) {
	pop[p].best_of_run_fitness = valperf;
	free((char *)pop[p].best_of_run);
	pop[p].best_of_run = copy_tree(pop[p].best_of_generation);
	pop[p].best_of_run_gen = g;
      }
      
      free_tree(pop[p].best_of_generation);

    }

    if (CHECKPOINT_FREQUENCY) {
      if (g && !(g % CHECKPOINT_FREQUENCY)) {
	checkpoint(numpops, numgens, demes, demerows, demecols, pop, g);
      }
    }

    if (terminate_early(numpops,numgens,pop)) break;
  }

  /* checkpoint the last generation, if it was not just saved */
  if (CHECKPOINT_FREQUENCY) {
    if ((numgens-1) % CHECKPOINT_FREQUENCY) {
      checkpoint(numpops,numgens,demes,demerows,demecols,pop,numgens-1);
    }
  }
}


#ifdef ANSI_FUNC
VOID dump_population(
  pop_struct 	*pop,
  int 		p
  )
#else
VOID dump_population(pop,p)
  pop_struct	*pop;
  int		p;
#endif
{
  int	i, index;

  for (i=0; i<pop[p].population_size; i++) {
    index = (DEMES? i : pop[p].fitness_sort_index[i]);
    printf("pop= %d standardized = %f, adjusted = %f, norm = %f\n",
	   p,
	   pop[p].standardized_fitness[index],
	   pop[p].adjusted_fitness[index],
	   pop[p].normalized_fitness[index]);
    write_tree(pop,pop[p].population[index],pop[p].ckpt_format,stdout);
  }
}

#ifdef ANSI_FUNC

VOID zero_fitness_of_populations(
  int		numpops,
  pop_struct	*pop,
  int		p				 
  )
#else

VOID zero_fitness_of_populations(numpops,pop,p)
  int		numpops;
  pop_struct	*pop;
  int		p;
#endif
{
  int	i;

  for (i=0; i<pop[p].population_size; i++) {
    pop[p].standardized_fitness[i] 	= 0.0;
    pop[p].adjusted_fitness[i] 		= 0.0;
    pop[p].normalized_fitness[i] 	= 0.0;
  }
}

int	global_p;

#ifdef ANSI_FUNC
static int fitness_compare(
  int *i,
  int *j
)
#else
static int fitness_compare(i,j)
  int	*i;
  int	*j;
#endif
{
  pop_struct *pop = POP;

  if (pop[global_p].normalized_fitness[*j] > pop[global_p].normalized_fitness[*i]) {
    return 1;
  } else if (pop[global_p].normalized_fitness[*j] < pop[global_p].normalized_fitness[*i]) {
    return -1;
  } else return 0;
}
    
#ifdef ANSI_FUNC
VOID sort_population_by_fitness(
  pop_struct	*pop,
  int 	p
  )
#else
VOID sort_population_by_fitness(pop,p)
  pop_struct	*pop;
  int		p;
#endif
{
  int	i;

  global_p = p; /* kludge for fitness_compare */
  for (i=0; i<pop[p].population_size; i++) {
    pop[p].fitness_sort_index[i] = i;
  }

#ifdef STD_QSORT
  qsort(pop[p].fitness_sort_index, pop[p].population_size, sizeof(int),
	fitness_compare);
#else
  bsd_qsort(pop[p].fitness_sort_index, pop[p].population_size, sizeof(int),
	fitness_compare);
#endif
}

#ifdef ANSI_FUNC
VOID add_parsimony_to_fitness(
  pop_struct 	*pop,
  int 		p
  )
#else
VOID add_parsimony_to_fitness(pop,p)
  pop_struct 	*pop;
  int		p;
#endif
{
  int	i;

  for (i=0; i<pop[p].population_size; i++) {
    pop[p].standardized_fitness[i] += 
      ((float) count_crossover_pts(pop[p].population[i]))*pop[p].parsimony_factor;
  }
}

#ifdef ANSI_FUNC
VOID normalize_fitness_of_population(
  pop_struct	*pop,
  int 		p
)
#else
VOID normalize_fitness_of_population(pop,p)
  pop_struct	*pop;
  int	       	p;
#endif
{
  float	sum = 0.0;
  int	i;

  for (i=0; i<pop[p].population_size; i++) {
    sum += (pop[p].adjusted_fitness[i] = 1.0/(1.0 + pop[p].standardized_fitness[i]));
  }

  for (i=0; i<pop[p].population_size; i++) {
    pop[p].normalized_fitness[i] = (pop[p].adjusted_fitness[i]/sum);
  }
}

#ifdef ANSI_FUNC

VOID report_on_generation(
  int 		g,
  pop_struct	*pop,
  int 		p
  )
#else

VOID report_on_generation(g,pop,p)
  int		g;
  pop_struct	*pop;
  int		p;
#endif
{
  int	i;
  float	sum = 0.0;

  sum = 0.0;

  for (i=0; i<pop[p].population_size; i++) {
    sum += pop[p].standardized_fitness[i];
  }
  
  printf("\nGeneration %d Population %d   Avg Std Fitness: %f\n",
	 g, p, sum/(float)pop[p].population_size);
  printf("Best-of-gen fitness: %f\nBest-of-gen tree:\n",
	 pop[p].best_of_gen_fitness);
  write_tree(pop,pop[p].best_of_generation,pop[p].format,stdout);
}

#ifdef ANSI_FUNC
VOID report_on_run(
  int		numpops,
  pop_struct	*pop
  )
#else
VOID report_on_run(numpops,pop)
  int		numpops;
  pop_struct	*pop;
#endif
{
  int	p;

  for (p=0; p<numpops; p++) {
    printf("Best tree for pop#%d found on gen %d, VALIDATED fitness = %f:\n",
	   p, pop[p].best_of_run_gen, pop[p].best_of_run_fitness);
    write_tree(pop, pop[p].best_of_run, pop[p].format, stdout);
  }
}
on_run(
  int		numpops,
  pop_struct	*pop
  )
#else
VOID report_on_run(numpops,pop)
  int		numpops;
  pop_struct	*pop;
#endif
{
  int	p;

  for (p=0; p<numpops; p++) {
    printf("Best tree for pop#%d found on gen %d, VALIDATED fitness = %f:\n",
	   p, pop[p].best_of_run_gen, pop[p].best_of_run_fitness);
    write_tree(pop, pop[p].best_of_run, pop[p].format, stdout);
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线免费播放| 欧美精品一二三| 欧美日韩国产另类不卡| 久久久电影一区二区三区| 亚洲欧美电影一区二区| 国精品**一区二区三区在线蜜桃| 91片在线免费观看| 久久久久久久久蜜桃| 日韩国产欧美三级| 色婷婷久久久亚洲一区二区三区| 久久一留热品黄| 肉色丝袜一区二区| 在线亚洲一区二区| 亚洲国产电影在线观看| 久久爱www久久做| 欧美精品少妇一区二区三区| 日韩毛片在线免费观看| 国产成人亚洲综合色影视| 欧美一区二区三区在线电影| 亚洲女同一区二区| 丁香婷婷深情五月亚洲| 久久这里只有精品6| 美日韩一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 欧美激情综合网| 国产宾馆实践打屁股91| 精品福利在线导航| 久久精品国产亚洲高清剧情介绍| 欧美色区777第一页| 亚洲在线免费播放| 欧美亚洲综合网| 一区二区久久久久久| 一本到一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产精品白丝jk黑袜喷水| 精品国产一区二区三区四区四| 日韩av高清在线观看| 91麻豆精品国产综合久久久久久| 一级日本不卡的影视| 欧美性一级生活| 三级在线观看一区二区| 91麻豆精品国产91久久久久久久久| 亚洲成人免费看| 欧美一区二区三区视频免费| 日本欧美在线看| 久久免费国产精品| 成人网在线免费视频| 亚洲日本一区二区| 欧美手机在线视频| 麻豆一区二区99久久久久| 久久久亚洲精品石原莉奈| 高清在线不卡av| 亚洲天堂精品视频| 欧美日韩一二区| 美女一区二区在线观看| 国产欧美日本一区视频| 91免费版pro下载短视频| 亚洲一区二区三区在线| 日韩免费视频一区二区| 国产成人av电影在线| 中文字幕综合网| 日韩一区二区三区在线| 国内成+人亚洲+欧美+综合在线| 中文字幕欧美激情一区| 在线观看视频91| 老色鬼精品视频在线观看播放| 国产女人18毛片水真多成人如厕| 色美美综合视频| 老司机精品视频线观看86| 日韩码欧中文字| 日韩午夜中文字幕| 99国产精品国产精品毛片| 日韩中文欧美在线| 中文字幕免费不卡在线| 欧美日韩一区精品| 成人av在线资源网站| 一区二区三区视频在线看| 欧美一级搡bbbb搡bbbb| 99精品久久只有精品| 青青草国产精品97视觉盛宴 | 性做久久久久久免费观看欧美| 日韩女优毛片在线| 欧美中文字幕不卡| 国产精品小仙女| 奇米综合一区二区三区精品视频| √…a在线天堂一区| 日韩欧美在线不卡| 色婷婷av一区二区三区软件 | 日韩欧美一级二级三级| 99国产精品久久久久久久久久久| 麻豆91在线看| 五月开心婷婷久久| 亚洲欧美日韩综合aⅴ视频| 久久久久国产精品麻豆| 欧美一级日韩不卡播放免费| 91毛片在线观看| 成人中文字幕合集| 激情五月婷婷综合网| 五月激情综合网| 亚洲制服丝袜av| 亚洲天堂av老司机| 国产精品午夜在线观看| www国产精品av| 67194成人在线观看| 欧洲色大大久久| 成人丝袜高跟foot| 国产麻豆日韩欧美久久| 久久99久久99| 精品中文字幕一区二区小辣椒| 五月天网站亚洲| 亚洲一二三四在线观看| 亚洲男人电影天堂| 亚洲乱码日产精品bd| 综合分类小说区另类春色亚洲小说欧美| 欧美精品一区二区三区一线天视频 | 欧美日韩在线播放| 在线看日本不卡| 欧美性受极品xxxx喷水| 91国模大尺度私拍在线视频| 91福利国产精品| 欧美伊人久久大香线蕉综合69| 日本久久电影网| 欧美日韩色一区| 日韩视频永久免费| 久久人人爽人人爽| 国产精品久久久久婷婷二区次| 欧美激情综合五月色丁香| 国产精品久久久久aaaa| 亚洲美女偷拍久久| 亚洲www啪成人一区二区麻豆| 日韩电影在线观看网站| 国内国产精品久久| av在线一区二区| 在线观看亚洲a| 日韩一区二区三区三四区视频在线观看| 欧美一区二区在线视频| 久久久亚洲精品一区二区三区 | 久久亚洲精精品中文字幕早川悠里| 欧美mv日韩mv亚洲| 国产欧美1区2区3区| 亚洲乱码日产精品bd| 日韩精品视频网| 国产成人精品亚洲777人妖| 9i在线看片成人免费| 欧美精品aⅴ在线视频| 精品国产精品网麻豆系列| 国产精品入口麻豆原神| 亚洲一区二三区| 精品一区二区三区不卡 | 夫妻av一区二区| 色婷婷精品大视频在线蜜桃视频 | 色狠狠桃花综合| 欧美一区二区三区免费视频| 国产日韩精品一区二区三区 | 欧美二区在线观看| 久久你懂得1024| 亚洲成人av资源| 成人永久aaa| 欧美一区二区三区在| 国产精品免费aⅴ片在线观看| 日韩精品高清不卡| eeuss鲁片一区二区三区| 欧美精品v国产精品v日韩精品| 国产欧美日韩视频一区二区| 亚洲成在人线免费| 成人白浆超碰人人人人| 日韩欧美国产不卡| 悠悠色在线精品| 国产91精品精华液一区二区三区| 欧美艳星brazzers| 中文字幕一区在线观看| 美国精品在线观看| 欧美日韩中文字幕一区二区| 国产午夜精品一区二区三区嫩草| 亚洲综合在线视频| 成人激情图片网| 久久久久久一二三区| 麻豆视频观看网址久久| 日本大香伊一区二区三区| 日本一区免费视频| 久久超碰97人人做人人爱| 69堂精品视频| 亚洲成人福利片| 一本色道久久加勒比精品| 欧美激情一区二区三区四区| 九九热在线视频观看这里只有精品| 欧美三级欧美一级| 亚洲精品视频免费看| 不卡的av在线播放| 国产欧美日韩激情| 国产成人亚洲精品狼色在线| 日韩欧美在线观看一区二区三区| 日韩成人一区二区| 3d动漫精品啪啪一区二区竹菊| 一区二区三区不卡在线观看| 91丨九色丨黑人外教| 自拍偷拍欧美激情| 91麻豆swag| 亚洲午夜一区二区| 欧美日韩国产a|