Erreur que j'arrive plus a trouver depuis des semaines
tastousa
Messages postés9Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention 8 mai 2012
-
26 mars 2012 à 18:39
Bonsoir,
j'ai un problème d'ordonnancement et je représente la solution par une matrice
int solution_initiale[][] = {{2,1,1,12,0},{1,1,2,8,0},{1,2,2,2,8},{3,1,3,12,0},{3,2,3,12,12},{1,3,2,6,10}, {3,3,1,12,24}, {2,2,3,11,24},{2,3,3,10,35}};
chaque ligne est une opération designer par leur num job , num opération , num ressource sur laquelle s’exécute , durée d’exécution et enfin leur date de début.
Selon ma problématique je dois trouver tous les chemins critiques dans une solution.
Un chemin critique d'une solution est un chemin dont la longueur est égale à la longueur de l'ordonnancement et est constitué par des opérations reliées. Reliées c'est-à-dire que la fin de chaque opération soit égale à la date de début de l'opération suivante.
Il faut que je cherche tous les chemins critiques dans une solution !
j'ai tester ce code il marche bien mais je ne trouve plus la dernière opération!! je ne sais pas pourquoi il ne me l'affiche plus
int solution_initiale[][] = {{2,1,1,12,0},{1,1,2,8,0},{1,2,2,2,8},{3,1,3,12,0},{3,2,3,12,12},{1,3,2,6,10}, {3,3,1,12,24}, {2,2,3,11,24},{2,3,3,10,35}};
int date_debut;
boolean test = true;
ArrayList> chemin_critique = new ArrayList>();
boolean cout = true;
while (k<nbre_oper)
{int t =0;
int tab_temp[]= new int[5];
if (solution_initiale[k][4]== 0)
{
for ( t=0; t<5;t++)
{
tab_temp[t]= solution_initiale[k][t];
}
ArrayList temp_princ = new ArrayList();
temp_princ.add(tab_temp) ;
chemin_critique.add(temp_princ);
taille = chemin_critique.size();
}
k++;
}
int tab[] = new int[5];
for (i=0; i<taille; i++)
{
ArrayList temp2 = chemin_critique.get(i);
for (j=0; j< temp2.size(); j++)
{
tab = chemin_critique.get(i).get(j);
date_debut = tab[3]+ tab[4];
if ( date_debut > 45)
{
cout = false;
System.out.println("date de debu = 45 pour uen fois");
}
else cout = true;
k=0;
while (k<9 && cout)
{
if (solution_initiale[k][4] == date_debut && test )
{
int tab_temp[]= new int[5];
int t=0;
for ( t=0; t<5;t++)
{
tab_temp[t]= solution_initiale[k][t];
}
temp2.add(tab_temp) ;
test = false;
k++;
}
else if (solution_initiale[k][4] == date_debut && test== false )
{
int tab_temp[]= new int[5];
int t=0;
for ( t=0; t<5;t++)
{
tab_temp[t]= solution_initiale[k][t];
}
ArrayList temp_second = new ArrayList();
temp_second = new ArrayList(temp2) ;
temp_second.set(temp2.size() -1, tab_temp) ;
chemin_critique.add(temp_second);
k++;
}
else k++;
}
test = true;
cout = true;
}
}
// l' afiichage
taille = chemin_critique.size();
int m =1;
for (i=0; i<taille; i++) {
System.out.println ("chemin"+m+" : ");
ArrayList<?> temp2 = chemin_critique.get(i);
for (j=0; j< temp2.size(); j++) {
tab = chemin_critique.get(i).get(j);
System.out.print(Arrays.toString(tab));
}
System.out.println("\n");
m++;
}
normalement après l’opération 22 il affiche l’opération 23 puisque leur date de début égale a la somme de date de début et le durée d’exécution de l’opération 22 !
SVP vos conseils!!
A voir également:
Erreur que j'arrive plus a trouver depuis des semaines