00001 class NaryConstraint;
00002 class NaryVariable;
00003
00004
00006 class NaryCSProblem : public CSProblem
00007 { public :
00008 vector<NaryConstraint*>* naryconstraints;
00009 vector<NaryVariable*>* naryvariables;
00010 NaryCSProblem( int nbvar, int nbconst);
00011 NaryCSProblem (int nbvar, int nbconst, int lower);
00012 ~NaryCSProblem() {;};
00013
00014
00015
00017 int config_evaluation(Configuration* configuration);
00018 void fullincr_update_conflicts(FullincrCSPConfiguration* configuration,Move* move);
00019
00021 int compute_conflict(Configuration* configuration, int var , int val);
00022
00023 void incr_update_conflicts (IncrCSPConfiguration* configuration, Move* move);
00024
00025
00027 Configuration* NaryCSProblem::create_configuration();
00028 };
00029
00030
00032 class NaryConstraint
00033 { public :
00034 int arity;
00035 NaryConstraint (int arit);
00036
00038 int constraint_value (Configuration* configuration);
00039 int compute_index(int* values, vector<int>* tabdomaines);
00040 int compute_indexpart (int i, int vali, vector<int>* tabdomaines);
00041
00043 vector <int> constrainedvariables;
00044
00046 vector <int> tuplevalues;
00047 vector <int> multiplyers;
00048 void compute_indexmultiplyers( vector<int>* tabdomaines);
00049 int compute_indexmultiplyer(int i, vector<int>* tabdomaines);
00050 int nbtuples(vector<int>* tabdomaines );
00051 };
00052
00053
00055 class NaryVariable
00056 {public :
00057 vector <NaryConstraint*> constraints;
00058 NaryVariable();
00059 };
00060
00061 NaryCSProblem* weighted_narycsp_creation (int nbvar, int nbconst, int maxdomsize,
00062 vector<NaryVariable*>* vv,vector<NaryConstraint*>* vct );
00063
00064 void wcspdomaines_file_read (ifstream & file, int nbvar, vector<int>* tabdomaines);
00065
00066 void wcspdata_constraint_read (ifstream & file, int nbconst, vector<NaryVariable*>* vv, vector<NaryConstraint*>* vct,
00067 vector <int>* connexions, vector<int> * tabdomaines);
00068
00069
00070 int narycsp(int argc, char** argv, int tuningmode);