IAtari
Genetic algorithm generating AI capable to play Atari2600 games.
master< Res, Params > Class Template Reference

Master part of the algorithm, handle server-side connection and redistribute evenly the tests to the slaves. More...

#include <master.hpp>

Classes

struct  session
 Coroutine managing ONE slave. More...
 

Public Member Functions

 master (int port=54321, int nb_eval_by_parameter=1, int nb_eval_by_slave=1)
 Standard constructor. More...
 
void run (Client client)
 Start a coroutine handling incoming slave connection and a coroutine handling the tests. More...
 

Private Member Functions

unsigned int init_work_queue (const std::vector< Params > &parameters_to_evaluate)
 Fills the work queue with the list of agent in accordance the evaluations parameters. More...
 

Private Attributes

int port
 
int nb_eval_by_parameter
 
int nb_eval_by_slave
 
boost::asio::io_service io_service
 
std::list< connection_ptrslaves
 
std::queue< message::request< Params > > work_queue
 
std::list< message::result< Res > > intermediate_results
 

Detailed Description

template<typename Res, typename Params>
class master< Res, Params >

Master part of the algorithm, handle server-side connection and redistribute evenly the tests to the slaves.

Constructor & Destructor Documentation

◆ master()

template<typename Res , typename Params >
master< Res, Params >::master ( int  port = 54321,
int  nb_eval_by_parameter = 1,
int  nb_eval_by_slave = 1 
)

Standard constructor.

Initializes port to 54321 and evaluations parameters to 1.

Member Function Documentation

◆ init_work_queue()

template<typename Res , typename Params >
unsigned int master< Res, Params >::init_work_queue ( const std::vector< Params > &  parameters_to_evaluate)
private

Fills the work queue with the list of agent in accordance the evaluations parameters.

Remarks
This method will duplicate agents if needed (If we want to test an agent on several machines for instance).
Parameters
parameters_to_evaluateList of agent to be redistributed
Returns
The number of tests needed to evaluate the entire list.

◆ run()

template<typename Res, typename Params>
void master< Res, Params >::run ( Client  client)

Start a coroutine handling incoming slave connection and a coroutine handling the tests.

Parameters
clientTool used to process results (Fitness)

Member Data Documentation

◆ intermediate_results

template<typename Res, typename Params>
std::list<message::result<Res> > master< Res, Params >::intermediate_results
private

List of results produced by a batch of tested agents

◆ io_service

template<typename Res, typename Params>
boost::asio::io_service master< Res, Params >::io_service
private

Abstract networking boost interface

◆ nb_eval_by_parameter

template<typename Res, typename Params>
int master< Res, Params >::nb_eval_by_parameter
private

Number of test performed on an agent

◆ nb_eval_by_slave

template<typename Res, typename Params>
int master< Res, Params >::nb_eval_by_slave
private

Number max of test performed by a slave on an agent

◆ port

template<typename Res, typename Params>
int master< Res, Params >::port
private

Port used to communicate over the network

◆ slaves

template<typename Res, typename Params>
std::list<connection_ptr> master< Res, Params >::slaves
private

List of slaves owned by this master

◆ work_queue

template<typename Res, typename Params>
std::queue<message::request<Params> > master< Res, Params >::work_queue
private

List of agents to be tested


The documentation for this class was generated from the following file: