8 * Callback function types
9 * (pi == population individual)
11 typedef int (*pi_rate_f) (const void *);
12 typedef void *(*pi_copy_f) (const void *);
13 typedef void (*pi_free_f) (void *);
15 typedef int (*pi_serialize_f) (void *, char **, size_t *);
16 typedef void *(*pi_unserialize_f) (char *, size_t);
22 typedef struct population_s population_t;
25 * Constructor and destructor
27 population_t *population_create (pi_rate_f rate,
28 pi_copy_f copy, pi_free_f f);
29 void population_destroy (population_t *p);
32 * Object configuration
34 int population_set_size (population_t *p, size_t population_size);
35 int population_set_serialization (population_t *p,
36 pi_serialize_f serialize, pi_unserialize_f unserialize);
38 #define POPULATION_REPLACEMENT_EXPLOIT 1
39 #define POPULATION_REPLACEMENT_EXPLORE 2
40 int population_set_replacement_method (population_t *p, int method);
42 #define POPULATION_DEFAULT_PORT "46835"
43 int population_add_peer (population_t *p, const char *node, const char *port);
44 int population_start_listen_thread (population_t *p,
45 const char *node, const char *port);
50 /* iterations == 0 => infinite */
51 void *population_get_random (population_t *p);
52 void *population_get_fittest (population_t *p);
54 int population_insert (population_t *p, void *pi);
56 /* vim: set sw=2 sts=2 et : */
57 #endif /* POPULATION_H */