Main Page | Class Hierarchy | Class List | File List | Class Members

carseq.h

00001 class CarseqMove;
00002 
00003 /* le pb d'ordonnancement d'une chaine de montage de voitures traité en Max-CSP : on compte pour chaque option le nombre de 
00004 séquences violant la contrainte de l'option (au plus maxcars[i] pour blocsize[i] ) */
00007 class Carseq: public CSProblem
00008 { public :
00009   Carseq(int nbcars,int nbclasses);
00010 /* le nombre d'options */
00012   int nbopt;
00013 /* le nombre de classes de voitures */
00015   int nbclasses;
00016 /* tableau des capacités par option : nombre maximum de voitures (maxcars) dans une séquence de taille (blocsize) */
00017   int* maxcars;
00018 /* tableau des capacités par option : nombre maximum de voitures (maxcars) dans une séquence de taille (blocsize) */
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 /* Configuration pour le pb d'ordonnancement de voitures : une configuration est codée comme une permutation */
00052 class CarseqConfiguration : public Configuration
00053 {public :
00054 int nbopt;
00055 int nbcarclasses;
00056 int trynumber;
00057 // int* optionconflicts;
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 /* Mouvement : un échange de deux voitures de classes différentes */
00068 class CarseqMove: public SwapMove
00069 {public:
00070 int nbopt;
00071 int nbvar;
00072 // int* optionconflicts;
00073 // int* conflictingvar;
00074 CarseqMove(int nbopt,int nbvar);
00075 ~CarseqMove();
00076 // void copymove(Move* move1);
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);

Generated on Wed Sep 15 17:58:38 2004 for INCOP by doxygen 1.3.5