Un approccio esatto per il ob shop Riferimenti lezione: rucker, P., Jurisch,. & Sievers,. (994) branch and bound algorithm for the ob scheduling shop problem, Discrete pplied Mathematics, Vol. 49, No. -3, pp. 07-27
Problema ob shop scheduling (JSS) Nel problema di ob shop, n obs devono essere processati su m macchine Il processamento di un ob su una macchina è detto operazione i ssunzioni fatte per il problema: Una macchina può processare al più un ob alla volta; Un operazione non può essere interrotta (no preemption); Un ob consiste al più di n operazioni; L ordine di processamento del ob è dato; Il sequenziamento delle operazioni sulle macchine deve essere determinato in modo tale da minimizzare il makespan (i.e., il massimo tempo di competamento Cmax) 2
Es: rucker 94: Definizioni Soluzione = schedule ammissibile S Grafo disgiuntivo G(S) = (V, C U S) con V = set nodi; C = set archi congiuntivi; D = set archi disgiuntivi; S = selezione ammissibile archi disg. P = critical path in G(S) e L(S) = lunghezza del critical path P blocco = sequenza di nodi successivi in P detta u,, u k P che rispetta due condizioni: ) la sequenza contiene almeno due nodi 2) la sequenza rappresenta un numero massimo di op. P che devono essere processate sulla stessa macchina 0 o 2 3 3
94: Teorema sul branching scheme () Hp: Sia S una selezione completa ovvero una soluzione del ob shop scheduling problem. Se esiste un altra selezione S tale che L(S ) < L(S) allora almeno un operazione di un blocco in G(S) deve essere processata prima della prima op. oppure dopo dell ultima op. del corrispondente blocco. Dim: Sia P = (0, u, u 2,..., u m,..., u k, u 2k,..., u mkk, o) un critical path con k blocchi in G(S) = (V, C U S) ssumiamo, per contraddizione, che esiste una selezione completa S con L(S ) < L(S) e nessuna op. di S è processata prima della prima op. oppure dopo dell ultima op. del blocco G(S ) = (V, C U S ) contiene il percorso: (0, u, v 2,..., v m-, u m,..., u k, v 2k,..., v mk-k, u mkk, o) 4
94: Teorema sul branching scheme (2) Dim. (seguito): G(S ) = (V, C U S ) contiene il percorso: (0, u, v 2,..., v m-, u m,..., u k, v 2k,..., v mk-k, u mkk, o) dove la sequenza v 2,..., v m- è una permutazione della sequenza u 2,..., u m- con =,..., k Dato che, per ipotesi, v = u e v m = u m per =,..., k allora L(S ) =,..., k i=, =,..., m P v i = P = L(S) =,..., k i=, =,..., m da cui è contraddetta l ipotesi che poneva L(S ) < L(S) si conclude quindi che L(S ) L(S). u i 5
94: ranch and bound () Dal teorema si ha che date due selezioni complete S e S con L(S ) < L(S) allora vale una delle due condizioni:. lmeno una op. di un blocco in G(S) è processata prima delle altre op. del blocco in G(S ), oppure 2. lmeno una op. di un blocco in G(S) è processata dopo delle altre op. del blocco in G(S ) ranching scheme: Prendiamo un nodo r dell albero di ricerca ed una soluzione y Y(r) (sottoalbero di r contenente tutte le permutazioni degli archi non selezionati a partire dalla selezione parziale contenuta in r) Sia S la selezione completa corrispondente alla soluzione y 6
94: ranch and bound (2) Si ha G(S) con un critical path composto da,..., k blocchi Per il blocco -esimo : u, u 2,..., u m si ha: E = \{u } = set before candidates E = \{u m } = set after candidates Nell albero un nodo successore s del nodo r si ottiene così: un op. l E è mossa prima delle altre op. in {l i : i \{l}} oppure un op. l E è mossa dopo le altre op. in {i l : i \{l}} Il nodo s si chiama immediato successore del nodo r 7
94: ranch and bound (3) Se una coppia disgiuntiva viene selezionata nei due modi possibili si hanno due successori immediati s e s di r per cui Y(s) Y(s ) = (sono i due figli di uno stesso padre) Ogni nodo r corrisponde al grafo G(FD r ) = G(V, C U FD r ) con FD r = insieme degli archi disgiuntivi selezionati al nodo r ovvero il nodo r contiene tutte le soluzioni Y(r) a partire da FD r quindi da r un branching si ottiene generando tutte le permutazioni E,..., E 2k di E e E per i k blocchi 8
94: ranch and bound (4) Un successore s di r avrà fissati gli archi disgiuntivi in FD r F = {u i : i = u 2,..., u m } per ogni set predecess. E L = {i u m : i = u,..., u m- } per ogni set success. E da cui per ogni op. l E si genera un nodo dell albero di ricerca: archi disgiuntivi in s = FD s = FD r U S l con S l = U F i U U L i U {l i : i \{l}} E i < E e archi disgiuntivi in s = FD s = FD r U S l con S l = U F i U U L i U {i l : i \{l}} E i < E E i < E E i < E 9
94: ranch and bound (5) Esempio situazioni con/senza cicli: 2 3 4 0 o 2 E = {2, 3, 4} nalizziamo i possibili scambi assumendo 4 dopo tutte le op. S 2 2 3 4 Ok, no cicli S 3 3 2 4 Ok, no cicli S 4 4 2 3 Cicli! : Y(s) = 0
94: ranch and bound (6) Procedura branch and bound (r) calcola una soluzione S Y(r) usando un euristica se Cmax (S) < U allora U = Cmax (S) calcola un critical path P e i blocchi del critical path P calcola i sets E e E while (esiste un op. i E v con =,, k) elimina i da E v fissa gli archi disg. per il nodo successore s calcola L(s) se L(s) < U allora branch and bound (s) r = selezione parziale degli archi disgiuntivi Y(r) = tutte le possibili combinazioni degli archi disg. non selezionati S = selezione completa degli archi disgiuntivi
94: ranch and bound (7) La ricerca in un nodo dell albero può terminare per le ragioni:. (nodo iniziale) Il critical path della soluzione iniziale non ha blocchi 2. L(s) U (in caso di cicli nel grafo L(s) = ) 3. Tutti i sets E e E sono Il branch and bound 94 usa un euristica per ordinare le operazioni i E v (ovvero i successori del nodo r dell albero): Si ordinano i candidati secondo teste non-decrescenti dei before-candidates e code non-decrescenti degli after-candidates L, teste e code sono gestite usando le tecniche di implicazione (selezioni immediate) sviluppate da Carlier and Pinson 2