00001
00003 class CSProblem : public OpProblem
00004 { public :
00005
00006
00008 int nbconst;
00009
00010
00012 vector<int>* tabdomains;
00013
00015 int domainsize;
00016
00018 int* domains;
00019
00021 vector<int>* connections;
00022
00024 CSProblem (int nbvar, int nbconst);
00025
00027 CSProblem (int nbvar, int nbconst, int lower);
00028 ~CSProblem();
00029 void move_execution(Configuration* configuration, Move* move);
00030
00032 virtual int variable_domainsize (int var);
00033 void random_configuration(Configuration* configuration);
00034
00036 virtual int random_variable(Configuration* configuration);
00038 virtual int random_conflict_variable(Configuration* configuration);
00039
00041 virtual int random_value(int var,int val);
00042
00045 virtual int min_conflict_value(int var,int val, Configuration * configuration);
00046
00048 virtual void init_domains(int nbvar, int s );
00049
00051 virtual void init_tabdomains(int s);
00052
00054 void compute_var_conflict(Configuration* configuration);
00055 void best_config_analysis();
00056 void best_config_write();
00057 int move_evaluation(Configuration* configuration,Move* move);
00058 void init_population (Configuration** population,int populationsize);
00059 Configuration* create_configuration();
00060 Move* create_move();
00061 void adjust_parameters(Configuration* configuration, int & maxneighbors, int & minneighbors);
00062 void next_move(Configuration* configuration, Move* move, NeighborhoodSearch* nbhs);
00063
00065 virtual void set_domains_connections( int* dom, vector<int>* tabledom, vector<int> * connect );
00066
00068 virtual void init_domain_tabdomain();
00069 };
00070
00071
00072
00074 class BinaryCSProblem : public CSProblem
00075 { public :
00076
00077
00078
00081 int** constraints;
00082 BinaryCSProblem( int nbvar, int nbconst);
00083 BinaryCSProblem (int nbvar, int nbconst, int lower);
00084 ~BinaryCSProblem() {;};
00085 };
00086
00087
00088
00089
00090 int** csp_constraintdatastructure(int nbvar);