geqo_recombination.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * geqo_recombination.h
  4.  *   prototypes for recombination in the genetic query optimizer
  5.  *
  6.  * Copyright (c) 1994, Regents of the University of California
  7.  *
  8.  * $Id: geqo_recombination.h,v 1.7 1999/02/13 23:21:48 momjian Exp $
  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. /* -- parts of this are adapted from D. Whitley's Genitor algorithm -- */
  20. #ifndef GEQO_RECOMBINATION_H
  21. #define GEQO_RECOMBINATION_H
  22. #include "optimizer/geqo_gene.h"
  23. extern void init_tour(Gene *tour, int num_gene);
  24. /* edge recombination crossover [ERX] */
  25. typedef struct Edge
  26. {
  27. Gene edge_list[4]; /* list of edges */
  28. int total_edges;
  29. int unused_edges;
  30. } Edge;
  31. extern Edge *alloc_edge_table(int num_gene);
  32. extern void free_edge_table(Edge *edge_table);
  33. extern float gimme_edge_table(Gene *tour1, Gene *tour2, int num_gene, Edge *edge_table);
  34. extern int gimme_tour(Edge *edge_table, Gene *new_gene, int num_gene);
  35. /* partially matched crossover [PMX] */
  36. #define DAD 1 /* indicator for gene from dad */
  37. #define MOM 0 /* indicator for gene from mom */
  38. extern void pmx(Gene *tour1, Gene *tour2, Gene *offspring, int num_gene);
  39. typedef struct City
  40. {
  41. int tour2_position;
  42. int tour1_position;
  43. int used;
  44. int select_list;
  45. } City;
  46. extern City *alloc_city_table(int num_gene);
  47. extern void free_city_table(City *city_table);
  48. /* cycle crossover [CX] */
  49. extern int cx(Gene *tour1, Gene *tour2, Gene *offspring, int num_gene, City *city_table);
  50. /* position crossover [PX] */
  51. extern void px(Gene *tour1, Gene *tour2, Gene *offspring, int num_gene, City *city_table);
  52. /* order crossover [OX1] according to Davis */
  53. extern void ox1(Gene *mom, Gene *dad, Gene *offspring, int num_gene, City *city_table);
  54. /* order crossover [OX2] according to Syswerda */
  55. extern void ox2(Gene *mom, Gene *dad, Gene *offspring, int num_gene, City *city_table);
  56. #endif  /* GEQO_RECOMBINATION_H */