00001 class CarseqMove;
00002
00003
00004
00007 class Carseq: public CSProblem
00008 { public :
00009 Carseq(int nbcars,int nbclasses);
00010
00012 int nbopt;
00013
00015 int nbclasses;
00016
00017 int* maxcars;
00018
00019 int* blocsize;
00020 int* nbcarsinclass;
00021 int** optionsinclass;
00022 int* maxblocsize;
00023 int blocsizemax;
00024 int config_evaluation(Configuration * Configuration);
00025 int config_verification(Configuration * Configuration);
00026 void init_domaines(int nbvar, int s );
00027 Configuration* create_configuration();
00028 void random_configuration(Configuration* configuration);
00029 int random_conflict_variable(Configuration* configuration);
00030 Move* create_move();
00031 void next_move (Configuration* configuration, Move* move, NeighborhoodSearch* nbhs);
00032 void move_execution(Configuration* configuration,Move* move);
00033 int move_evaluation (Configuration* configuration,Move* move);
00034 void update_conflicting_variables (Configuration* configuration,Move* move);
00035 void best_config_analysis ();
00036 void adjust_parameters (Configuration* configuration, int& maxneighbors, int& minneighbors);
00037 void compute_var_conflict(Configuration* configuration);
00038 int tabuindex(Move* move,Configuration* configuration);
00039 int tabuinverseindex(Move* move, Configuration* configuration);
00040 void best_config_verification();
00041 int nbconflicts_partialconfig(Configuration* configuration,int length, int carclass);
00042 int chose_bestpermutation(Configuration* configuration, CarseqMove* move);
00043
00044 int partialconflicts(Configuration* configuration,int var1,int var2);
00045 int partialinitconflicts(Configuration* configuration,int var1,int var2);
00046 };
00047
00048
00049
00050
00052 class CarseqConfiguration : public Configuration
00053 {public :
00054 int nbopt;
00055 int nbcarclasses;
00056 int trynumber;
00057
00058 int* conflictingvar;
00059 int** tabconflicts;
00060 CarseqConfiguration(int nbvar,int nbopt);
00061 ~CarseqConfiguration();
00062 void copy_element ( Configuration* config2);
00063 void init_conflicts();
00064 };
00065
00066
00068 class CarseqMove: public SwapMove
00069 {public:
00070 int nbopt;
00071 int nbvar;
00072
00073
00074 CarseqMove(int nbopt,int nbvar);
00075 ~CarseqMove();
00076
00077 int blocsizemax(Configuration* configuration, Carseq* problem);
00078
00079 };
00080
00081
00082 Carseq* carseqproblem(ifstream& file);
00083
00084 int carseq(int argc, char** argv,int tuningmode);