00001
00002
00003 class CSProblem : public OpProblem
00004 { public :
00005
00007
00008 int nbconst;
00009
00011
00012 vector<int>* tabdomains;
00014
00015 int domainsize;
00017
00018 int* domains;
00020
00021 vector<int>* connections;
00023
00024 CSProblem (int nbvar, int nbconst);
00026
00027 CSProblem (int nbvar, int nbconst, int lower);
00028 ~CSProblem();
00029 void move_execution(Configuration* configuration, Move* move);
00031
00032 virtual int variable_domainsize (int var);
00033 void random_configuration(Configuration* configuration);
00035
00036 virtual int random_variable(Configuration* configuration);
00037
00038 virtual int random_conflict_variable(Configuration* configuration);
00040
00041 virtual int random_value(int var,int val);
00043
00044
00045 virtual int min_conflict_value(int var,int val, Configuration * configuration);
00047
00048 virtual void init_domains(int nbvar, int s );
00050
00051 virtual void init_tabdomains(int s);
00053
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);
00064
00065 virtual void set_domains_connections( int* dom, vector<int>* tabledom, vector<int> * connect );
00067
00068 virtual void init_domain_tabdomain();
00069 };
00070
00071
00073
00074 class BinaryCSProblem : public CSProblem
00075 { public :
00079
00080
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);