PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
geqo_mutation.c
Go to the documentation of this file.
1/*------------------------------------------------------------------------
2*
3* geqo_mutation.c
4*
5* TSP mutation routines
6*
7* src/backend/optimizer/geqo/geqo_mutation.c
8*
9*-------------------------------------------------------------------------
10*/
11
12/* contributed by:
13 =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
14 * Martin Utesch * Institute of Automatic Control *
15 = = University of Mining and Technology =
16 * utesch@aut.tu-freiberg.de * Freiberg, Germany *
17 =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
18 */
19
20/* this is adopted from Genitor : */
21/*************************************************************/
22/* */
23/* Copyright (c) 1990 */
24/* Darrell L. Whitley */
25/* Computer Science Department */
26/* Colorado State University */
27/* */
28/* Permission is hereby granted to copy all or any part of */
29/* this program for free distribution. The author's name */
30/* and this copyright notice must be included in any copy. */
31/* */
32/*************************************************************/
33
34#include "postgres.h"
35#include "optimizer/geqo.h"
36
37#if defined(CX) /* currently used only in CX mode */
38
41
42void
43geqo_mutation(PlannerInfo *root, Gene *tour, int num_gene)
44{
45 int swap1;
46 int swap2;
47 int num_swaps = geqo_randint(root, num_gene / 3, 0);
48 Gene temp;
49
50
51 while (num_swaps > 0)
52 {
53 swap1 = geqo_randint(root, num_gene - 1, 0);
54 swap2 = geqo_randint(root, num_gene - 1, 0);
55
56 while (swap1 == swap2)
57 swap2 = geqo_randint(root, num_gene - 1, 0);
58
59 temp = tour[swap1];
60 tour[swap1] = tour[swap2];
61 tour[swap2] = temp;
62
63
64 num_swaps -= 1;
65 }
66}
67
68#endif /* defined(CX) */
int Gene
Definition: geqo_gene.h:30
void geqo_mutation(PlannerInfo *root, Gene *tour, int num_gene)
int geqo_randint(PlannerInfo *root, int upper, int lower)
Definition: geqo_random.c:36
tree ctl root
Definition: radixtree.h:1857