English Français

Documentation / Developer's manual

Available modules

Calibration,  DataServer,  Launcher,  MetaModelOptim,  Modeler,  Optimizer,  ReLauncher,  Reliability,  ReOptimizer,  Sampler,  Sensitivity,  UncertModeler,  XmlProblem,   Uranie / MetaModelOptim: THJMA.h Source File
Uranie / MetaModelOptim  v4.11.0
/* @license-end */
THJMA.h
Go to the documentation of this file.
1 /* --- Ansi C --- */
3 // Copyright (C) 2019 CEA/DEN
4 //
5 // This program is free software: you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public License
7 // as published by the Free Software Foundation, either version 3 of
8 // the License, or any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this program.
17 // if not, see <http://www.gnu.org/licenses/>.
19 
27 #ifndef __HJMA__
28 #define __HJMA__
29 
30 // ROOT
31 #include "Rtypes.h"
32 #include "TRandom3.h"
33 
34 // URANIE
35 #include "TOptimShare.h"
36 
37 #include "TDataServer.h"
38 #include "TAttribute.h"
39 #include "TRun.h"
40 #include "TEval.h"
41 #include "TOptimFit.h"
42 #include "TFitGetter.h"
43 
44 //#include "TEGO.h"
45 #include "MetaModelOptim.h"
46 
47 namespace URANIE {
48 namespace MetaModelOptim {
49 
50 struct hjma_domain {
51  double mini, maxi, it;
52 };
53 struct hjma_pt {
54  double *xy;
55  vector<URANIE::DataServer::UEntry*> *codi, *codo;
56 };
57 struct hjma_work {
58  struct hjma_pt *best, *cur, one, two;
59 };
60 struct hjma_mem {
61  double crit;
62  vector<URANIE::DataServer::UEntry*> data;
63 };
64 
65 
66 class THjmaSolver : public URANIE::Reoptimizer::TOptimSolver
67 {
68 private:
70 
71 public:
72  THjmaSolver();
73  virtual ~THjmaSolver();
74 
75  // parameters
76  void setSize(int start, int step);
77  void setMaximumEval(int eval);
78 
79  // master
80  virtual URANIE::Reoptimizer::TOptimShare *getMaster(
81  URANIE::DataServer::TDataServer *tds,
82  URANIE::Relauncher::TRun *run);
83 
84  ClassDef(URANIE::MetaModelOptim::THjmaSolver, ID_METAMODELOPTIM)
85 };
86 
87 
88 class THJMA : public URANIE::Reoptimizer::TOptimShare
89 {
90 private:
91  inline double evaluate_pt(struct hjma_pt &pt);
92  inline void evaluate_best(struct hjma_work &self);
93  inline bool evaluate_current(struct hjma_work &self);
94 
95 
96 protected:
99  URANIE::DataServer::TAttribute *_y;
100  URANIE::Reoptimizer::TFitGetter *_crit, *_valid;
101  TRandom3 _rnd;
102  double **_global;
103  std::vector<double *> *_mode;
104  struct hjma_domain *_dom;
105 
106  void build();
107  void globalsearch(struct hjma_work &self);
108  int hjonestep(struct hjma_work &self, double *dep, double step);
109  void hjtwostep(struct hjma_work &self, double *dep);
110  int hjsearch(struct hjma_work &self, double prox, int loop, int dup);
111  int duplicate(struct hjma_work &self, double it);
112  void addSolution(struct hjma_work &self);
113  int getBest(struct hjma_work &self);
114 
115 
116 public:
117  THJMA(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run);
118  virtual ~THJMA();
119 
120  // initialisation
121  virtual void addObjective(URANIE::DataServer::TAttribute *,
122  URANIE::Reoptimizer::TOptimFit *f=NULL);
123  void setUsable(URANIE::Reoptimizer::TOptimFit *);
124  void setSize(int first, int step);
125  virtual void setMaximumEval(int max);
126 
127  // solve
128  void fitnessChanged();
129  virtual void solverLoop();
130 
131  // post
132  double *item(int);
133 
134  ClassDef(URANIE::MetaModelOptim::THJMA, ID_METAMODELOPTIM)
135 };
136 
137 } } //namespace
138 
139 #endif
Definition: TEGO.h:57
double * item(int)
Definition: THJMA.cxx:524
vector< URANIE::DataServer::UEntry * > data
Definition: THJMA.h:62
THjmaSolver()
Definition: THJMA.cxx:63
double maxi
Definition: THJMA.h:51
struct hjma_domain * _dom
Definition: THJMA.h:104
double ** _global
Definition: THJMA.h:102
int _Nfirst
Definition: THJMA.h:69
int _Nstep
Definition: THJMA.h:69
double * xy
Definition: THJMA.h:54
virtual ~THjmaSolver()
Definition: THJMA.cxx:68
int _Ncut
Definition: THJMA.h:97
virtual void addObjective(URANIE::DataServer::TAttribute *, URANIE::Reoptimizer::TOptimFit *f=NULL)
Definition: THJMA.cxx:136
Definition: THJMA.h:88
double mini
Definition: THJMA.h:51
struct hjma_pt * best
Definition: THJMA.h:58
bool evaluate_current(struct hjma_work &self)
Definition: THJMA.cxx:214
virtual void setMaximumEval(int max)
Definition: THJMA.cxx:159
struct hjma_pt * cur
Definition: THJMA.h:58
void hjtwostep(struct hjma_work &self, double *dep)
Definition: THJMA.cxx:314
virtual URANIE::Reoptimizer::TOptimShare * getMaster(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run)
Definition: THJMA.cxx:83
std::vector< double * > * _mode
Definition: THJMA.h:103
struct hjma_pt two
Definition: THJMA.h:58
void setSize(int start, int step)
Definition: THJMA.cxx:71
double it
Definition: THJMA.h:51
int duplicate(struct hjma_work &self, double it)
Definition: THJMA.cxx:376
URANIE::DataServer::TAttribute * _y
Definition: THJMA.h:99
URANIE::Reoptimizer::TFitGetter * _crit
Definition: THJMA.h:100
void evaluate_best(struct hjma_work &self)
Definition: THJMA.cxx:209
struct hjma_pt one
Definition: THJMA.h:58
void setUsable(URANIE::Reoptimizer::TOptimFit *)
Definition: THJMA.cxx:146
int hjonestep(struct hjma_work &self, double *dep, double step)
Definition: THJMA.cxx:270
int _update
Definition: THJMA.h:98
void globalsearch(struct hjma_work &self)
Definition: THJMA.cxx:232
int hjsearch(struct hjma_work &self, double prox, int loop, int dup)
Definition: THJMA.cxx:344
double evaluate_pt(struct hjma_pt &pt)
Definition: THJMA.cxx:197
int _Nfirst
Definition: THJMA.h:97
void addSolution(struct hjma_work &self)
Definition: THJMA.cxx:398
void setSize(int first, int step)
Definition: THJMA.cxx:153
int _Nstep
Definition: THJMA.h:97
vector< URANIE::DataServer::UEntry * > * codi
Definition: THJMA.h:55
void setMaximumEval(int eval)
Definition: THJMA.cxx:77
virtual void solverLoop()
Definition: THJMA.cxx:448
int getBest(struct hjma_work &self)
Definition: THJMA.cxx:425
double crit
Definition: THJMA.h:61
Definition: THJMA.h:60
int _Ncall
Definition: THJMA.h:97
void build()
Definition: THJMA.cxx:166
int _Neval
Definition: THJMA.h:69
vector< URANIE::DataServer::UEntry * > * codo
Definition: THJMA.h:55
Definition: THJMA.h:53
TRandom3 _rnd
Definition: THJMA.h:101
int _first
Definition: THJMA.h:98
THJMA(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run)
Definition: THJMA.cxx:95
void fitnessChanged()
Definition: THJMA.cxx:442
URANIE::Reoptimizer::TFitGetter * _valid
Definition: THJMA.h:100
Definition: THJMA.h:57
virtual ~THJMA()
Definition: THJMA.cxx:116