Problem najtańszego pokrycia ABCDEFI 1 1 1 II 1 1 III 1 1 IV 1 1 V 1

Transkrypt

Problem najtańszego pokrycia ABCDEFI 1 1 1 II 1 1 III 1 1 IV 1 1 V 1
Problem najtańszego pokrycia
A
1
I
II
III
IV
V
VI
B
1
1
1
D
E
F
6
1
1
1
8
1
3
C
D
E
F
1
1
1
1
1
7
1
1
1
1
4
1
3
1
1
1
1
4
lokalizacja
S1
S2
S3
S4
S5
I
II
III
IV
V
VI
C
1
5
Koszt
4
7
11
6
10
A
1
1
1
1
Okręgi obsługiwane
L1,l3,l5,l7,l8,l10,l12,l14
L2,l4,l11
L1,l6,l8,l9,l13,l14,l15
L1,l2,l4,l8,l10,l11,l14
L3,l5,l6,l7,l9,l12,l13,l15
B
1
1
1
4
7
5
1
1
1
6
Algorytm heurystyczny: liczymy stosunek liczby 1 w macierzy/koszt, wybieramy kolumnę,
gdzie ten iloraz jest najwyższy kolumnę i aktualizujemy macierz, liczymy nowe ilorazy liczby 1 w
macierzy/koszt itd.
Algorytm dokładny: zastosowanie w dowolnej kolejności, dopóki się da, jednej z reguł,
potem pełen przegląd.
1. Jeśli w danym wierszu jest dokładnie jedna jedynka, wybierz odpowiednią
kolumnę, zaktualizuj macierz
2. Jeśli dany wiersz jest „Większy lub równy” niż inny, wyeliminuj go
3. Jeśli dana kolumna jest „mniejsza lub równa” i nietańsza niż inna, wyeliminuj ją
4. Jeśli w danej kolumnie są same 0, wyeliminuj ją
5. Jeśli w danym wierszu są same 0, nie ma rozwiązania – KONIEC
Sformułowanie jako zadanie programowania liniowego: zmienne decyzyjne – 0-1 – dla
każdej kolumny (wybrana – niewybrana), f. celu – koszty.