diff options
author | David Robillard <d@drobilla.net> | 2017-12-16 12:27:22 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2017-12-16 13:58:31 +0100 |
commit | 19fcbf7b74c68529fe24f40f1c0fa923a3d22bce (patch) | |
tree | f3e821517e5822fec536858c6593a4ac8ee480bd /src/engine/machina | |
parent | 74da09be5f48e21db158e7969af54f3f440b74f1 (diff) | |
download | machina-19fcbf7b74c68529fe24f40f1c0fa923a3d22bce.tar.gz machina-19fcbf7b74c68529fe24f40f1c0fa923a3d22bce.tar.bz2 machina-19fcbf7b74c68529fe24f40f1c0fa923a3d22bce.zip |
Use std::thread in evolution code
Diffstat (limited to 'src/engine/machina')
-rw-r--r-- | src/engine/machina/Evolver.hpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/engine/machina/Evolver.hpp b/src/engine/machina/Evolver.hpp index e14fc4a..400c177 100644 --- a/src/engine/machina/Evolver.hpp +++ b/src/engine/machina/Evolver.hpp @@ -1,6 +1,6 @@ /* This file is part of Machina. - Copyright 2007-2013 David Robillard <http://drobilla.net> + Copyright 2007-2017 David Robillard <http://drobilla.net> Machina is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -17,10 +17,13 @@ #ifndef MACHINA_EVOLVER_HPP #define MACHINA_EVOLVER_HPP +#include <atomic> +#include <memory> +#include <thread> + #include "eugene/GA.hpp" #include "eugene/Random.hpp" #include "machina/types.hpp" -#include "raul/Thread.hpp" #include "raul/TimeStamp.hpp" #include "Machine.hpp" @@ -34,7 +37,7 @@ namespace machina { class Problem; -class Evolver : public Raul::Thread +class Evolver { public: Evolver(Raul::TimeUnit unit, @@ -44,18 +47,24 @@ public: void seed(SPtr<Machine> parent); bool improvement() { return _improvement; } + void start(); + void join(); + const Machine& best() { return _ga->best(); } typedef eugene::GA<Machine> MachinaGA; private: - void _run(); + void run(); + + eugene::Random _rng; + SPtr<MachinaGA> _ga; + SPtr<Problem> _problem; + float _seed_fitness; + Schrodinbit _improvement; + std::atomic<bool> _exit_flag; - eugene::Random _rng; - SPtr<MachinaGA> _ga; - SPtr<Problem> _problem; - float _seed_fitness; - Schrodinbit _improvement; + std::unique_ptr<std::thread> _thread; }; } // namespace machina |