Ordonnancement de travaux informatique une solution par le

  • Slides: 13
Download presentation
Ordonnancement de travaux informatique une solution par le problème du sac à dos 09.

Ordonnancement de travaux informatique une solution par le problème du sac à dos 09. 03. 2020 Micael Leal

0/1 Knapsack temps: p = [2, 3, 1] importance: w = [4, 5, 3]

0/1 Knapsack temps: p = [2, 3, 1] importance: w = [4, 5, 3] D{knapsack} = 5 3 1 2 solutions: 0 ou 1 (inclus ou pas) D=5 Micael Leal 09. 03. 2020

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1 2 3 4 5 0 0 0 1 (2, 4) 0 2 (3, 5) 0 3 (1, 3) 0 09. 03. 2020 Micael Leal

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1 2 3 4 5 0 0 0 0 4 4 1 (2, 4) 0 2 (3, 5) 0 3 (1, 3) 0 09. 03. 2020 Micael Leal

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1 2 3 4 5 0 0 0 1 (2, 4) 0 0 4 4 2 (3, 5) 0 0 4 5 5 9 3 (1, 3) 0 09. 03. 2020 Micael Leal

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1

Exemple à l‘aide de la méthode de tabulation j (pj, wj) 0 0 1 2 3 4 5 0 0 0 1 (2, 4) 0 0 4 4 2 (3, 5) 0 0 4 5 5 9 3 (1, 3) 0 3 4 7 8 9 09. 03. 2020 Micael Leal

L‘algorithme – partie initialisation function knapsack(max. Temps, importance. Per. Process, time. Per. Process, num.

L‘algorithme – partie initialisation function knapsack(max. Temps, importance. Per. Process, time. Per. Process, num. Elements) { var proc = new Array(num. Elements); for (var i = 0; i <= num. Elements; i++) proc[i] = new Array(max. Temps); for (var i = 0; i <= num. Elements; i++){ for (var w = 0; w <= max. Temps; w++){ if ((i == 0) || (w == 0)) proc[i][w] = 0; else if (importance. Per. Process[i-1] <= w) proc[i][w] = Math. max(time. Per. Process[i-1] + proc[i-1][w-importance. Per. Process[i-1]], else proc[i-1][w]); proc[i][w] = proc[i-1][w]; } } return proc; } Complexite en temps : O(n⋅max. Temps) Formule générale: D[j, w] = max{D[j - 1, w], D[j – 1, w - w[j]] + p[j]} Micael Leal 09. 03. 2020

L‘algorithme – partie “backtracking” function backtrack(temps. Maximal, proc, array. Of. Time. Per. Process){ var

L‘algorithme – partie “backtracking” function backtrack(temps. Maximal, proc, array. Of. Time. Per. Process){ var d = temps. Maximal; var i = array. Of. Time. Per. Process. length - 1; while(i >= 0){ if(d - array. Of. Time. Per. Process[i] >= 0 && proc[i+1][d] != proc[i][d]){ d = d - array. Of. Time. Per. Process[i]; } i--; } } Complexite en temps : O(log n) Micael Leal 09. 03. 2020

Merci pour votre attention Micael Leal 09. 03. 2020

Merci pour votre attention Micael Leal 09. 03. 2020

Questions et réponses • Branch & Bound != Programmation dynamique ØStructure d‘arbre => pas

Questions et réponses • Branch & Bound != Programmation dynamique ØStructure d‘arbre => pas de sous-problème qui sont pris en considération. ØLors de la minimisation, on doit inverser (négatif) les poids afin de retrouver le maximum. • Solution recherchée: Single Machine to Minimize Total Weighted Completion Time (SWPT). • Une recursion peut être écrite sous forme de boucle. • L‘algorithme est pseudo-polynomial, car il dépend de l‘entrée de l‘utilisation et de combien d‘itération cela nécessite. Dans le cas extrême, on se rapproche du temps exponentiel. Micael Leal 09. 03. 2020

Informations supplémentaires • Problème de la solution programmation dynamique avec le sac à dos

Informations supplémentaires • Problème de la solution programmation dynamique avec le sac à dos est qu’on ne peut pas utiliser des valeurs à virgules. • La variante fractionnaire (Ang. : Greedy approach) est le problème que le précédent, sauf qu‘on peut prendre qu‘une fraction d‘un objet et n‘est plus obligé de prendre l‘objet tout entier comme précédemment, ou de le laisser. • La méthode Brand Bound dans les pires cas, il faut parcourir tout l’arbre afin de trouver la solution ce qui nécessite plus de temps. La visualisation n’est pas pour le Power. Point avec plusieurs objets devient illisible. • Temps pour les algorithms: • Greedy approach - O(n log n) • Dynamic Programming – O(n ⋅ V) • Branch and Bound - O(2 n) Micael Leal 09. 03. 2020

L‘algorithme – partie initialisation (recursive) function recursive. KS(max. Temps, importance. Per. Process, time. Per.

L‘algorithme – partie initialisation (recursive) function recursive. KS(max. Temps, importance. Per. Process, time. Per. Process, num. Elements){ if (num. Elements == 0 || max. Temps == 0) return 0; if (importance. Per. Process[num. Elements-1] > max. Temps) return recursive. KS(max. Temps, importance. Per. Process, time. Per. Process, num. Elements-1); else return Math. max(time. Per. Process[num. Elements-1] + recursive. KS(max. Temps-importance. Per. Process[num. Elements-1], importance. Per. Process, time. Per. Process, num. Elements-1), recursive. KS(max. Temps, importance. Per. Process, time. Per. Process, num. Elements-1)); } Micael Leal 09. 03. 2020

http: //www. enseignement. polytechnique. fr/informatique/INF 431/X 12 -2013 -2014/Amphis/08 Prog. Dyn/Pr. Dyn 4. pdf

http: //www. enseignement. polytechnique. fr/informatique/INF 431/X 12 -2013 -2014/Amphis/08 Prog. Dyn/Pr. Dyn 4. pdf http: //www. unit. eu/cours/Ens. ROtice/module_me/co/Mon_Module_19. html https: //www. youtube. com/watch? v=8 Lus. JS 5 -AGo&fbclid=Iw. AR 3 i. Qz 3 XZl 0 z. N 6 ti 8 JCh. CUB 0 e. FQg. Fvlt 4 Ly. LQW 6 rw. Jo 4 b. VLOi 1 s. Ik. CWPw 4 http: //paper. ijcsns. org/07_book/20160701. pdf https: //www. youtube. com/watch? v=n. Lmhm. B 6 Nzc. M Sources Micael Leal 08. 03. 2019