2#ifndef SI_GRAPH_ANNEALING_H
3#define SI_GRAPH_ANNEALING_H
202 std::ostream *plotStream = 0,
203 unsigned niterBelowStopProp = 1 );
237 std::vector<EnergyField> & en );
375 void processNodes(
const std::set<Vertex *> & ver, std::vector<EnergyField> & ef,
376 bool* npos,
unsigned first,
unsigned nn,
377 std::string* orLab );
387 void processConfig(
const std::set<Vertex *> & ver,
388 std::vector<EnergyField> & ef,
389 bool* npos, std::string* orLab );
Extensions au recuit simulé.
const std::string & voidLabel() const
void stepMetropolis()
Effectue une passe en mode Métropolis.
unsigned gibbsMaxTrans() const
Nombre max.
@ VERTEX
Itération noeud par noeud, ordre aléatoire.
@ CUSTOM
Itération sur d'autres groupes de noeuds (je verrai + tard)
@ CLIQUE
Itération clique par clique, ordre aléatoire.
CGraph & _cgraph
Graphe à étiqueter.
double stepDeltaE() const
Variation d'énergie du graphe à la dernière passe.
void reset()
Revient aux conditions initiales.
void checkStop()
Teste le critère d'arrêt et fixe l'état correspondant.
unsigned MPMUnrecordedIterations() const
Number of MPM steps before labels stats are recorded.
void setMaxIterations(unsigned n)
@ INITLABELS_NONE
Pas d'initialisation des labels: prendre ceux qui y sont déjÃ
Mode modeI() const
Mode de recuit initial.
unsigned maxIterations() const
Maximum number of iterations before switching to next mode.
double temp() const
Température courante.
unsigned nTrans() const
Nombre de transformations acceptées au cours de la dernière passe.
double processAllPotentials()
Calcule les potentiels de toutes les cliques.
unsigned _niterBelowStopProp
double tICM() const
Température de passage en ICM.
double _tempI
Température initiale.
void fitStep()
Effectue une passe de recuit.
@ VOIDMODE_NONE
Pas de mode void.
@ VOIDMODE_STOCHASTIC
Mode stochastique.
@ VOIDMODE_REGULAR
Mode régulier.
void stepGibbs()
Effectue une passe en mode Gibbs Sampler.
MGraph & _mgraph
Graphe modèle.
unsigned _currentNiterBelowStopProp
void init(Mode mode, double temp, double tmult, double tICM, double stopProp, unsigned gibbsMaxTrans, bool verbose=true, IterType itType=VERTEX, InitLabelsType voidInitialLabels=INITLABELS_RANDOM, const std::string &voidLabel="", std::ostream *plotStream=0, unsigned niterBelowStopProp=1)
Fixe l'état initial.
unsigned maxTrans() const
Nombre de transformations proposées au cours de la dernière passe.
IterType iterType() const
double initialEnergy() const
bool doubleDrawingLots() const
Dit si on est en mode DoubleTirage, technologie © JeffProd'00, pour les passes void et extensions.
Mode mode() const
Mode courant.
const MGraph & rGraph() const
Graphe modèle.
double _temp
Température courante.
void setVoidMode(VoidMode mode, unsigned occurency=0)
Mode "void": essais de configs où tous les labels sont remplacés par void.
void setAllowThreads(bool)
enables or disables the use of multiple threads during annealing.
double stopProp() const
Proportion de transformations acceptées en dessous de laquelle on arrête le recuit.
void processPotentials(const std::set< Vertex * > &vertices, std::vector< EnergyField > &en)
Calcule les différentes énergies des transitions possibles d'un groupe de noeuds, en Gibbs Sampler ou...
@ METROPOLIS
Algorithme original de Métropolis.
@ MPM
MPM (Maximum Posterior Marginal)
void clear()
Libère les structures allouées dans les graphes.
unsigned _extensionPassOccurency
void addExtension(AnnealExtension *ae, unsigned occurency=20)
InitLabelsType _initialLabelsType
bool threadsAllowed() const
void stepVoid()
Effectue une passe en mode Void (essais de configs ou tout un label est enlevé)
double deltaE() const
Variation d'énergie du graphe depuis le début du recuit.
const CGraph & cGraph() const
Graphe à étiqueter.
void setMPMUnrecordedIterations(unsigned n)
void setDoubleDrawingLots(bool t)
std::ostream * _plotStream
Anneal(CGraph &cg, MGraph &rg)
std::vector< AnnealExtension * > _annealExtensions
double tempI() const
Température initiale.
bool verbosity() const
dit si les affichages sont autorisés ou interdits
unsigned nIter() const
Nb d'itérations de recuit effectuées.
bool isFinished() const
Retourne true si le recuit est fini.
void fit()
Effectue tout le recuit.
double tMult() const
Multiplicxateur de température.
void stepICM()
Effectue une passe en mode ICM déterministe.
Graphes avec étiquettes et gestion de cliques (classe abstraite).
Graph modèle (classe abstraite).
Fabrique de sous-graphes.
double energy
Modification d'énergie pour ces changements de labels.
std::map< Clique *, double > involvedCliques
Cliques impliquées par ces noeuds, énergies recalculées correspondantes.
std::vector< Vertex * > vertices
Noeuds dont on modifie les labels.
double expEnergy
exp( - Denergy / temp )
double probability
Probabilité de cette configuration.
std::vector< std::string > labels
Labels choisis pour ces noeuds.
double probabilitySum
Probabilité cummulée.