Antkeeper  0.0.1
cladogenesis.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2023 Christopher J. Howard
3  *
4  * This file is part of Antkeeper source code.
5  *
6  * Antkeeper source code is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * Antkeeper source code is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
21 
22 namespace ant {
23 
24 genome* cladogenesis(const gene_pool& pool, std::random_device& rng)
25 {
26  // Allocate genome
28 
29  // Randomly sample genes
30  genome->antennae = pool.antennae.sample(rng);
31  genome->body_size = pool.body_size.sample(rng);
32  genome->cocoon = pool.cocoon.sample(rng);
33  genome->diet = pool.diet.sample(rng);
34  genome->egg = pool.egg.sample(rng);
35  genome->eyes = pool.eyes.sample(rng);
36  genome->foraging_time = pool.foraging_time.sample(rng);
37  genome->founding_mode = pool.founding_mode.sample(rng);
38  genome->gaster = pool.gaster.sample(rng);
39  genome->head = pool.head.sample(rng);
40  genome->larva = pool.larva.sample(rng);
41  genome->legs = pool.legs.sample(rng);
42  genome->mandibles = pool.mandibles.sample(rng);
43  genome->mesosoma = pool.mesosoma.sample(rng);
44  genome->nest_site = pool.nest_site.sample(rng);
45  genome->ocelli = pool.ocelli.sample(rng);
46  genome->pigmentation = pool.pigmentation.sample(rng);
47  genome->pilosity = pool.pilosity.sample(rng);
48  genome->sculpturing = pool.sculpturing.sample(rng);
49  genome->sting = pool.sting.sample(rng);
50  genome->waist = pool.waist.sample(rng);
51  genome->wings = pool.wings.sample(rng);
52 
53  return genome;
54 }
55 
56 } // namespace ant
Definition: caste.hpp:25
genome * cladogenesis(const gene_pool &pool, std::random_device &rng)
Generates a genome from a gene pool.
Pool of genes from which ant genomes can be generated.
Definition: gene-pool.hpp:53
gene_frequency_table< gene::egg > egg
Definition: gene-pool.hpp:61
gene_frequency_table< gene::wings > wings
Definition: gene-pool.hpp:78
gene_frequency_table< gene::mesosoma > mesosoma
Definition: gene-pool.hpp:70
gene_frequency_table< gene::antennae > antennae
Definition: gene-pool.hpp:57
gene_frequency_table< gene::larva > larva
Definition: gene-pool.hpp:67
gene_frequency_table< gene::nest_site > nest_site
Definition: gene-pool.hpp:71
gene_frequency_table< gene::eyes > eyes
Definition: gene-pool.hpp:62
gene_frequency_table< gene::sculpturing > sculpturing
Definition: gene-pool.hpp:75
gene_frequency_table< gene::waist > waist
Definition: gene-pool.hpp:77
gene_frequency_table< gene::gaster > gaster
Definition: gene-pool.hpp:65
gene_frequency_table< gene::pilosity > pilosity
Definition: gene-pool.hpp:74
gene_frequency_table< gene::legs > legs
Definition: gene-pool.hpp:68
gene_frequency_table< gene::mandibles > mandibles
Definition: gene-pool.hpp:69
gene_frequency_table< gene::diet > diet
Definition: gene-pool.hpp:60
gene_frequency_table< gene::head > head
Definition: gene-pool.hpp:66
gene_frequency_table< gene::sting > sting
Definition: gene-pool.hpp:76
gene_frequency_table< gene::founding_mode > founding_mode
Definition: gene-pool.hpp:64
gene_frequency_table< gene::cocoon > cocoon
Definition: gene-pool.hpp:59
gene_frequency_table< gene::pigmentation > pigmentation
Definition: gene-pool.hpp:73
gene_frequency_table< gene::foraging_time > foraging_time
Definition: gene-pool.hpp:63
gene_frequency_table< gene::body_size > body_size
Definition: gene-pool.hpp:58
gene_frequency_table< gene::ocelli > ocelli
Definition: gene-pool.hpp:72
Complete set of ant genes.
Definition: genome.hpp:52
const gene::nest_site * nest_site
Definition: genome.hpp:70
const gene::egg * egg
Definition: genome.hpp:60
const gene::founding_mode * founding_mode
Definition: genome.hpp:63
const gene::sculpturing * sculpturing
Definition: genome.hpp:74
const gene::gaster * gaster
Definition: genome.hpp:64
const gene::legs * legs
Definition: genome.hpp:67
const gene::larva * larva
Definition: genome.hpp:66
const gene::sting * sting
Definition: genome.hpp:75
const gene::head * head
Definition: genome.hpp:65
const gene::body_size * body_size
Definition: genome.hpp:57
const gene::ocelli * ocelli
Definition: genome.hpp:71
const gene::mesosoma * mesosoma
Definition: genome.hpp:69
const gene::cocoon * cocoon
Definition: genome.hpp:58
const gene::diet * diet
Definition: genome.hpp:59
const gene::eyes * eyes
Definition: genome.hpp:61
const gene::waist * waist
Definition: genome.hpp:76
const gene::pigmentation * pigmentation
Definition: genome.hpp:72
const gene::mandibles * mandibles
Definition: genome.hpp:68
const gene::pilosity * pilosity
Definition: genome.hpp:73
const gene::antennae * antennae
Definition: genome.hpp:56
const gene::wings * wings
Definition: genome.hpp:77
const gene::foraging_time * foraging_time
Definition: genome.hpp:62