English Français

Documentation / Manuel développeur

Modules disponibles

Calibration,  DataServer,  Launcher,  MetaModelOptim,  Modeler,  Optimizer,  ReLauncher,  Reliability,  ReOptimizer,  Sampler,  Sensitivity,  UncertModeler,  XmlProblem,   Uranie / MetaModelOptim: THJMA.h Source File
Uranie / MetaModelOptim  v4.10.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 
46 struct hjma_pt {
47  double *xy;
48  vector<URANIE::DataServer::UEntry*> *codi, *codo;
49 };
50 struct hjma_work {
51  struct hjma_pt *best, *cur, one, two;
52 };
53 struct hjma_mem {
54  double crit;
55  vector<URANIE::DataServer::UEntry*> data;
56 };
57 
58 namespace URANIE {
59 namespace MetaModelOptim {
60 
61 struct domain {
62  double mini, maxi, it;
63 };
64 
65 class THJMA : public URANIE::Reoptimizer::TOptimShare
66 {
67 private:
68  inline double evaluate_pt(struct hjma_pt &pt);
69  inline void evaluate_best(struct hjma_work &self);
70  inline bool evaluate_current(struct hjma_work &self);
71 
72 
73 protected:
76  URANIE::DataServer::TAttribute *_y;
77  URANIE::Reoptimizer::TFitGetter *_crit, *_valid;
78  TRandom3 _rnd;
79  double **_global;
80  std::vector<double *> *_mode;
81  struct domain *_dom;
82 
83  void build();
84  void globalsearch(struct hjma_work &self);
85  int hjonestep(struct hjma_work &self, double *dep, double step);
86  void hjtwostep(struct hjma_work &self, double *dep);
87  int hjsearch(struct hjma_work &self, double prox, int loop, int dup);
88  int duplicate(struct hjma_work &self, double it);
89  void addSolution(struct hjma_work &self);
90  int getBest(struct hjma_work &self);
91 
92 
93 public:
94  THJMA(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run);
95  virtual ~THJMA();
96 
97  // initialisation
98  virtual void addObjective(URANIE::DataServer::TAttribute *,
99  URANIE::Reoptimizer::TOptimFit *f=NULL);
100  void setUsable(URANIE::Reoptimizer::TOptimFit *);
101  void setSize(int first, int step);
102 
103  // solve
104  void fitnessChanged();
105  virtual void solverLoop();
106 
107  // post
108  double *item(int);
109 
111 };
112 
113 } } //namespace
114 
115 #endif
Definition: TEGO.h:57
double * item(int)
Definition: THJMA.cxx:484
double maxi
Definition: THJMA.h:62
struct hjma_pt * cur
Definition: THJMA.h:51
double ** _global
Definition: THJMA.h:79
struct hjma_pt two
Definition: THJMA.h:51
int _Ncut
Definition: THJMA.h:74
virtual void addObjective(URANIE::DataServer::TAttribute *, URANIE::Reoptimizer::TOptimFit *f=NULL)
Definition: THJMA.cxx:101
Definition: THJMA.h:65
vector< URANIE::DataServer::UEntry * > data
Definition: THJMA.h:55
vector< URANIE::DataServer::UEntry * > * codo
Definition: THJMA.h:48
bool evaluate_current(struct hjma_work &self)
Definition: THJMA.cxx:174
#define ID_EGO
Definition: TEGO.h:31
void hjtwostep(struct hjma_work &self, double *dep)
Definition: THJMA.cxx:274
std::vector< double * > * _mode
Definition: THJMA.h:80
int duplicate(struct hjma_work &self, double it)
Definition: THJMA.cxx:336
URANIE::DataServer::TAttribute * _y
Definition: THJMA.h:76
vector< URANIE::DataServer::UEntry * > * codi
Definition: THJMA.h:48
double crit
Definition: THJMA.h:54
URANIE::Reoptimizer::TFitGetter * _crit
Definition: THJMA.h:77
Definition: THJMA.h:61
void evaluate_best(struct hjma_work &self)
Definition: THJMA.cxx:169
void setUsable(URANIE::Reoptimizer::TOptimFit *)
Definition: THJMA.cxx:111
int hjonestep(struct hjma_work &self, double *dep, double step)
Definition: THJMA.cxx:230
int _update
Definition: THJMA.h:75
struct hjma_pt * best
Definition: THJMA.h:51
struct domain * _dom
Definition: THJMA.h:81
void globalsearch(struct hjma_work &self)
Definition: THJMA.cxx:192
int hjsearch(struct hjma_work &self, double prox, int loop, int dup)
Definition: THJMA.cxx:304
double evaluate_pt(struct hjma_pt &pt)
Definition: THJMA.cxx:157
Definition: THJMA.h:53
int _Nfirst
Definition: THJMA.h:74
double mini
Definition: THJMA.h:62
void addSolution(struct hjma_work &self)
Definition: THJMA.cxx:358
Definition: THJMA.h:46
void setSize(int first, int step)
Definition: THJMA.cxx:118
Definition: THJMA.h:50
int _Nstep
Definition: THJMA.h:74
virtual void solverLoop()
Definition: THJMA.cxx:408
int getBest(struct hjma_work &self)
Definition: THJMA.cxx:385
int _Ncall
Definition: THJMA.h:74
void build()
Definition: THJMA.cxx:126
double it
Definition: THJMA.h:62
double * xy
Definition: THJMA.h:47
TRandom3 _rnd
Definition: THJMA.h:78
struct hjma_pt one
Definition: THJMA.h:51
int _first
Definition: THJMA.h:75
THJMA(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run)
Definition: THJMA.cxx:60
void fitnessChanged()
Definition: THJMA.cxx:402
URANIE::Reoptimizer::TFitGetter * _valid
Definition: THJMA.h:77
efficient global optimization algorithm
virtual ~THJMA()
Definition: THJMA.cxx:81