toulbar2
csproblem.h
1#ifndef INCOP_CSPROBLEM_H_
2#define INCOP_CSPROBLEM_H_
3
4/* classe des problèmes de satisfaction de contraintes CSP*/
6class CSProblem : public OpProblem {
7public:
8 /* nombre de contraintes */
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 */
75class BinaryCSProblem : public CSProblem {
76public:
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 */
84 BinaryCSProblem(int nbvar, int nbconst, int lower);
85 ~BinaryCSProblem() { ; };
86};
87
88int** 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