From 19fcbf7b74c68529fe24f40f1c0fa923a3d22bce Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 16 Dec 2017 12:27:22 +0100 Subject: Use std::thread in evolution code --- src/engine/machina/Evolver.hpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src/engine/machina') 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 + Copyright 2007-2017 David Robillard 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 +#include +#include + #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 parent); bool improvement() { return _improvement; } + void start(); + void join(); + const Machine& best() { return _ga->best(); } typedef eugene::GA MachinaGA; private: - void _run(); + void run(); + + eugene::Random _rng; + SPtr _ga; + SPtr _problem; + float _seed_fitness; + Schrodinbit _improvement; + std::atomic _exit_flag; - eugene::Random _rng; - SPtr _ga; - SPtr _problem; - float _seed_fitness; - Schrodinbit _improvement; + std::unique_ptr _thread; }; } // namespace machina -- cgit v1.2.1