OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Sampler.h
Go to the documentation of this file.
1 #ifndef __OPAL_SAMPLER_H__
2 #define __OPAL_SAMPLER_H__
3 
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <time.h>
7 
8 #include <string>
9 #include <sstream>
10 #include <vector>
11 #include <map>
12 #include <utility>
13 #include <fstream>
14 #include <list>
15 
16 #include "Comm/types.h"
17 #include "Util/Types.h"
18 #include "Util/CmdArguments.h"
19 
20 #include "Optimizer/Optimizer.h"
22 #include "Sample/SamplingMethod.h"
23 
24 #include <boost/smart_ptr.hpp>
25 #include <boost/chrono.hpp>
26 
27 #include <memory>
28 
29 #include <queue>
30 
31 #include <boost/property_tree/ptree.hpp>
32 
33 
38 // template<
39 // template <class> class SamplingOperator
40 // >
41 class Sampler : public Optimizer {
42 
43 public:
44 
50  Sampler(Expressions::Named_t objectives,
51  Expressions::Named_t constraints,
52  DVarContainer_t dvars,
53  size_t dim, Comm::Bundle_t comms,
54  CmdArguments_t args,
55  std::vector<double> hypervolRef,
56  int nrWorkerGroups);
57 
58 
69  Sampler(const std::map< std::string,
70  std::shared_ptr<SamplingMethod>
71  >& sampleMethods,
72  Expressions::Named_t objectives,
73  DVarContainer_t dvars,
74  Comm::Bundle_t comms,
75  CmdArguments_t args);
76 
78  virtual void initialize();
79 
81  typedef std::vector< SampleIndividual > SolutionState_t;
82 
83 protected:
84 
85  // implementing poller hooks
86  bool onMessage(MPI_Status status, size_t length);
87  void postPoll();
88 
89  void setupPoll() {}
90  void prePoll() {}
91  void onStop() {}
92 
93  // helper sending evaluation requests to the pilot
95 
96 private:
97 
98  std::map<std::string,
99  std::shared_ptr<SamplingMethod>
101 
102  // global index (for job id)
103  int gid;
104 
106 
108 
111 
113  std::map<size_t, boost::shared_ptr<Individual_t> > jobmapping_m;
114 
115  std::queue<boost::shared_ptr<Individual_t> > individuals_m;
116 
119 
122 
125 
127 
128 
131 
134 
136 
137  enum State {
141  };
142 
144 
146  std::size_t jsonDumpFreq_m;
147  std::string jsonFname_m;
148  void writeJsonHeader();
149  std::list<Individual_t> individualsToDump_m;
150 
151  void dumpIndividualsToJSON();
152  void addIndividualToJSON(const boost::shared_ptr<Individual_t>& ind);
153 
154  void runStateMachine();
155 
156  void createNewIndividual();
157 };
158 
159 #endif
SampleIndividual Individual_t
Definition: Sampler.h:107
DVarContainer_t dvars_m
design variables
Definition: Sampler.h:121
std::vector< std::pair< double, double > > bounds_t
type of bounds for design variables
Definition: Optimizer.h:22
int done_sample_m
Definition: Sampler.h:135
virtual void initialize()
Initialization and start algorithm.
Definition: Sampler.cpp:73
void dumpIndividualsToJSON()
Definition: Sampler.cpp:220
void dispatch_forward_solves()
Definition: Sampler.cpp:318
CmdArguments_t args_
command line arguments specified by the user
Definition: Sampler.h:130
boost::shared_ptr< CmdArguments > CmdArguments_t
Definition: CmdArguments.h:169
std::map< std::string, std::shared_ptr< SamplingMethod > > sampleMethods_m
Definition: Sampler.h:100
std::map< size_t, boost::shared_ptr< Individual_t > > jobmapping_m
mapping from unique job ID to individual
Definition: Sampler.h:113
void postPoll()
executed after handling (if any) new request
Definition: Sampler.cpp:161
Expressions::Named_t objectives_m
objectives
Definition: Sampler.h:124
std::list< Individual_t > individualsToDump_m
Definition: Sampler.h:149
bool onMessage(MPI_Status status, size_t length)
Definition: Sampler.cpp:110
Implementing sampling.
Definition: Sampler.h:41
Sampler(Expressions::Named_t objectives, Expressions::Named_t constraints, DVarContainer_t dvars, size_t dim, Comm::Bundle_t comms, CmdArguments_t args, std::vector< double > hypervolRef, int nrWorkerGroups)
Definition: Sampler.cpp:17
An abstract class defining the interface for all optimizer components.
Definition: Optimizer.h:14
int gid
Definition: Sampler.h:103
void prePoll()
executed before checking for new request
Definition: Sampler.h:90
int act_sample_m
current generation
Definition: Sampler.h:133
int my_local_pid_
Definition: Sampler.h:105
std::map< std::string, DVar_t > DVarContainer_t
Definition: Types.h:77
std::map< std::string, Expressions::Expr_t * > Named_t
type of an expressions with a name
Definition: Expression.h:45
std::string jsonFname_m
Definition: Sampler.h:147
void createNewIndividual()
Definition: Sampler.cpp:171
std::vector< SampleIndividual > SolutionState_t
type used in solution state exchange with other optimizers
Definition: Sampler.h:81
void writeJsonHeader()
Definition: Sampler.cpp:196
std::queue< boost::shared_ptr< Individual_t > > individuals_m
Definition: Sampler.h:115
bundles all communicators for a specific role/pid
Definition: types.h:14
void onStop()
enable implementation to react to STOP tag
Definition: Sampler.h:91
int nSamples_m
Definition: Sampler.h:126
void addIndividualToJSON(const boost::shared_ptr< Individual_t > &ind)
Definition: Sampler.cpp:273
bounds_t dVarBounds_m
bounds on each specified gene
Definition: Sampler.h:118
Comm::Bundle_t comms_
communicator bundle for the optimizer
Definition: Sampler.h:110
void setupPoll()
executed before starting polling loop
Definition: Sampler.h:89
std::size_t jsonDumpFreq_m
Dumps id, design variables and bound.
Definition: Sampler.h:146
void runStateMachine()
Definition: Sampler.cpp:282
State curState_m
Definition: Sampler.h:143