#ifndef EA_H
#define EA_H

#include <iostream>

#include <vector>
#include <algorithm>
#include <random>

#include "SearchHeuristic.h"

class EA : public SearchHeuristic
{
    public:
        EA(double proba, int lda, int mu, std::default_random_engine& randomizer);
        void prepare_tab();
        Result run();
        virtual ~EA();

    protected:
        double m_proba;
        int m_lambda;
        int m_mu;

        std::default_random_engine m_randomizer;
        std::binomial_distribution<int> m_binomial_dist;
        bool m_is_prepared;
        Candidate** x_tab;

    private:
};

#endif // EA_H
