Bonjour,

Je suis en train de programmer le Tabu search et selon les paramètres de l'application j'ai la notion d'un chemin critique:

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 (dans un diagramme de GANTT).

J'ai testé ce code et je ne trouve plus de solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    // chaque opération est caractérisée par un num_job, num_operation, num ressource, date de début et durée d'exécution
     static void explore (int k, int j, int date_debut)
     {
        int destination = 26, i=0 ;
        int solution_initiale[][] = {{2,1,2,10,0},{1,1,1,12,0},{1,2,2,10,12},{3,1,3,10,0},{3,2,2,2,22},{1,3,3,4,22}, {3,3,2,2,24}, {2,2,3,7,10},{2,3,1,9,17}};
        int nbre_oper = 8, s;
        boolean taboo [][]= new boolean [8][2];
        int chemin_tab[][]= new int[8][2];
        if (solution_initiale[k][4] == date_debut)
        {
            if (solution_initiale[k][4]+ solution_initiale[k][3] == destination)
            {
                for (s=0;s<8;s++)
                {
                    System.out.print(chemin_tab[s][0]+""+chemin_tab[s][1]+"--");
                    return;
                }
            }
            else
            {  
                taboo[i][0] = true; taboo[i][1]= true;
                while (i<8)
                { 
                    if (solution_initiale[k][4] == solution_initiale[i][4]+ solution_initiale[i][3] )
                    {
                        chemin_tab[j][0]= solution_initiale[k][0];
                        chemin_tab[j][1]= solution_initiale[k][1];
                        j++;
 
                        date_debut = solution_initiale[k][4]+ solution_initiale[k][3];
 
                        explore (k,j, date_debut);
                    }
                    i++;
                }
                taboo[i][0] = true; taboo[i][1]= true;
            }
        }  
    }
Quelqu'un saurait-il m'expliquer comment faire ?

Merci d'avance pour votre aide.