English Français

Documentation / Developer's manual

Available modules

Calibration,  DataServer,  Launcher,  MetaModelOptim,  Modeler,  Optimizer,  ReLauncher,  Reliability,  ReOptimizer,  Sampler,  Sensitivity,  UncertModeler,  XmlProblem,   Uranie / ReOptimizer: TCMAES.h Source File
Uranie / ReOptimizer  v4.10.0
/* @license-end */
TCMAES.h
Go to the documentation of this file.
1 /* --- Ansi C --- */
3 // Copyright (C) 2023 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 __CMAES__
28 #define __CMAES__
29 
30 // ROOT
31 //#include "Rtypes.h"
32 #include "TRandom3.h"
33 #include "TMatrixD.h"
34 
35 //URANIE
36 #include "Reoptimizer.h"
37 #include "TOptimShare.h"
38 
39 #include "TDataServer.h"
40 #include "TAttribute.h"
41 #include "TRun.h"
42 #include "TEval.h"
43 #include "TOptimFit.h"
44 #include "TFitGetter.h"
45 
46 struct cmaes {
47  TMatrixD *corr;
48  //TMatrixD base(SIZE, SIZE);
49  TMatrixD *step;
50  TMatrixD *accu;
51  double stepg;
52 };
53 
54 struct solution {
55  TMatrixD *aleas;
56  TMatrixD *point;
57  double fit;
58  int idx, nbe;
59 };
60 
61 struct population {
62  struct solution *ind;
63  int etat, size;
64 };
65 
66 namespace URANIE {
67 namespace Reoptimizer {
68 
69 struct domain {
70  double mini, maxi, it;
71 };
72 
73 class TCMAES : public TOptimShare
74 {
75 private:
76  void massCenter(TMatrixD &);
77  void moveCenter(TMatrixD &);
78  void b_from_corr(TMatrixD &bb, TMatrixD &bbb);
79  void add_population(struct solution &sol);
80  TMatrixD * (TCMAES::*_repair_point)(struct solution &sol);
81  TMatrixD *repair_point_unbound(struct solution &sol);
82  TMatrixD *repair_point_reflex(struct solution &sol);
83  TMatrixD *repair_point_reject(struct solution &sol);
84 
85 protected:
89  TRandom3 _mt;
90  URANIE::DataServer::TAttribute *_y;
92  struct population _pop;
93  struct cmaes _etat;
94  struct domain *_dom;
95 
96  void initCmaesConst();
97  void initDomain();
98  void build();
99  void echo(TMatrixD &m);
100  void echoV(TMatrixD &v);
101  void initRandomPoint(TMatrixD &pt);
102  void push(int nbe, TMatrixD &pt, std::vector<URANIE::DataServer::UEntry*> *codi,
103  std::vector<URANIE::DataServer::UEntry*> *codo);
104  long pull(std::vector<struct solution> &gen,
105  std::vector<std::vector<URANIE::DataServer::UEntry*>> &codi,
106  std::vector<std::vector<URANIE::DataServer::UEntry*>> &codo,
107  std::vector<URANIE::DataServer::UEntry*> *sampl);
108  void fillSample(long i, URANIE::DataServer::TDataServer *tds,
109  std::vector<URANIE::DataServer::UEntry*> *codi,
110  std::vector<URANIE::DataServer::UEntry*> *codo,
111  std::vector<URANIE::DataServer::UEntry*> *sampl);
112 
113 
114 public:
115  TCMAES(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run);
116  virtual ~TCMAES();
117 
118  // initialisation
119  virtual void addObjective(URANIE::DataServer::TAttribute *,
121  void setSize(int loop, int step, int pop);
122  void setUnbounded();
123  void setRejectBound();
124  void setReflexBound();
125 
126  // solve
127  void fitnessChanged();
128  virtual void solverLoop();
129 
130  // post
131  double *item(int);
132 
133  ClassDef(URANIE::Reoptimizer::TCMAES, ID_REOPTIMIZER)
134 };
135 
136 } } //namespace
137 
138 #endif
Definition: TCMAES.h:66
URANIE::Reoptimizer::TFitGetter * _valid
Definition: TCMAES.h:91
objectifs et contraintes standards
double stepg
Definition: TCMAES.h:51
TMatrixD * point
Definition: TCMAES.h:56
Definition: TCMAES.h:69
void setSize(int loop, int step, int pop)
Definition: TCMAES.cxx:88
Definition: TCMAES.h:54
double _alpha
Definition: TCMAES.h:88
virtual void addObjective(URANIE::DataServer::TAttribute *, URANIE::Reoptimizer::TOptimFit *f=NULL)
Definition: TCMAES.cxx:78
struct solution * ind
Definition: TCMAES.h:62
Definition: TCMAES.h:46
void setUnbounded()
Definition: TCMAES.cxx:95
double _cbeta
Definition: TCMAES.h:88
void echoV(TMatrixD &v)
Definition: TCMAES.cxx:198
TMatrixD * corr
Definition: TCMAES.h:47
double _cudcoef
Definition: TCMAES.h:88
Definition: TFitGetter.h:50
struct population _pop
Definition: TCMAES.h:92
TMatrixD * repair_point_reject(struct solution &sol)
Definition: TCMAES.cxx:274
int _Nmu
Definition: TCMAES.h:86
TMatrixD * repair_point_reflex(struct solution &sol)
Definition: TCMAES.cxx:244
void b_from_corr(TMatrixD &bb, TMatrixD &bbb)
Definition: TCMAES.cxx:296
double maxi
Definition: TCMAES.h:70
double _Xi
Definition: TCMAES.h:88
Definition: TOptimShare.h:52
Definition: TOptimFit.h:47
URANIE::DataServer::TAttribute * _y
Definition: TCMAES.h:90
TMatrixD * step
Definition: TCMAES.h:49
double _ccovtest
Definition: TCMAES.h:87
void massCenter(TMatrixD &)
Definition: TCMAES.cxx:206
int etat
Definition: TCMAES.h:63
void setReflexBound()
Definition: TCMAES.cxx:105
void build()
Definition: TCMAES.cxx:145
void initDomain()
Definition: TCMAES.cxx:126
double _cucoef
Definition: TCMAES.h:87
TCMAES(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run)
Definition: TCMAES.cxx:52
void moveCenter(TMatrixD &)
Definition: TCMAES.cxx:218
int size
Definition: TCMAES.h:63
struct cmaes _etat
Definition: TCMAES.h:93
virtual void solverLoop()
Definition: TCMAES.cxx:393
void echo(TMatrixD &m)
Definition: TCMAES.cxx:188
TMatrixD * accu
Definition: TCMAES.h:50
TRandom3 _mt
Definition: TCMAES.h:89
double _ccovorig
Definition: TCMAES.h:87
double it
Definition: TCMAES.h:70
double _ccoef
Definition: TCMAES.h:87
virtual ~TCMAES()
Definition: TCMAES.cxx:72
TMatrixD * aleas
Definition: TCMAES.h:55
Definition: TCMAES.h:73
int _Nlambda
Definition: TCMAES.h:86
struct domain * _dom
Definition: TCMAES.h:94
void initCmaesConst()
Definition: TCMAES.cxx:111
TMatrixD * repair_point_unbound(struct solution &sol)
Definition: TCMAES.cxx:231
double mini
Definition: TCMAES.h:70
void add_population(struct solution &sol)
Definition: TCMAES.cxx:355
void fillSample(long i, URANIE::DataServer::TDataServer *tds, std::vector< URANIE::DataServer::UEntry *> *codi, std::vector< URANIE::DataServer::UEntry *> *codo, std::vector< URANIE::DataServer::UEntry *> *sampl)
Definition: TCMAES.cxx:558
void initRandomPoint(TMatrixD &pt)
Definition: TCMAES.cxx:175
URANIE::Reoptimizer::TFitGetter * _crit
Definition: TCMAES.h:91
long pull(std::vector< struct solution > &gen, std::vector< std::vector< URANIE::DataServer::UEntry *>> &codi, std::vector< std::vector< URANIE::DataServer::UEntry *>> &codo, std::vector< URANIE::DataServer::UEntry *> *sampl)
Definition: TCMAES.cxx:337
void push(int nbe, TMatrixD &pt, std::vector< URANIE::DataServer::UEntry *> *codi, std::vector< URANIE::DataServer::UEntry *> *codo)
Definition: TCMAES.cxx:317
recuperation de sortie transformées
methodes communes aux algo d optimisation
TMatrixD *(TCMAES::* _repair_point)(struct solution &sol)
Definition: TCMAES.h:80
void setRejectBound()
Definition: TCMAES.cxx:100
int nbe
Definition: TCMAES.h:58
Definition: TCMAES.h:61
int idx
Definition: TCMAES.h:58
int _Ncycle
Definition: TCMAES.h:86
double _cdcoef
Definition: TCMAES.h:88
double fit
Definition: TCMAES.h:57