geqo_misc.c

来自「PostgreSQL7.4.6 for Linux」· C语言 代码 · 共 134 行

C
134
字号
/*------------------------------------------------------------------------ * * geqo_misc.c *	   misc. printout and debug stuff * * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/geqo_misc.c,v 1.39 2003/08/04 02:39:59 momjian Exp $ * *------------------------------------------------------------------------- *//* contributed by:   =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=   *  Martin Utesch				 * Institute of Automatic Control	   *   =							 = University of Mining and Technology =   *  utesch@aut.tu-freiberg.de  * Freiberg, Germany				   *   =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= */#include "postgres.h"#include "optimizer/geqo_misc.h"#include "nodes/print.h"#ifdef GEQO_DEBUG/* * avg_pool */static doubleavg_pool(Pool *pool){	int			i;	double		cumulative = 0.0;	if (pool->size <= 0)		elog(ERROR, "pool_size is zero");	/*	 * Since the pool may contain multiple occurrences of DBL_MAX, divide	 * by pool->size before summing, not after, to avoid overflow.	This	 * loses a little in speed and accuracy, but this routine is only used	 * for debug printouts, so we don't care that much.	 */	for (i = 0; i < pool->size; i++)		cumulative += pool->data[i].worth / pool->size;	return cumulative;}/* print_pool */voidprint_pool(FILE *fp, Pool *pool, int start, int stop){	int			i,				j;	/* be extra careful that start and stop are valid inputs */	if (start < 0)		start = 0;	if (stop > pool->size)		stop = pool->size;	if (start + stop > pool->size)	{		start = 0;		stop = pool->size;	}	for (i = start; i < stop; i++)	{		fprintf(fp, "%d)\t", i);		for (j = 0; j < pool->string_length; j++)			fprintf(fp, "%d ", pool->data[i].string[j]);		fprintf(fp, "%g\n", pool->data[i].worth);	}	fflush(fp);}/* print_gen * *	 printout for chromosome: best, worst, mean, average */voidprint_gen(FILE *fp, Pool *pool, int generation){	int			lowest;	/* Get index to lowest ranking gene in poplulation. */	/* Use 2nd to last since last is buffer. */	lowest = pool->size > 1 ? pool->size - 2 : 0;	fprintf(fp,			"%5d | Best: %g  Worst: %g  Mean: %g  Avg: %g\n",			generation,			pool->data[0].worth,			pool->data[lowest].worth,			pool->data[pool->size / 2].worth,			avg_pool(pool));	fflush(fp);}voidprint_edge_table(FILE *fp, Edge *edge_table, int num_gene){	int			i,				j;	fprintf(fp, "\nEDGE TABLE\n");	for (i = 1; i <= num_gene; i++)	{		fprintf(fp, "%d :", i);		for (j = 0; j < edge_table[i].unused_edges; j++)			fprintf(fp, " %d", edge_table[i].edge_list[j]);		fprintf(fp, "\n");	}	fprintf(fp, "\n");	fflush(fp);}#endif   /* GEQO_DEBUG */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?