Modelli e Algoritmi della Logistica Lezione – 15 Metodo di Ascesa Duale ANTONIO SASSANO Università di Roma“La Sapienza” Dipartimento di Informatica e Sistemistica Roma, 25-11-01
Metodo di Ascesa Duale: Esempio [cij + uij] = - max Vk=3 - arg max Vk=5 il minimo della riga 5 deve essere incrementato di 3 D = [ 4 3 1 4 7 ] Vk=min(Dj(k) ,dk) f = [ 4 3 1 4 7 ] ukj(k)= u52 = u52+3
Metodo di Ascesa Duale: Esempio [cij + uij] = D = [ 4 0 1 4 7 ] Vk=min(Dj(k) ,dk) f = [ 4 3 1 4 7 ] - max Vk=1 il minimo della riga 1 deve essere incrementato di 1 - arg max Vk=1 ukj(k)= u14 = u14+1
Metodo di Ascesa Duale: Esempio [cij + uij] = D = [ 4 0 1 3 7 ] Vk=min(Dj(k) ,dk) f = [ 4 3 1 4 7 ] - max Vk=1 il minimo della riga 2 deve essere incrementato di 1 - arg max Vk=2 ukj(k)= u24 = u24+1
Metodo di Ascesa Duale: Esempio [cij + uij] = D = [ 4 0 1 2 7 ] Vk=min(Dj(k) ,dk) f = [ 4 3 1 4 7 ] - max Vk=1 il minimo della riga 3 deve essere incrementato di 1 - arg max Vk=3 ukj(k)= u34 = u34+1
Metodo di Ascesa Duale: Esempio [cij + uij] = D = [ 4 0 1 1 7 ] Vk=min(Dj(k) ,dk) f = [ 4 3 1 4 7 ] - max Vk=1 il minimo della riga 4 deve essere incrementato di 1 - arg max Vk=4 ukj(k)= u43 = u43+1
Metodo di Ascesa Duale: Esempio [cij + uij] = D = [ 4 0 0 1 7 ] f = [ 4 3 1 4 7 ] Tutte le righe sono bloccate: LB= å zk=10 kÎ I
Metodo di Ascesa Duale: Osservazione d1 = 0 ….. incrementiamo due minimi di riga contemporaneamente D = [ 4 0 0 1 7 ] z [ 4 0 0 0 6 ] LB= å zk=11 kÎ I
- Ogni riga k ha un insieme dei minimi di riga m(k) (j(k) Î m(k)) PROCEDURA DI ASCESA DUALE [ 4 3 1 4 7 ] Ad un generico passo: - Ogni riga k ha un insieme dei minimi di riga m(k) (j(k) Î m(k)) - k = 2 - m(k) = {4,5} - s(k)= min {ckj+ ukj } minimo successivo della riga k jÎ J-m(k) - s(k) = 4 - dk= s(k) - (ck j(k)+uk j(k)) (max incremento di riga ( se J=m(k))) - dk = 4-2=2 iÎ I - Dm(k) = min { fj - å uij } (massimo incremento di colonna) jÎ m(k) - Dm(k) = min {3,7}
- Incrementa tutti le variabili uk j : jÎ m(k) della quantita’ Vk PROCEDURA DI ASCESA DUALE Ad un generico passo: - Ogni riga k ha un insieme dei minimi di riga m(k) (j(k) Î m(k)) - Una riga e’ BLOCCATA se Dm(k)=0 o dk=0 - Per ogni riga k, poni Vk =min(Dm(k) ,dk) - Scegli un riga k NON BLOCCATA con valore massimo della quantita’ Vk /|m(k)|: - Incrementa tutti le variabili uk j : jÎ m(k) della quantita’ Vk Quando tutte le righe sono bloccate, poni: Zk = (ck j(k)+uk j(k)) per ogni kÎI LB= å zk kÎ I
g(z,u) =å zk=å (ck j(k)+uk j(k)) = å ck j(k)+ å uk j(k) PROCEDURA DI ASCESA DUALE Definizione di una soluzione primale: [ 4 0 0 0 6 ] - Attiva gli impianti J*={ jÎJ: fj = å ukj } kÎ I v =å fj + å (min ckj) jÎ J* kÎ I soluzione primale (“upper bound”) g(z,u) =å zk=å (ck j(k)+uk j(k)) = å ck j(k)+ å uk j(k) kÎ I soluzione duale (“lower bound”)