aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/geqo/geqo_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/geqo/geqo_main.c')
-rw-r--r--src/backend/optimizer/geqo/geqo_main.c39
1 files changed, 13 insertions, 26 deletions
diff --git a/src/backend/optimizer/geqo/geqo_main.c b/src/backend/optimizer/geqo/geqo_main.c
index 198eb6167b8..fda6d268a8e 100644
--- a/src/backend/optimizer/geqo/geqo_main.c
+++ b/src/backend/optimizer/geqo/geqo_main.c
@@ -1,13 +1,13 @@
/*------------------------------------------------------------------------
*
* geqo_main.c
- * solution of the query optimization problem
+ * solution to the query optimization problem
* by means of a Genetic Algorithm (GA)
*
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo_main.c,v 1.31 2002/06/20 20:29:29 momjian Exp $
+ * $Id: geqo_main.c,v 1.32 2002/07/20 04:59:10 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -29,6 +29,7 @@
#include "optimizer/geqo.h"
#include "optimizer/geqo_misc.h"
+#include "optimizer/geqo_mutation.h"
#include "optimizer/geqo_pool.h"
#include "optimizer/geqo_selection.h"
@@ -46,7 +47,6 @@ int Geqo_random_seed;
static int gimme_pool_size(int nr_rel);
static int gimme_number_generations(int pool_size, int effort);
-
/* define edge recombination crossover [ERX] per default */
#if !defined(ERX) && \
!defined(PMX) && \
@@ -120,30 +120,30 @@ geqo(Query *root, int number_of_rels, List *initial_rels)
daddy = alloc_chromo(pool->string_length);
#if defined (ERX)
- elog(LOG, "geqo_main: using edge recombination crossover [ERX]");
+ elog(DEBUG1, "geqo_main: using edge recombination crossover [ERX]");
/* allocate edge table memory */
edge_table = alloc_edge_table(pool->string_length);
#elif defined(PMX)
- elog(LOG, "geqo_main: using partially matched crossover [PMX]");
+ elog(DEBUG1, "geqo_main: using partially matched crossover [PMX]");
/* allocate chromosome kid memory */
kid = alloc_chromo(pool->string_length);
#elif defined(CX)
- elog(LOG, "geqo_main: using cycle crossover [CX]");
+ elog(DEBUG1, "geqo_main: using cycle crossover [CX]");
/* allocate city table memory */
kid = alloc_chromo(pool->string_length);
city_table = alloc_city_table(pool->string_length);
#elif defined(PX)
- elog(LOG, "geqo_main: using position crossover [PX]");
+ elog(DEBUG1, "geqo_main: using position crossover [PX]");
/* allocate city table memory */
kid = alloc_chromo(pool->string_length);
city_table = alloc_city_table(pool->string_length);
#elif defined(OX1)
- elog(LOG, "geqo_main: using order crossover [OX1]");
+ elog(DEBUG1, "geqo_main: using order crossover [OX1]");
/* allocate city table memory */
kid = alloc_chromo(pool->string_length);
city_table = alloc_city_table(pool->string_length);
#elif defined(OX2)
- elog(LOG, "geqo_main: using order crossover [OX2]");
+ elog(DEBUG1, "geqo_main: using order crossover [OX2]");
/* allocate city table memory */
kid = alloc_chromo(pool->string_length);
city_table = alloc_city_table(pool->string_length);
@@ -155,19 +155,13 @@ geqo(Query *root, int number_of_rels, List *initial_rels)
for (generation = 0; generation < number_generations; generation++)
{
-
- /* SELECTION */
- geqo_selection(momma, daddy, pool, Geqo_selection_bias); /* using linear bias
- * function */
-
-
+ /* SELECTION: using linear bias function */
+ geqo_selection(momma, daddy, pool, Geqo_selection_bias);
#if defined (ERX)
/* EDGE RECOMBINATION CROSSOVER */
difference = gimme_edge_table(momma->string, daddy->string, pool->string_length, edge_table);
- /* let the kid grow in momma's womb (storage) for nine months ;-) */
- /* sleep(23328000) -- har har har */
kid = momma;
/* are there any edge failures ? */
@@ -209,7 +203,7 @@ geqo(Query *root, int number_of_rels, List *initial_rels)
print_gen(stdout, pool, generation);
#endif
- } /* end of iterative optimization */
+ }
#if defined(ERX) && defined(GEQO_DEBUG)
@@ -289,14 +283,7 @@ gimme_pool_size(int nr_rel)
double size;
if (Geqo_pool_size != 0)
- {
- if (Geqo_pool_size < MIN_GEQO_POOL_SIZE)
- return MIN_GEQO_POOL_SIZE;
- else if (Geqo_pool_size > MAX_GEQO_POOL_SIZE)
- return MAX_GEQO_POOL_SIZE;
- else
- return Geqo_pool_size;
- }
+ return Geqo_pool_size;
size = pow(2.0, nr_rel + 1.0);