Cette opération calcule si l'ensemble des LIPs actuelles est acceptable. More...
#include "cogitant/opeprojection.h"
Public Types | |
enum | OpeProjectionStep { INITLIP, INITLIPEND, UPDATELIP, UPDATELIPBACKTRACK } |
Phase d'exécution de l'algorithme de backtrack. More... | |
Public Types inherited from cogitant::OperationBase | |
typedef unsigned int | Error |
Résultat de la vérification des arguments d'une opération. More... | |
Public Member Functions | |
Error | check () |
Vérification des paramètres. More... | |
void | run () |
Lancement de l'opération. More... | |
Constructeurs - destructeur. | |
OpeProjAcceptableLIPs (Environment *env) | |
Constructeur. More... | |
~OpeProjAcceptableLIPs () | |
Destructeur. More... | |
virtual OpeProjAcceptableLIPs * | clone () const |
Copie. More... | |
Entrée des paramètres. | |
void | setParamG (Graph const *g) |
void | setParamH (Graph const *h) |
void | setParamO (iSet o) |
void | setParamLIPs (LIP const *lips) |
void | setParamStep (OpeProjectionStep step) |
Accès aux résultats. | |
bool | getResult () const |
Public Member Functions inherited from cogitant::Operation | |
Environment * | environment () const |
Environnement. More... | |
void | setEnvironment (Environment *env) |
Modification de l'environnement sur lequel est défini l'opération. More... | |
Operation (Environment *env) | |
Constructeur. More... | |
Operation (Operation const &o) | |
Constructeur par recopie. More... | |
~Operation () | |
Destructeur. More... | |
Public Member Functions inherited from cogitant::OperationBase | |
void | stop () |
Stopper l'opération dès que possible. More... | |
bool | isStopped () const |
Est-ce que l'opération a été stoppée. More... | |
OperationBase () | |
Constructeur. More... | |
OperationBase (OperationBase const &o) | |
Constructeur par recopie. More... | |
~OperationBase () | |
Destructeur. More... | |
Public Member Functions inherited from cogitant::ObservableObject | |
ObservableObject () | |
Constructeur. More... | |
ObservableObject (ObservableObject const &o) | |
Constructeur par recopie. More... | |
~ObservableObject () | |
Destructeur. More... | |
ObserverSet const & | observers () const |
Accès à l'ensemble des observateurs. More... | |
bool | hasObservers () const |
Existence d'observateurs. More... | |
bool | hasObservers (ObserverMessage::Type mt) const |
Existence d'observateurs qui écoutent le type de message passé. More... | |
void | attachObserver (Observer *obs) |
Ajoute un nouvel observateur à l'objet. More... | |
void | detachObserver (Observer *obs) |
Supprime le lien entre l'observateur et l'objet. More... | |
void | notifyObservers (ObserverMessage const *msg) |
Envoie le message de modification à tous les observateurs. More... | |
Public Member Functions inherited from cogitant::CogitantObject | |
CogitantObject () | |
Constructeur. More... | |
CogitantObject (CogitantObject const &o) | |
Constructeur par recopie. More... | |
virtual | ~CogitantObject () |
Destructeur. More... | |
PropertySet * | properties () |
Accès à l'ensemble des propriétés. More... | |
virtual std::string | toString () const |
Transformation en chaîne de caractères. More... | |
std::string | className () const |
Nom de la classe. More... | |
PropertySet const * | properties () const |
Accès en lecture seule à l'ensemble des propriétés. More... | |
bool | hasProperties () const |
Existence de propriétés. More... | |
CogitantObject & | operator= (CogitantObject const &ob) |
Affectation. More... | |
Protected Attributes | |
Graph const * | i_g |
Le premier graphe. | |
Graph const * | i_h |
Le second graphe. | |
iSet | i_o |
Le sommet de i_g dont la LIP vient d'être modifiée (si i_step = 0 ou 2). | |
LIP const * | i_lips |
Pointeur sur le tableau des LIPs. | |
OpeProjectionStep | i_step |
La phase d'exécution de l'algorithme de projection. More... | |
bool | o_result |
Résultat : les LIPs sont-elles acceptables ou pas. | |
Protected Attributes inherited from cogitant::OperationBase | |
bool | m_stop |
Arrêt de l'exécution de l'opération demandé. More... | |
Additional Inherited Members | |
Static Public Attributes inherited from cogitant::Operation | |
static const Error | PROJBACKTRACKCHOICE_EMPTYLIST |
Impossible d'enlever un élément à une liste vide. More... | |
static const Error | OBJECTTYPE |
Un (identifiant d') objet parmi les paramètres n'est pas du bon type. More... | |
static const Error | WRONGEDGES |
Un graphe parmi les paramètres de l'opération possède des arêtes pendantes. More... | |
Static Public Attributes inherited from cogitant::OperationBase | |
static const Error | CHECKOK |
Pas d'erreur. More... | |
static const Error | ARGUMENTS |
Certains paramètres de l'opération n'ont pas été fixés. More... | |
static const Error | UNUSED |
Symbole d'erreur inutilisé. More... | |
Protected Member Functions inherited from cogitant::Operation | |
void | setProgress (unsigned int current, unsigned int max) |
Progression actuelle de l'opération. More... | |
Protected Member Functions inherited from cogitant::ObservableObject | |
virtual ObserverSet * | allocObservers () const |
Fonction créant l'instance d'une sous classe de ObserverSet pour la représentation de l'ensemble des observateurs de l'objet. More... | |
ObserverSet & | observers () |
Accès à l'ensemble des observateurs. More... | |
Protected Member Functions inherited from cogitant::CogitantObject | |
virtual PropertySet * | allocProperties () const |
Fonction créant l'instance d'une sous classe de PropertySet pour la représentation des propriétés de l'objet. More... | |
Cette opération calcule si l'ensemble des LIPs actuelles est acceptable.
Cette opération ne représente aucune contrainte particulière lors du calcul de projections. Par défaut, l'opération de projection ne dispose même pas d'une telle opération (elle a un pointeur NULL sur une OpeProjAcceptableLIPs). Il est par contre possible de définir une sous-classe de cette classe pour redéfinir le comportement : si getResult() retourne false, la configuration actuelle des LIPs est jugée inacceptable et le calcul des projections ne va pas plus loin. Si un tel résultat est obtenu lors de l'initialisation des LIPs, avant le début de l'algorithme de projection, le calcul des projections d'arrête ici. Par contre, si ce résultat négatif est obtenu pendant l'exécution de l'algorithme, un backtrack est effectué pour revenir en arrière et se diriger, peut-être, vers des LIPs acceptables.
Lors du calcul des projections d'un graphe i_g dans i_h, avec les LIPs calculées dans i_lips, alors que la LIP du sommet i_o vient d'être mise à jour, et que le calcul de projections des dans sa phase d'initialisation (si i_step = INITLIP), fin d'initialisation (si i_step = INITLIPEND, toutes les LIPs calculées initialement viennent d'être calculées) ou de calcul (si i_step = UPDATELIP), est-ce que les LIPs actuellement calculées permettent d'aller à une projection "intéressante" ?. A noter que l'opération peut être appelée avec un état particulier UPDATELIPBACKTRACK quand l'algorithme de calcul de projections fait un backtrack : dans ce cas, le résultat de l'opération n'est pas pris en compte, car l'algo de projection revient à un état qui avait été accepté plus tôt, et que ça n'aurait aucun sens de "refuser" un backtrack. L'intérêt d'un appel à l'opération dans ce cas est la possibilité de mettre à jour des structures de données propres à l'opération, car la LIP d'un sommet change.
Phase d'exécution de l'algorithme de backtrack.
Enumerator | |
---|---|
INITLIP | Initialisation des LIPs avant début de l'algorithme de backtrack, i_o contient l'iSet du sommet de i_g dont la LIP vient d'être calculée. |
INITLIPEND | Fin de la phase d'initialisation des LIPs, i_o ne contient rien de pertinent. |
UPDATELIP | Mise à jour d'une LIP pendant l'algorithme de backtrack. |
UPDATELIPBACKTRACK | Mise à jour d'une LIP pour revenir à un état précédent lors d'un backtrack . |
cogitant::OpeProjAcceptableLIPs::OpeProjAcceptableLIPs | ( | Environment * | env | ) |
Constructeur.
cogitant::OpeProjAcceptableLIPs::~OpeProjAcceptableLIPs | ( | ) |
Destructeur.
|
virtual |
Vérification des paramètres.
Retourne Operation::CHECKOK si l'opération peut être exécutée (méthode run()) ou un code d'erreur dans le cas contraire.
Implements cogitant::OperationBase.
|
virtual |
Copie.
|
virtual |
Lancement de l'opération.
Cette méthode ne retourne rien mais le résultat de l'opération peut être récupéré avec les méthodes getResultxxx() (différentes selon les sous classes de Operation).
Implements cogitant::OperationBase.
|
protected |
La phase d'exécution de l'algorithme de projection.