SiGraph: sulcal graphs


adaptiveTree.h
Go to the documentation of this file.
1
2
3#ifndef SI_MODEL_ADAPTIVETREE_H
4#define SI_MODEL_ADAPTIVETREE_H
5
6
7#include <si/model/adaptive.h>
8#include <si/mixer/mixer.h>
9#include <set>
10
11
12namespace sigraph
13{
14
17 class AdaptiveTree : public Adaptive
18 {
19 public:
20 typedef std::set<Adaptive *> datatype;
21 typedef datatype::iterator iterator;
22 typedef datatype::const_iterator const_iterator;
23
24 AdaptiveTree( const Mixer & mix );
25 AdaptiveTree( const std::string mix_method = "" );
26 AdaptiveTree( const AdaptiveTree & ad );
27 virtual ~AdaptiveTree();
28 virtual Model* clone() const;
29
31
33 virtual void generateDataBase(Learner &learner, const std::string &prefix,
34 const std::list<Clique *> *lrnCliques,
35 const std::list<Clique *> *tstCliques,
36 int cycles, int cycles_tst);
38 virtual double prop( const Clique * );
48 virtual double prop( const Clique* cl,
49 const std::map<Vertex*, std::string> & changes );
50 virtual bool doesOutputChange( const Clique* cl,
51 const std::map<Vertex*,
52 std::string> & changes ) const;
54 virtual double eval( const Clique * );
55 virtual void init();
57 virtual bool openFile( const std::string & basename = "" );
59 virtual void closeFile();
61 virtual void subFiles( const std::string & prefix,
62 std::set<std::string> & listNames ) const;
64 virtual double errorRate() const;
66 virtual double genErrorRate() const;
67 virtual double relianceWeight() const;
69 virtual double printDescription( Clique* cl, bool = false );
70 virtual bool checkLearnFinished();
73 virtual void forceLearnFinished();
74
77
78 virtual void resetStats();
80 virtual void trainStats(Learner &learner,
81 const std::list<Clique *> &cliques);
83
86 const datatype & children() const { return( _children ); }
87 std::pair<iterator, bool> insert( Adaptive *child );
88 void erase( Adaptive *child );
89 void erase( const iterator & i1 );
90 void erase( const iterator & i1, const iterator & i2 );
91 void insert( const datatype & children );
92 const_iterator begin() const { return( _children.begin() ); }
93 const_iterator end() const { return( _children.end() ); }
94 iterator begin() { return( _children.begin() ); }
95 iterator end() { return( _children.end() ); }
96 const Mixer & mixer() const { return ( *_mixer ); }
97 void setMixer( Mixer* mix );
99
101 void buildTree( Tree & tr ) const;
102 virtual void setBaseName( const std::string & basename );
103
104 protected:
107
108 private:
109 };
110
111
112 // Fonctions
113
114 inline AdaptiveTree::AdaptiveTree( const Mixer & mix )
115 : Adaptive(), _mixer( mix.clone() )
116 {
117 }
118
119
121 : Adaptive( ad ), _mixer( ad._mixer->clone() )
122 {
123 const_iterator is, fs=ad.end();
124 for( is=ad.begin(); is!=fs; ++is )
125 insert( (Adaptive* ) (*is)->clone() );
126 }
127
128
130 {
131 return( new AdaptiveTree( *this ) );
132 }
133
134
136 {
137 if( this != & ad )
138 {
139 (*(Adaptive *) this) = (const Adaptive &) ad;
140 erase( begin(), end() );
141 const_iterator is, fs=ad.end();
142 for( is=ad.begin(); is!=fs; ++is )
143 insert( (Adaptive *) (*is)->clone() );
144 if( ad._mixer ) _mixer = ad._mixer->clone();
145 else _mixer = 0;
146 }
147 return( *this );
148 }
149
150
151 inline std::pair<AdaptiveTree::iterator, bool>
153 {
154 child->setParent( this );
155 return( _children.insert( child ) );
156 }
157
158
160 {
161 const_iterator ic, fc=children.end();
162 for( ic=children.begin(); ic!=fc; ++ic )
163 {
164 _children.insert( *ic );
165 (*ic)->setParent( this );
166 }
167 }
168
169
170 inline void AdaptiveTree::erase( Adaptive *child )
171 {
172 _children.erase( child );
173 child->setParent( 0 );
174 }
175
176
178 {
179 _children.erase( ic );
180 (*ic)->setParent( 0 );
181 }
182
183
185 const AdaptiveTree::iterator & fc )
186 {
188
189 for( i=ic; i!=fc; ++i )
190 (*i)->setParent( 0 );
191 _children.erase( ic, fc );
192 }
193
194
195 inline void AdaptiveTree::setMixer( Mixer* mix )
196 {
197 delete _mixer;
198 _mixer = mix;
199 }
200
201}
202
203
204#endif
205
T * iterator
virtual double prop(const Clique *)
Propagation (réponse de l'Adaptive)
virtual bool openFile(const std::string &basename="")
Ouvre le(s) fichier(s) de sauvegardes des données reçues.
const datatype & children() const
virtual double printDescription(Clique *cl, bool=false)
Calcule le potentiel et garde le(s) vecteur(s) de description.
std::set< Adaptive * > datatype
AdaptiveTree & operator=(const AdaptiveTree &ad)
std::pair< iterator, bool > insert(Adaptive *child)
const Mixer & mixer() const
virtual Model * clone() const
Duplication (fonction abstraite)
AdaptiveTree(const std::string mix_method="")
virtual void trainStats(Learner &learner, const std::list< Clique * > &cliques)
Ajout à la base de statistiques.
virtual void closeFile()
Ferme le(s) fichier(s) de sauvegardes des données reçues.
virtual double prop(const Clique *cl, const std::map< Vertex *, std::string > &changes)
Donne le potentiel d'une clique, après une transformation de labels de noeuds, en ne le recalculant que...
void buildTree(Tree &tr) const
Conversion en arbre (pour IO)
virtual double relianceWeight() const
datatype::const_iterator const_iterator
datatype::iterator iterator
void setMixer(Mixer *mix)
virtual void init()
Initialisation des parties adaptatives (fonction abstraite)
virtual double eval(const Clique *)
Evaluation (confiance dans la réponse au point donné)
const_iterator begin() const
virtual void subFiles(const std::string &prefix, std::set< std::string > &listNames) const
Donne la liste des fichiers sous le modèle.
virtual double errorRate() const
Taux d'erreur d'apprentissage global.
virtual void resetStats()
Vide toutes les stats.
virtual bool doesOutputChange(const Clique *cl, const std::map< Vertex *, std::string > &changes) const
tells whether a label change inpacts the model output or not.
virtual bool checkLearnFinished()
fonction non-const pcq elle peut positionner le flag
const_iterator end() const
virtual void forceLearnFinished()
fait ce qu'il faut pour "fermer" l'apprentissage (remet le dernier mémo...)
void erase(Adaptive *child)
virtual void setBaseName(const std::string &basename)
virtual double genErrorRate() const
Taux d'erreur de généralisation.
AdaptiveTree(const Mixer &mix)
virtual void generateDataBase(Learner &learner, const std::string &prefix, const std::list< Clique * > *lrnCliques, const std::list< Clique * > *tstCliques, int cycles, int cycles_tst)
Apprentissage et test.
Elément adaptatif (classe abstraite).
Definition adaptive.h:23
Adaptive(Model *parent=0)
Definition adaptive.h:100
Classe Clique.
Definition clique.h:35
Séquence d'apprentissage, classe de base (abstraite).
Definition learner.h:22
Mixeur d'experts.
Definition mixer.h:22
virtual Mixer * clone() const =0
Modèle pour l'évaluation de cliques de graphes (classe abstraite).
Definition model.h:26
virtual void setParent(Model *m)
Fixe le parent.
Definition model.h:165