00001
00003 class CSProblem : public OpProblem
00004 { public :
00005
00006
00008 int nbconst;
00009
00010
00012 vector<int>* tabdomains;
00013
00015 int* domains;
00016
00018 vector<int>* connections;
00019
00021 CSProblem (int nbvar, int nbconst);
00022
00024 CSProblem (int nbvar, int nbconst, int lower);
00025 ~CSProblem();
00026 void move_execution(Configuration* configuration, Move* move);
00027
00029 virtual int variable_domainsize (int var);
00030 void random_configuration(Configuration* configuration);
00031
00033 virtual int random_variable(Configuration* configuration);
00035 virtual int random_conflict_variable(Configuration* configuration);
00036
00038 virtual int random_value(int var,int val);
00039
00042 virtual int min_conflict_value(int var,int val, Configuration * configuration);
00043
00045 virtual void init_domains(int nbvar, int s );
00046
00048 virtual void init_tabdomains(int s);
00049
00051 void compute_var_conflict(Configuration* configuration);
00052 void best_config_analysis();
00053 void best_config_write();
00054 int move_evaluation(Configuration* configuration,Move* move);
00055 void init_population (Configuration** population,int populationsize);
00056 Configuration* create_configuration();
00057 Move* create_move();
00058 void adjust_parameters(Configuration* configuration, int & maxneighbors, int & minneighbors);
00059 void next_move(Configuration* configuration, Move* move, NeighborhoodSearch* nbhs);
00060
00062 virtual void set_domains_connections( int* dom, vector<int>* tabledom, vector<int> * connect );
00063
00065 virtual void init_domain_tabdomain();
00066 int tabuindex(Move* move, Configuration* config);
00067 int tabuinverseindex(Move* move, Configuration* config);
00068 int nbtabuindex();
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);