English Français

Documentation / Manuel développeur

Modules disponibles

Calibration,  DataServer,  Launcher,  MetaModelOptim,  Modeler,  Optimizer,  ReLauncher,  Reliability,  ReOptimizer,  Sampler,  Sensitivity,  UncertModeler,  XmlProblem,   Uranie / ReOptimizer: TCMAES.h Source File
Uranie / ReOptimizer  v4.11.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 namespace URANIE {
47 namespace Reoptimizer {
48 
49 struct domain {
50  double mini, maxi, it;
51 };
52 struct cmaes {
53  TMatrixD *corr;
54  //TMatrixD base(SIZE, SIZE);
55  TMatrixD *step;
56  TMatrixD *accu;
57  double stepg;
58 };
59 
60 struct solution {
61  TMatrixD *aleas;
62  TMatrixD *point;
63  double fit;
64  int idx, nbe;
65 };
66 
67 struct population {
68  struct solution *ind;
69  int etat, size;
70 };
71 
72 
73 class TCMAES : public TOptimReprise
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  int _nbe, _nbcy;
91  URANIE::DataServer::TAttribute *_y;
93  struct population _pop;
94  struct cmaes _etat;
95  struct domain *_dom;
96 
97  void initCmaesConst();
98  void initDomain();
99  void build();
100  void echo(TMatrixD &m);
101  void echoV(TMatrixD &v);
102  void initRandomPoint(TMatrixD &pt);
103  void push(int nbe, TMatrixD &pt, std::vector<URANIE::DataServer::UEntry*> *codi,
104  std::vector<URANIE::DataServer::UEntry*> *codo);
105  long pull(std::vector<struct solution> &gen,
106  std::vector<std::vector<URANIE::DataServer::UEntry*>> &codi,
107  std::vector<std::vector<URANIE::DataServer::UEntry*>> &codo,
108  std::vector<URANIE::DataServer::UEntry*> *sampl);
109  void fillSample(long i, URANIE::DataServer::TDataServer *tds,
110  std::vector<URANIE::DataServer::UEntry*> *codi,
111  std::vector<URANIE::DataServer::UEntry*> *codo,
112  std::vector<URANIE::DataServer::UEntry*> *sampl);
113 
114 
115 public:
116  TCMAES(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run);
117  virtual ~TCMAES();
118 
119  // initialisation
120  virtual void addObjective(URANIE::DataServer::TAttribute *,
122  void setSize(int loop, int step, int pop);
123  void setUnbounded();
124  void setRejectBound();
125  void setReflexBound();
126  virtual void setMaximumEval(int mx);
127 
128  // reprise protocole
129  virtual void extend(int more);
130  virtual int item(int id, double *zone, double *fit);
131 
132  // solve
133  void fitnessChanged();
134  virtual void solverLoop();
135 
136  ClassDef(URANIE::Reoptimizer::TCMAES, ID_REOPTIMIZER)
137 };
138 
139 } } //namespace
140 
141 #endif
Definition: TCMAES.cxx:49
TMatrixD * accu
Definition: TCMAES.h:56
URANIE::Reoptimizer::TFitGetter * _valid
Definition: TCMAES.h:92
objectifs et contraintes standards
TMatrixD * aleas
Definition: TCMAES.h:61
Definition: TCMAES.h:49
void setSize(int loop, int step, int pop)
Definition: TCMAES.cxx:107
double _alpha
Definition: TCMAES.h:88
virtual void addObjective(URANIE::DataServer::TAttribute *, URANIE::Reoptimizer::TOptimFit *f=NULL)
Definition: TCMAES.cxx:97
void setUnbounded()
Definition: TCMAES.cxx:114
double _cbeta
Definition: TCMAES.h:88
void echoV(TMatrixD &v)
Definition: TCMAES.cxx:229
double _cudcoef
Definition: TCMAES.h:88
Definition: TFitGetter.h:50
Definition: TCMAES.h:67
struct population _pop
Definition: TCMAES.h:93
TMatrixD * repair_point_reject(struct solution &sol)
Definition: TCMAES.cxx:305
int _Nmu
Definition: TCMAES.h:86
TMatrixD * repair_point_reflex(struct solution &sol)
Definition: TCMAES.cxx:275
void b_from_corr(TMatrixD &bb, TMatrixD &bbb)
Definition: TCMAES.cxx:327
double maxi
Definition: TCMAES.h:50
struct solution * ind
Definition: TCMAES.h:68
double _Xi
Definition: TCMAES.h:88
double fit
Definition: TCMAES.h:63
Definition: TOptimFit.h:47
URANIE::DataServer::TAttribute * _y
Definition: TCMAES.h:91
int nbe
Definition: TCMAES.h:64
int size
Definition: TCMAES.h:69
double _ccovtest
Definition: TCMAES.h:87
void massCenter(TMatrixD &)
Definition: TCMAES.cxx:237
void setReflexBound()
Definition: TCMAES.cxx:124
void build()
Definition: TCMAES.cxx:175
void initDomain()
Definition: TCMAES.cxx:156
double _cucoef
Definition: TCMAES.h:87
int idx
Definition: TCMAES.h:64
TCMAES(URANIE::DataServer::TDataServer *tds, URANIE::Relauncher::TRun *run)
Definition: TCMAES.cxx:55
void moveCenter(TMatrixD &)
Definition: TCMAES.cxx:249
struct cmaes _etat
Definition: TCMAES.h:94
virtual void solverLoop()
Definition: TCMAES.cxx:431
void echo(TMatrixD &m)
Definition: TCMAES.cxx:219
TRandom3 _mt
Definition: TCMAES.h:89
double _ccovorig
Definition: TCMAES.h:87
virtual void setMaximumEval(int mx)
Definition: TCMAES.cxx:129
virtual void extend(int more)
Definition: TCMAES.cxx:135
double it
Definition: TCMAES.h:50
double _ccoef
Definition: TCMAES.h:87
virtual ~TCMAES()
Definition: TCMAES.cxx:79
TMatrixD * point
Definition: TCMAES.h:62
Definition: TCMAES.h:73
virtual int item(int id, double *zone, double *fit)
Definition: TCMAES.cxx:619
int _Nlambda
Definition: TCMAES.h:86
struct domain * _dom
Definition: TCMAES.h:95
void initCmaesConst()
Definition: TCMAES.cxx:141
TMatrixD * repair_point_unbound(struct solution &sol)
Definition: TCMAES.cxx:262
double mini
Definition: TCMAES.h:50
void add_population(struct solution &sol)
Definition: TCMAES.cxx:386
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:602
void initRandomPoint(TMatrixD &pt)
Definition: TCMAES.cxx:206
URANIE::Reoptimizer::TFitGetter * _crit
Definition: TCMAES.h:92
int _nbcy
Definition: TCMAES.h:90
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:368
void push(int nbe, TMatrixD &pt, std::vector< URANIE::DataServer::UEntry *> *codi, std::vector< URANIE::DataServer::UEntry *> *codo)
Definition: TCMAES.cxx:348
recuperation de sortie transformées
methodes communes aux algo d optimisation
TMatrixD * corr
Definition: TCMAES.h:53
Definition: TOptimShare.h:134
TMatrixD *(TCMAES::* _repair_point)(struct solution &sol)
Definition: TCMAES.h:80
void setRejectBound()
Definition: TCMAES.cxx:119
Definition: TCMAES.h:60
TMatrixD * step
Definition: TCMAES.h:55
int _nbe
Definition: TCMAES.h:90
int _Ncycle
Definition: TCMAES.h:86
Definition: TCMAES.h:52
double stepg
Definition: TCMAES.h:57
int etat
Definition: TCMAES.h:69
double _cdcoef
Definition: TCMAES.h:88