toulbar2
csproblem.h
1 #ifndef INCOP_CSPROBLEM_H_
2 #define INCOP_CSPROBLEM_H_
3 
4 /* classe des problèmes de satisfaction de contraintes CSP*/
6 class CSProblem : public OpProblem {
7 public:
8  /* nombre de contraintes */
10  int nbconst;
11 
12  /* tableau des domaines : chaque domaine est un vecteur d'entiers */
14  vector<int>* tabdomains;
15  /* pour chaque variable, numéro de son domaine : indice dans le tableau tabdomains */
17  int* domains;
18  /* tableau des connexions : pour chaque variable, vecteur des variables connectées */
20  vector<int>* connections;
21  /* constructeur de base */
23  CSProblem(int nbvar, int nbconst);
24  /* constructeur avec borne inférieure */
26  CSProblem(int nbvar, int nbconst, int lower);
27  ~CSProblem();
28  void move_execution(Configuration* configuration, Move* move);
29  /* la taille du domaine de la variable var */
31  virtual int variable_domainsize(int var);
32  void random_configuration(Configuration* configuration);
33  /* une variable choisie aléatoirement */
35  virtual int random_variable(Configuration* configuration);
37  virtual int random_conflict_variable(Configuration* configuration);
38  /* une valeur choisie aléatoirement, si possible distincte de val : retourne l'indice de la valeur dans le domaine */
40  virtual int random_value(int var, int val);
41  /* une valeur dans le domaine de la variable minimisant les conflits avec la configuration */
44  virtual int min_conflict_value(int var, int val, Configuration* configuration);
45  /* initialisation des domaines par défaut : un seul domaine numéro 0 pour toutes les variables */
47  virtual void init_domains(int nbvar, int s);
48  /* un seul domaine par défaut : entiers de 0 à s-1 */
50  virtual void init_tabdomains(int s);
51  /* calcul des variables en conflit : on reconstruit le vecteur des variables en conflit d'une configuration*/
53  void compute_var_conflict(Configuration* configuration);
54  void best_config_analysis();
55  void best_config_write();
56  Long move_evaluation(Configuration* configuration, Move* move);
57  void init_population(Configuration** population, int populationsize);
58  Configuration* create_configuration();
59  Move* create_move();
60  void adjust_parameters(Configuration* configuration, int& maxneighbors, int& minneighbors);
61  void next_move(Configuration* configuration, Move* move, NeighborhoodSearch* nbhs);
62  /* met en place les domaines et connexions d'un problème */
64  virtual void set_domains_connections(int* dom, vector<int>* tabledom, vector<int>* connect);
65  /* initialisation des domaines : appel de init_domains et init_tabdomains */
67  virtual void init_domain_tabdomain();
68  int tabuindex(Move* move, Configuration* config);
69  int tabuinverseindex(Move* move, Configuration* config);
70  int nbtabuindex();
71 };
72 
73 /* CSP Binaires : ajout du tableau des contraintes à partir de 2 variables */
75 class BinaryCSProblem : public CSProblem {
76 public:
77  /* pour une paire de variables (i,j) (i<j) , constraints[i][j] contient le numéro de contraintes +1 entre ces variables si
78  elles sont connectées, 0 sinon. On se limite à au plus une contrainte par paire de variables : dans le
79  cas contraire on peut utiliser la classe WeightExtensionBinaryCSP */
82  int** constraints;
83  BinaryCSProblem(int nbvar, int nbconst);
84  BinaryCSProblem(int nbvar, int nbconst, int lower);
85  ~BinaryCSProblem() { ; };
86 };
87 
88 int** csp_constraintdatastructure(int nbvar);
89 #endif /* INCOP_CSPROBLEM_H_*/
Definition: csproblem.h:75
int ** constraints
Definition: csproblem.h:82
Definition: csproblem.h:6
virtual int variable_domainsize(int var)
Definition: csproblem.cpp:44
vector< int > * connections
Definition: csproblem.h:20
void compute_var_conflict(Configuration *configuration)
Definition: csproblem.cpp:33
vector< int > * tabdomains
Definition: csproblem.h:14
virtual void set_domains_connections(int *dom, vector< int > *tabledom, vector< int > *connect)
Definition: csproblem.cpp:284
virtual void init_tabdomains(int s)
Definition: csproblem.cpp:25
virtual int random_conflict_variable(Configuration *configuration)
Definition: csproblem.cpp:125
virtual void init_domains(int nbvar, int s)
Definition: csproblem.cpp:18
int * domains
Definition: csproblem.h:17
int nbconst
Definition: csproblem.h:10
CSProblem(int nbvar, int nbconst)
Definition: csproblem.cpp:49
virtual int random_variable(Configuration *configuration)
Definition: csproblem.cpp:109
virtual int random_value(int var, int val)
Definition: csproblem.cpp:133
virtual void init_domain_tabdomain()
Definition: csproblem.cpp:291
virtual int min_conflict_value(int var, int val, Configuration *configuration)
Definition: csproblem.cpp:148
Definition: incop.h:87
Definition: incop.h:188
Definition: incop.h:315
Definition: incop.h:222
int nbvar
Definition: incop.h:229