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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? genera~1.c

?? 遺傳算法工具
?? C
字號(hào):
/*
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);
  }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费高清| 成人av午夜电影| 中文字幕一区在线观看视频| 制服丝袜中文字幕一区| 99视频精品免费视频| 九色porny丨国产精品| 亚洲一区二区欧美激情| 国产精品久久三| 精品三级av在线| 欧美日韩精品综合在线| 不卡一区在线观看| 国产麻豆欧美日韩一区| 日韩一区欧美二区| 亚洲影视在线观看| 国产精品国产a| 久久精品亚洲精品国产欧美kt∨ | 亚洲欧美国产高清| 国产校园另类小说区| 精品理论电影在线观看| 欧美精品久久一区二区三区| 在线观看亚洲精品视频| 成人av电影在线| 成人亚洲一区二区一| 国产精品综合二区| 精品一区二区三区久久| 久久精品国产网站| 蜜臀av性久久久久av蜜臀妖精| 亚洲一区在线电影| 亚洲一区二区三区中文字幕在线| 国产精品国产自产拍高清av | 欧美综合亚洲图片综合区| 福利一区二区在线观看| 国产盗摄女厕一区二区三区| 黑人巨大精品欧美黑白配亚洲| 日本人妖一区二区| 久久精品国产网站| 国产一区欧美一区| 国产成人高清在线| 国产91精品免费| 成人免费视频一区| 99久久精品国产毛片| 色偷偷成人一区二区三区91| 91成人在线观看喷潮| 欧美日韩免费观看一区三区| 欧美精品aⅴ在线视频| 欧美一三区三区四区免费在线看| 正在播放一区二区| 欧美精品一区二区三区在线播放| 精品久久人人做人人爽| 国产亚洲精品中文字幕| 国产欧美一区二区三区在线看蜜臀 | 亚洲bt欧美bt精品| 日韩av成人高清| 久久se这里有精品| 成人精品一区二区三区中文字幕 | 色综合久久天天| 99精品国产91久久久久久| 一本色道久久综合狠狠躁的推荐| 欧美三级视频在线观看| 欧美r级在线观看| 日本一二三四高清不卡| 亚洲天堂2016| 日韩vs国产vs欧美| 国产成人一级电影| 色欧美88888久久久久久影院| 欧美日韩精品一区视频| 久久久久久久久久看片| 国精品**一区二区三区在线蜜桃| 国产传媒欧美日韩成人| 欧美性受xxxx黑人xyx| 日韩午夜激情av| 日本一区二区不卡视频| 亚洲va在线va天堂| 国产精品一区二区免费不卡 | 中文在线一区二区| 亚洲一区二区三区小说| 久久99最新地址| 色婷婷亚洲一区二区三区| 欧美电影免费观看高清完整版在线 | 国产成人在线观看| 欧美午夜电影网| 精品少妇一区二区三区日产乱码 | 中文字幕在线一区| 三级一区在线视频先锋 | 午夜国产精品影院在线观看| 国产在线播放一区三区四| 日本韩国视频一区二区| 亚洲精品一区二区三区在线观看| 中文字幕综合网| 麻豆精品一区二区av白丝在线| 91视频一区二区| 精品日韩欧美一区二区| 亚洲国产精品精华液网站| 国产sm精品调教视频网站| 欧美精品一二三| 亚洲欧美中日韩| 国内精品久久久久影院一蜜桃| 一本色道久久综合精品竹菊| 久久免费看少妇高潮| 日本欧美大码aⅴ在线播放| 91年精品国产| 欧美国产日本视频| 日韩av一区二区三区四区| 91高清在线观看| 国产欧美日韩亚州综合| 久久99国产精品久久| 在线视频中文字幕一区二区| 国产色综合一区| 国产一区二区三区久久久 | 国产乱码精品一区二区三| 91精品国产色综合久久ai换脸| 亚洲伦理在线免费看| 福利一区福利二区| 久久网站最新地址| 久久不见久久见免费视频7| 91麻豆精品国产综合久久久久久| 亚洲精品中文在线观看| 99久久综合狠狠综合久久| 精品女同一区二区| 蜜桃久久av一区| 日韩一级片在线观看| 日本亚洲一区二区| 欧美日韩一级片网站| 亚洲一区欧美一区| 欧美在线观看一二区| 亚洲精品大片www| 91老师国产黑色丝袜在线| 亚洲欧洲99久久| 99久久综合狠狠综合久久| 中日韩av电影| 国产69精品一区二区亚洲孕妇| 精品日韩欧美在线| 国产一区二区视频在线| 精品国产乱码久久久久久久| 日本vs亚洲vs韩国一区三区二区 | 日韩三级免费观看| 全部av―极品视觉盛宴亚洲| 56国语精品自产拍在线观看| 日日摸夜夜添夜夜添精品视频| 欧美日韩中文字幕一区| 手机精品视频在线观看| 日韩午夜在线观看视频| 精品亚洲欧美一区| 久久免费国产精品| 国产91富婆露脸刺激对白| 国产精品久久久99| 色婷婷综合中文久久一本| 午夜伦欧美伦电影理论片| 日韩手机在线导航| 国产一区二区女| 国产精品视频一区二区三区不卡| 99国产精品久久久久久久久久久| 亚洲精品高清视频在线观看| 欧美日韩一区高清| 久久99精品久久久久久国产越南| 久久久精品黄色| 91麻豆国产自产在线观看| 日韩精品电影一区亚洲| 久久婷婷综合激情| 色婷婷精品久久二区二区蜜臂av| 亚洲综合激情小说| 欧美成人在线直播| 成人免费视频一区二区| 亚洲成av人片一区二区梦乃| 亚洲精品在线免费播放| 99久久精品国产观看| 偷拍一区二区三区| 欧美极品xxx| 欧美日韩中文字幕精品| 国产一区二区三区日韩| 亚洲男人天堂av| 日韩欧美专区在线| 91麻豆精品一区二区三区| 男男gaygay亚洲| 亚洲三级在线播放| 欧美videossexotv100| a级精品国产片在线观看| 天天综合天天综合色| 国产女主播一区| 欧美日韩高清不卡| 成人国产视频在线观看| 奇米亚洲午夜久久精品| 自拍偷拍欧美激情| 精品久久久久久久人人人人传媒| 99久久精品99国产精品| 久久国产成人午夜av影院| 亚洲人成精品久久久久久| 日韩免费观看高清完整版| 一本大道久久a久久精品综合| 裸体在线国模精品偷拍| 亚洲欧美福利一区二区| 精品久久国产老人久久综合| 欧美日韩一区在线观看| hitomi一区二区三区精品| 精品在线观看免费| 香蕉乱码成人久久天堂爱免费| 国产精品视频在线看| 精品88久久久久88久久久| 91精品国产综合久久精品麻豆| 日本道在线观看一区二区|