GEGELATI
tpgMutator.h
1
36#ifndef TPG_MUTATOR_H
37#define TPG_MUTATOR_H
38
39#include <thread>
40
41#include "archive.h"
42#include "mutator/mutationParameters.h"
43#include "tpg/tpgGraph.h"
44
45namespace Mutator {
46 namespace TPGMutator {
74 void initRandomTPG(TPG::TPGGraph& graph,
75 const MutationParameters& params, Mutator::RNG& rng);
76
89 void removeRandomEdge(TPG::TPGGraph& graph, const TPG::TPGTeam& team,
90 Mutator::RNG& rng);
91
110 void addRandomEdge(
111 TPG::TPGGraph& graph, const TPG::TPGTeam& team,
112 const std::list<const TPG::TPGEdge*>& preExistingEdges,
113 Mutator::RNG& rng);
114
142 void mutateEdgeDestination(
143 TPG::TPGGraph& graph, const TPG::TPGTeam& team,
144 const TPG::TPGEdge* edge,
145 const std::vector<const TPG::TPGTeam*>& preExistingTeams,
146 const std::vector<const TPG::TPGAction*>& preExistingActions,
147 const Mutator::MutationParameters& params, Mutator::RNG& rng);
148
175 void mutateOutgoingEdge(
176 TPG::TPGGraph& graph, const Archive& archive,
177 const TPG::TPGTeam& team, const TPG::TPGEdge* edge,
178 const std::vector<const TPG::TPGTeam*>& preExistingTeams,
179 const std::vector<const TPG::TPGAction*>& preExistingActions,
180 std::list<std::shared_ptr<Program::Program>>& newPrograms,
181 const Mutator::MutationParameters& params, Mutator::RNG& rng);
182
212 void mutateTPGTeam(
213 TPG::TPGGraph& graph, const Archive& archive,
214 const TPG::TPGTeam& team,
215 const std::vector<const TPG::TPGTeam*>& preExistingTeams,
216 const std::vector<const TPG::TPGAction*>& preExistingActions,
217 const std::list<const TPG::TPGEdge*>& preExistingEdges,
218 std::list<std::shared_ptr<Program::Program>>& newPrograms,
219 const Mutator::MutationParameters& params, Mutator::RNG& rng);
220
231 void mutateProgramBehaviorAgainstArchive(
232 std::shared_ptr<Program::Program>& newProg,
233 const Mutator::MutationParameters& params, const Archive& archive,
234 Mutator::RNG& rng);
235
249 void mutateNewProgramBehaviors(
250 const uint64_t& maxNbThreads,
251 std::list<std::shared_ptr<Program::Program>>& newPrograms,
252 Mutator::RNG& rng, const Mutator::MutationParameters& params,
253 const Archive& archive);
254
283 void populateTPG(
284 TPG::TPGGraph& graph, const Archive& archive,
285 const Mutator::MutationParameters& params, Mutator::RNG& rng,
286 uint64_t maxNbThreads = std::thread::hardware_concurrency());
287 }; // namespace TPGMutator
288}; // namespace Mutator
289
290#endif
Definition: archive.h:80
Definition: rng.h:52
Class representing edges of the Tangled Program Graphs.
Definition: tpgEdge.h:51
Class for storing a Tangled-Program-Graph.
Definition: tpgGraph.h:54
Definition: tpgTeam.h:48
Definition: deterministicRandom.h:44
struct Mutator::MutationParameters MutationParameters
Structure holding all parameters affecting stochastic mutations.
Structure holding all parameters affecting stochastic mutations.
Definition: mutationParameters.h:198