• Tidak ada hasil yang ditemukan

Metode Dijkstra

Dalam dokumen RISET OPERASI DAN KOMPUTASI (Halaman 117-0)

BAB 6 Masalah Optimisasi Jaringan

6.2 Masalah Jarak Terpendek

6.2.1 Metode Dijkstra

Metode Dijkstra digunakan jika kita ingin menentukan jarak terpendek dari satu titik asal (home) ke titik tertentu.

Tahap Awal (Inisialisasi)

Sebelum memulai metode Dijkstra, terlebih dahulu siapkan tabel yang terdiri dari node tujuan, node perantara dan jarak. Variabel j adalah node tujuan. Perhitungan bobot ui+ dij adalah jarak kumulatif dari titik i ke titik j.

Tetapkan dua himpunan titik H = [] dan C = [a0, a1, . . . , an]. Kemudian pilih titik start (misal a0) dan tetapkan H = H + {a0} dan C = C − {a0}.

Tahap Optimisasi

1. Cari titik yang bertetangga dengan a0.

2. Hitung jarak kumulatif pada titik yang bertetangga dengan a0.

3. Nilai jarak kumulatif paling minimum diberi keterangan tetap, sedangkan yang lainnya diberi keterangan sementara.

4. Update H = H + {min(adj(a0))} dan C = C − {min(adj(a0))}.

5. Ulangi lagi pada langkah mencari titik yang bertetangga.

Tahap Pemberhentian

Tahap pemberhentian terjadi ketika semua nilai keterangan adalah tetap.

Contoh :

Seorang pegawai melakukan perjalanan dinas menggunakan mobil dari kantornya di titik O menuju kantor dinas di titik T. Peta perjalanan dari titik O ke titik T adalah seperti Gambar 6.2.1. Angka yang tertera pada gambar adalah jarak antara kedua titik. Pegawai tersebut ingin mencari jarak terpendek supaya pengeluaran bensin minimum. Tentukan jarak terpendek dari titik O ke titik T.

Gambar 6.2.1. Contoh Jaringan Metode Dijkstra

Jawab :

Untuk memudahkan perhitungan, dapat menggunakan tabel iterasi sebagai berikut : Iterasi 1

adj(O) = {A, B, C}

6.2. MASALAH JARAK TERPENDEK 109 Node Tujuan [Jarak, Node Perantara] Keterangan

j [ui+ dij, i]

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

A [0+2,O]=[2,O] Tetap

B [0+5,O]=[5,O] Sementara

[2+2,A]=[4,A] Tetap

C [0+4,O]=[4,O] Sementara → Tetap *

[4+1,B]=[5,B] Sementara

Minimum=C uC = 4

H = {O, A, B, C}

Iterasi 4

adj(C) − H = {O, B, E} − {O, A, B, C} = {E}

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

A [0+2,O]=[2,O] Tetap

B [0+5,O]=[5,O] Sementara

[2+2,A]=[4,A] Tetap

C [0+4,O]=[4,O] Sementara → Tetap

[4+1,B]=[5,B] Sementara

D [2+7,A]=[9,A] Sementara

[4+4,B]=[8,B] Sementara

E [4+3,B]=[7,B] Sementara → Tetap *

[4+4,C]=[8,C] Sementara

F [2+12,A]=[14,A] Sementara

T Minimum=E

uE = 7

H = {O, A, B, C, E}

Iterasi 5

adj(E) − H = {C, B, D, T } − {O, A, B, C, E} = {D, T }

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

A [0+2,O]=[2,O] Tetap

B [0+5,O]=[5,O] Sementara

[2+2,A]=[4,A] Tetap

C [0+4,O]=[4,O] Sementara → Tetap

[4+1,B]=[5,B] Sementara

D [2+7,A]=[9,A] Sementara

[4+4,B]=[8,B] Sementara

[7+1,E]=[8,E] Tetap *

E [4+3,B]=[7,B] Sementara → Tetap

[4+4,C]=[8,C] Sementara

F [2+12,A]=[14,A] Sementara

T [7+7,E]=[14,E] Sementara

Minimum=D uD = 8

H = {O, A, B, C, E, D}

6.2. MASALAH JARAK TERPENDEK 111 Iterasi 6

adj(D) − H = {A, B, E, T } − {O, A, B, C, E, D} = {T }

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

A [0+2,O]=[2,O] Tetap

B [0+5,O]=[5,O] Sementara

[2+2,A]=[4,A] Tetap

C [0+4,O]=[4,O] Sementara → Tetap

[4+1,B]=[5,B] Sementara

D [2+7,A]=[9,A] Sementara

[4+4,B]=[8,B] Sementara

[7+1,E]=[8,E] Tetap

E [4+3,B]=[7,B] Sementara → Tetap

[4+4,C]=[8,C] Sementara

F [2+12,A]=[14,A] Sementara

T [7+7,E]=[14,E] Sementara

[8+5,D]=[13,D] Tetap * Minimum=T

uD = 13

H = {O, A, B, C, E, D, T } Kesimpulan :

Jadi jarak terpendek dari titik O menuju titik T adalah 13, dengan rute : O → A → B → E → D → T

2 + 2 + 3 + 1 + 5 = 13 atau

O → A → B → D → T 2 + 2 + 4 + 5 = 13 Contoh :

Seorang turis melakukan perjalanan wisata dari hotel di titik A menuju tempat wisata di titik E. Peta perjalanan dari titik A ke titik E adalah seperti Gambar 6.2.1 dimana pada jalan yang menghubungkan titik B dengan titik D adalah jalan searah. Angka yang tertera pada gambar adalah jarak antara kedua titik. Turis tersebut tersebut ingin mencari rute terpendek pada saat berangkat dari hotel di titik A menuju tempat wisata di titik E dan pada saat pulang dari tempat wisata di titik E menuju hotel di titik A.

a. Tentukan jarak terpendek dari titik A ke titik E.

b. Tentukan jarak terpendek dari titik E ke titik A.

Gambar 6.2.1. Contoh Jaringan Metode Dijkstra dengan Terdapat Jarak Searah

Jawab :

a. Jarak terpendek dari hotel di titik A menuju tempat wisata di titik E.

Untuk memudahkan perhitungan, dapat menggunakan tabel iterasi sebagai berikut : Iterasi 1

adj(A) = {B, C}

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

B [0+3,A]=[3,A] Tetap *

C [0+10,A]=[10,A] Sementara

D E Minimum=B

uB = 3 H = {A, B}

Iterasi 2

adj(B) − {H} = {A, D} − {A, B} = {D}

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

B [0+3,A]=[3,A] Tetap

C [0+10,A]=[10,A] Sementara

D [3+5,B]=[8,B] Tetap *

E Minimum=D

uD = 8

H = {A, B, D}

Iterasi 3

adj(D) − {H} = {C, E} − {A, B, D} = {C, E}

6.2. MASALAH JARAK TERPENDEK 113 Node Tujuan [Jarak, Node Perantara] Keterangan

j [ui+ dij, i]

B [0+3,A]=[3,A] Tetap

C [0+10,A]=[10,A] Sementara → Tetap * [8+6,D]=[14,D] Sementara

D [3+5,B]=[8,B] Tetap

E [8+4,D]=[12,D] Sementara

Minimum=C uC = 10

H = {A, B, D, C}

Iterasi 4

adj(C) − {H} = {A, D, E} − {A, B, D, C} = {E}

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

B [0+3,A]=[3,A] Tetap

C [0+10,A]=[10,A] Sementara → Tetap [8+6,D]=[14,D] Sementara

D [3+5,B]=[8,B] Tetap

E [8+4,D]=[12,D] Sementara → Tetap * [10+15,C]=[25,C] Sementara Minimum=E

uE = 12

H = {A, B, D, C, E}

Kesimpulan :

Jadi jarak terpendek dari hotel di titik A menuju tempat wisata di titik E adalah 12, dengan rute : A → B → D → E

3 + 5 + 4 = 12

b. Jarak terpendek dari tempat wisata di titik E menuju hotel di titik A.

Untuk memudahkan perhitungan, dapat menggunakan tabel iterasi sebagai berikut : Iterasi 1

adj(E) = {D, C}

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

D [0+4,E]=[4,E] Tetap *

C [0+15,E]=[15,E] Sementara

B A

Minimum=D uD = 4 H = {E, D}

Iterasi 2

adj(D) − {H} = {C, E} − {E, D} = {C}

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

D [0+4,E]=[4,E] Tetap

C [0+15,E]=[15,E] Sementara

[4+6,D]=[10,D] Tetap * B

A Minimum=C

uC = 10 H = {E, D, C}

Iterasi 3

adj(C) − {H} = {A, D, E} − {E, D, C} = {A}

Node Tujuan [Jarak, Node Perantara] Keterangan j [ui+ dij, i]

D [0+4,E]=[4,E] Tetap

C [0+15,E]=[15,E] Sementara

[4+6,D]=[10,D] Tetap B

A [10+10,C]=[20,C] Tetap *

Minimum=A uA= 20

H = {E, D, C, A}

Kesimpulan :

Jadi jarak terpendek dari tempat wisata di titik E menuju hotel di titik A adalah 20, dengan rute : E → D → C → A

4 + 6 + 10 = 20 6.2.2 Metode Floyd

Metode Floyd merupakan perluasan dari metode Dijkstra. Metode Floyd digunakan jika kita ingin menentukan jarak terpendek antar titik.

6.2. MASALAH JARAK TERPENDEK 115 Tahap Awal (Inisialisasi)

Sebelum memulai metode Floyd, terlebih dahulu siapkan matriks seperti Gambar 6.2.2. Jumlah baris menyatakan jumlah node asal. Jumlah kolom menyatakan jumlah node tujuan. Variabel dij(i = 1, 2, . . . , n; j = 1, 2, . . . , n) adalah jarak dari node i ke node j. Jika terdapat dua node yang tidak terhubung, maka ditulis ∞.

Tahap Optimisasi

1. Menentukan Baris Pivot dan Kolom Pivot. Tentukan baris pivot pada baris i = 1 dan kolom pivot pada kolom i = 1.

2. Menentukan Baris Pivot dan Kolom Pivot yang Bersesuaian. Pada element matriks yang bukan anggota baris pivot atau kolom pivot, tentukan baris pivot dan kolom pivot yang bersesuaian.

3. Menentukan Jarak Minimum. Jumlahkan baris pivot dan kolom pivot tersebut. Kemu-dian tentukan jarak paling minimum dengan min(dik+dkj, dij), (i = 1, 2, . . . , n; j = 1, 2, . . . , n) Jika baris atau kolom yang bersesuian memiliki nilai ∞, maka abaikan dan beri nilai ∞.

4. Ulangi lagi pada langkah menentukan baris pivot dan kolom pivot untuk i = i + 1.

Tahap Pemberhentian

Tahap pemberhentian terjadi ketika baris pivot dan kolom pivot sudah mencapai i = n.

Contoh :

Buatlah tabel jarak terpendek menggunakan metode Floyd.

Gambar 6.2.2. Contoh Jaringan Metode Floyd

Jawab :

Masukkan jarak antar titik ke dalam tabel Floyd.

Gambar 6.2.2. Tabel Floyd

Iterasi 1

Baris dan Kolom Pivot : Baris 1 Kolom 1

Gambar 6.2.2. Itarasi 1 Floyd

dengan jarak minimum sebagai berikut :

d22= − d23= min(∞, 13) = 13 d24= 5 d25= ∞ d32= min(∞, 13) = 13 d33= − d34= 6 d35= 15

d42= 5 d43= 6 d44= − d45= 4

d52= ∞ d53= ∞ d54= 4 d55= −

Iterasi 2

Baris dan Kolom Pivot : Baris 2 Kolom 2

Gambar 6.2.2. Itarasi 2 Floyd

dengan jarak minimum sebagai berikut :

d11= − d13= min(10, 16) = 10 d14= min(∞, 8) = 8 d15= ∞ d31= min(10, 16) = 10 d33= − d34= min(6, 18) = 6 d35= 15 d41= min(∞, 8) = 8 d43= min(6, 18) = 6 d44= − d45= 4

d51= ∞ d53= ∞ d54= 4 d55= −

6.2. MASALAH JARAK TERPENDEK 117 Iterasi 3

Baris dan Kolom Pivot : Baris 3 Kolom 3

Gambar 6.2.2. Itarasi 3 Floyd

dengan jarak minimum sebagai berikut :

d11= − d12= min(3, 23) = 3 d21= min(3, 23) = 3 d22= − d41= min(∞, 8, 16) = 8 d42= min(5, 19) = 5

d51= ∞ d52= ∞

d14= min(∞, 8, 16) = 8 d15= min(∞, 25) = 25 d24= min(5, 19) = 5 d25= min(∞, 28) = 28 d44= − d45= min(4, 21) = 4

d54= 4 d55= −

Iterasi 4

Baris dan Kolom Pivot : Baris 4 Kolom 4

Gambar 6.2.2. Itarasi 4 Floyd

dengan jarak minimum sebagai berikut :

d11= − d12= min(3, 23, 13) = 3 d21= min(3, 23, 13) = 3 d22= −

d31= min(10, 16, 14) = 10 d32= min(∞, 13, 11) = 11 d51= min(∞, 12) = 12 d52= min(∞, 9) = 9

d13= min(10, 16, 14) = 10 d15= min(∞, 25, 12) = 12 d23= min(∞, 13, 11) = 11 d25= min(∞, 28, 9) = 9

d33= − d35= min(15, 10) = 10 d53= min(∞, 10) = 10 d55= −

Iterasi 5

Baris dan Kolom Pivot : Baris 5 Kolom 5

Gambar 6.2.2. Itarasi 5 Floyd

dengan jarak minimum sebagai berikut :

d11= − d12= min(3, 23, 13, 21) = 3 d21= min(3, 23, 13, 21) = 3 d22= −

d31= min(10, 16, 14, 22) = 10 d32= min(∞, 13, 11, 19) = 11 d41= min(∞, 8, 16, 16) = 8 d42= min(5, 19, 13) = 5

d13= min(10, 16, 14, 22) = 10 d14= min(∞, 8, 16, 16) = 8 d23= min(∞, 13, 11, 19) = 11 d24= min(5, 19, 13) = 5

d33= − d34= min(6, 18, 14) = 6 d43= min(6, 18, 14) = 6 d44= −

Sehingga diperoleh tabel jarak terpendek sebagai berikut :

Gambar 6.2.2. Tabel Jarak Terpendek

6.3. MASALAH POHON PEMBENTANG MINIMUM 119

6.3 Masalah Pohon Pembentang Minimum

6.3.1 Pengertian Pohon dan Pohon Merentang

Pohon adalah jaringan tak berarah dan tidak memiliki cycle. Contoh pohon dan bukan pohon adalah seperti Gambar 6.3.1.

Gambar 6.3.1. Pohon dan Bukan Pohon

Pohon merentang adalah bagian dari jaringan dimana semua titiknya sama. Contoh pohon mem-bentang adalah sepeti Gambar 6.3.1.

Gambar 6.3.1. Pohon Membentang

Pohon merentang minimum adalah bagian dari jaringan dimana semua titiknya sama dan memiliki jumlah bobot minimum.

6.3.2 Metode Kruskal

Metode Kruskal digunakan untuk mencari pohon merentang minimum.

Tahap Awal (Inisialisasi)

Sebelum memulai metode Kruskal, terlebih dahulu siapkan jaringan seperti Gambar 6.3.2. Garis pada jaringan digambar putus-putus. Angka yang tercantum pada garis merupakan bobot kedua titik.

Tetapkan dua himpunan garis H = [] dan C = [a0, a1, . . . , an].

Kemudian pilih satu garis (misal a0) dan tetapkan H = H + {a0} dan C = C − {a0}

Tahap Optimisasi

1. Cari titik yang bertetangga dengan H.

2. Hitung jarak pada titik yang bertetangga dengan H.

3. Cari jarak paling minimum.

4. Update H = H + {min(inc(H))} dan C = C − {min(inc(H))}.

5. Ulangi lagi pada langkah mencari titik yang bertetangga dengan H.

Tahap Pemberhentian

Tahap pemberhentian terjadi ketika C2 = [].

Contoh :

Gambar 6.3.2 adalah jarak pada jalan di sebuah taman. Pada taman tersebut akan dipasang kabel yang menghubungkan semua titik. Tentukan panjang kabel minimum yang diperlukan.

Tentukan tahap awal seperti Gambar 6.3.2.

Gambar 6.3.2. Tahap Awal Masalah Pohon Membentang Minimum

Iterasi 1

1. Garis yang bersisian dengan titik O adalah :

{OA, OB, OC} − H = {OA, OB, OC}

= {2, 5, 4}

2. Jarak minimum adalah OA dengan nilai min(2, 5, 4) = 2.

6.3. MASALAH POHON PEMBENTANG MINIMUM 121 3. Hubungkan titik O dengan titik A sehingga H = {OA}.

Gambar 6.3.2. Metode Kruskal Iterasi 1

Iterasi 2

1. Garis yang bersisian dengan titik O,A adalah :

{OA, OB, OC, AB, AD} − H = {AB, AD, OB, OC}

= {2, 7, 5, 4}

2. Jarak minimum adalah AB dengan nilai min(2, 7, 5, 4) = 2.

3. Hubungkan titik A dengan titik B sehingga H = {OA, AB}.

Gambar 6.3.2. Metode Kruskal Iterasi 2

Iterasi 3

1. Garis yang bersisian dengan titik O,A,B adalah :

{OA, OB, OC, AB, AD, BC, BD, BE} − H = {OB, OC, AD, BC, BD, BE}

= {5, 4, 7, 1, 4, 3}

2. Jarak minimum adalah BC dengan nilai min(5, 4, 7, 1, 4, 3) = 1.

3. Hubungkan titik B dengan titik C sehingga H = {OA, AB, BC}.

Gambar 6.3.2. Metode Kruskal Iterasi 3

Iterasi 4

1. Garis yang bersisian dengan titik O,A,B,C adalah :

{OA, OB, OC, AB, AD, BC, BD, BE, CE} − H

= {OB, OC, AD, BD, BE, CE}

= {5, 4, 7, 4, 3, 4}

2. Jarak minimum adalah BE dengan nilai min(5, 4, 7, 4, 3, 4) = 3.

3. Hubungkan titik B dengan titik E sehingga H = {OA, AB, BC, BE}.

6.3. MASALAH POHON PEMBENTANG MINIMUM 123

Gambar 6.3.2. Metode Kruskal Iterasi 4

Iterasi 5

1. Garis yang bersisian dengan titik O,A,B,C,E adalah :

{OA, OB, OC, AB, AD, BC, BD, BE, CE, ED, ET } − H

= {OB, OC, AD, BD, CE, ED, ET }

= {5, 4, 7, 4, 4, 1, 7}

2. Jarak minimum adalah ED dengan nilai min(5, 4, 7, 4, 4, 1, 7) = 1.

3. Hubungkan titik E dengan titik D sehingga H = {OA, AB, BC, BE, ED}.

Gambar 6.3.2. Metode Kruskal Iterasi 5

Iterasi 6

1. Garis yang bersisian dengan titik O,A,B,C,E,D adalah :

{OA, OB, OC, AB, AD, BC, BD, BE, CE, ED, ET, DT } − H

= {OB, OC, AD, BD, CE, ET, DT }

= {5, 4, 7, 4, 4, 7, 5}

2. Jarak minimum adalah OC, BD, CE dengan nilai 4. Namun karena dalam pohon tidak boleh memiliki cycle, maka jarak minimum adalah DT dengan nilai 5.

3. Hubungkan titik D dengan titik T sehingga H = {OA, AB, BC, BE, ED, DT }.

Gambar 6.3.2. Metode Kruskal Iterasi 6

6.4 Masalah Arus Maksimum

6.4.1 Metode Ford-Fulkerson

Metode Ford-Fulkerson digunakan untuk mengalirkan arus maksimum dari titik sumber (source) menuju titik tujuan (sink).

Tahap Awal (Inisialisasi)

Sebelum memulai metode Ford-Fulkerson, terlebih dahulu siapkan jaringan seperti Gambar 6.4.1.

Angka yang tercantum pada ekor panah merupakan bobot kedua titik. Angka yang tercantum pada kepala panah diberi 0. Kemudian garis pada jaringan diubah menjadi garis tak berarah.

Tahap Optimisasi

1. Tentukan Augmented Path. Tentukan augmented path yang menghubungkan source dan sink.

2. Tentukan Residual Capacity. Tentukan residual capacity dengan menentukan nilai paling minimum pada ekor panah (lihat pada jaringan sebelum diubah menjadi jaringan tak berarah).

3. Ubah Nilai pada Pangkal Panah dan Mata Panah. Kurangkan nilai pada ekor panah dengan residual capacity. Kemudian pada kepala panah beri nilai (bobot garis-ekor panah).

4. Tentukan Garis yang Tersaturasi. Garis yang tersaturasi adalah garis yang memiliki nilai 0 setelah dikurangkan dengan residual capacity. Buatlah tanda panah pada garis yang tersaturasi tersebut dengan kepala panah mengarah ke nilai 0.

5. Gambar Residual Network. Gambar residual network dan ulangi pada langkah menetap-kan augmented path dari source ke sink.

6.4. MASALAH ARUS MAKSIMUM 125 Tahap Pemberhentian

Tahap pemberhentian terjadi ketika tidak ada augmented path dari source ke sink.

Contoh :

Suatu pabrik melakukan ingin mengalirkan suatu cairan dari titik 1 (source) menuju titik 6 (sink).

Pipa perjalanan dari titik 1 ke titik 6 adalah seperti Gambar 6.4.1. Angka yang tertera pada gambar adalah maksimum aliran yang boleh dilalui. Pabrik tersebut ingin mengalirkan supaya arus keluaran maksimum. Tentukan arus maksimum dari titik 1 ke titik 6. Jawab :

Tentukan tahap awal seperti Gambar 6.4.1.

Gambar 6.4.1. Tahap Awal Arus Maksimum

Iterasi 1

Gambar 6.4.1. Metode Ford-Fulkerson Iterasi 1

Iterasi 2

Gambar 6.4.1. Metode Ford-Fulkerson Iterasi 2

Iterasi 3

Gambar 6.4.1. Metode Ford-Fulkerson Iterasi 3

Iterasi 4

Gambar 6.4.1. Metode Ford-Fulkerson Iterasi 4

Bab 7

Penjadwalan Proyek, Flow Shop Problem, dan Job Shop Problem

Terdapat banyak metode pembuatan jadwal yang efektif pada Riset Operasi. Pada buku ini akan dijelaskan tentang perbedaan antara penjadwalan proyek, Flow Shop Problem, dan Job Shop Prob-lem pada masalah penjadwalan sehingga diperoleh jadwal yang efektif (misal jadwal dengan waktu pengerjaan yang minimum).

7.1 Penjadwalan Proyek dengan Critical Path Method (CPM)

7.1.1 Membuat Jaringan Proyek

Aktivitas proyek dapat direpresentasikan dalam bentuk jaringan. Aturan dalam mengkonstruksi jaringan adalah sebagai berikut :

1. Setiap aktivitas hanya direpresentasikan oleh satu garis.

2. Setiap aktivitas hanya direpresentasikan oleh dua titik yang berbeda. Jika terdapat lebih dari satu aktivitas dengan dua titik yang sama, maka diperlukan variabel dummy.

Gambar 3. Penggunaan Variabel Dummy pada Lebih dari Satu Aktivitas

3. Perhatikan aktivitas yang mendahului pada aktivitas sekarang. Contoh : Aktivitas C didahu-lui oleh aktivitas A dan B, sedangkan aktivitas E didhaudidahu-lui oleh aktivitas B. Dalam kasus tersebut diperlukan variabel dummy.

127

Gambar ??. Penggunaan Variabel Dummy dengan Aktivitas Pendahulu

Contoh :

Suatu penerbit memiliki kontrak dengan penulis untuk menerbitkan buku. Aktivitas produksi buku dapat dilihat pada tabel di bawah :

Aktivitas Keterangan Aktivitas Pendahulu Waktu (minggu)

A Pengeditan naskah oleh editor - 3

B Mempersiapkan halaman - 2

C Mendesain kover - 4

D Menyiapkan artwork - 3

E Persetujuan penulis pada naskah A,B 2

F Format buku E 4

G Review penulis tentang halaman F 2

H Review penulis tentang artwork D 1

I Percetakan buku G,H 2

J Penjilidan buku C,I 4

Sehingga didapat jaringan proyek seperti Gambar 7.1.1 :

Gambar 7.1.1. Jaringan Proyek

7.1. PENJADWALAN PROYEK DENGAN CRITICAL PATH METHOD (CPM) 129 7.1.2 Metode CPM Jalur Maju

Tahap Awal (Inisialisasi)

Sebelum memulai metode CPM jalur maju, terlebih dahulu siapkan jaringan seperti Gambar 7.1.4.

Setiap titik j diberi tanda j yang menyatakan waktu kejadian awal. Angka yang tercantum pada garis merupakan waktu kejadian per aktivitas. Huruf yang tercantum pada garis merupakan aktivitas. Tentukan i=1= 0.

Tahap Optimisasi

Tentukan i+1, i+2, . . . , n. Jika titik j memiliki aktivitas awal di titik p1, p2, . . . , pm, maka di-ambil nilai maksimum dari waktu kejadian kumulatif.

j = max(p1+ Dp1j, p2+ Dp2j, . . . , pm+ Dpmj) (7.1)

Tahap Pemberhentian

Tahap pemberhentian terjadi ketika n telah dihitung.

7.1.3 Metode CPM Jalur Mundur Tahap Awal (Inisialisasi)

Sebelum memulai metode CPM jalur mundur, terlebih dahulu siapkan jaringan seperti Gambar 7.1.4. Setiap titik j diberi tanda Mj yang menyatakan waktu kejadian akhir. Angka yang tercantum pada garis merupakan waktu kejadian per aktivitas. Huruf yang tercantum pada garis merupakan aktivitas. Tentukan Mi=n= n.

Tahap Optimisasi

Tentukan Mn−1, Mn−2, . . . , M1. Jika titik j memiliki aktivitas akhir di titik p1, p2, . . . , pm, maka diambil nilai minimum dari waktu kejadian kumulatif.

Mj= min(Mp1 −Djp1, Mp2 −Djp2, . . . , Mpm −Djpm) (7.2)

Tahap Pemberhentian

Tahap pemberhentian terjadi ketika M1 telah dihitung.

7.1.4 Komputasi CPM Contoh :

Diketahui jaringan proyek seperti Gambar 7.1.4.

Gambar 7.1.4. Contoh Jaringan Proyek

Tentukan aktivitas kritis dan aktivitas non kritisnya.

Jawab :

Untuk menentukan aktivitas kritis dan aktivitas non kritis, maka diperlukan perhitungan jalur maju dan jalur mundur.

Jalur Maju

1 = 0

2 = 1+ D12= 0 + 5 = 5

3 = max(1+ D13, 2+ D23) = max(0 + 6, 5 + 3) = 8

4 = 2+ D24= 5 + 8 = 13

5 = max(3+ D35, 4+ D45) = max(8 + 2, 13 + 0) = 13

6 = max(3+ D36, 4+ D46, 5+ D56) = max(8 + 11, 13 + 1, 13 + 12) = 25

Gambar 7.1.4. Hasil Perhitungan Jalur Maju

7.1. PENJADWALAN PROYEK DENGAN CRITICAL PATH METHOD (CPM) 131 Jalur Mundur

M6 = 6= 25

M5 = M6−D56= 25 − 12 = 13

M4 = min(M6 −D46, M5−D45) = min(25 − 1, 13 − 0) = 13 M3 = min(M6 −D36, M5−D35) = min(25 − 11, 13 − 2) = 11 M2 = min(M4 −D24, M3−D23) = min(13 − 8, 11 − 3) = 5 M1 = min(M3 −D13, M2−D12) = min(11 − 6, 5 − 5) = 0

Gambar 7.1.4. Hasil Perhitungan Jalur Mundur

Syarat Aktivitas Kritis Syarat aktivitas kritis adalah :

1. Mi= i

2. Mj= j

3. Mj − Mi= j− i= Dij

Dari jalur maju dan jalur mundur di atas, dapat dihitung delapan aktivitas:

Aktivitas (1,2) 1. Mi= i = 0 = 0 2. Mj= j = 5 = 5

3. Mj − Mi= j− i= Dij = 5 − 0 = 5 Aktivitas (1,3)

1. Mi= i = 0 = 0 2. Mj6= j = 11 6= 8

Aktivitas (2,3) 1. Mi= i= 5 = 5 2. Mj6= j = 11 6= 8 Aktivitas (2,4)

1. Mi= i= 5 = 5 2. Mj= j = 13 = 13

3. Mj − Mi= j− i = Dij = 13 − 5 = 8 Aktivitas (3,5)

1. Mi6= i= 11 6= 8 Aktivitas (3,6)

1. Mi6= i= 11 6= 8 Aktivitas (5,6)

1. Mi= i= 13 = 13 2. Mj= j = 25 = 25

3. Mj − Mi= j− i = Dij = 25 − 13 = 12 Aktivitas (4,6)

1. Mi= i= 13 = 13 2. Mj= j = 25 = 25

3. Mj − Mi= j− i 6= Dij 6= 25 − 13 = 12

Dari sembilan aktivitas di atas, hanya aktivitas (1,2),(2,4),(5,6) yang memenuhi aktivitas kritis.

Sehingga aktivitas kritisnya adalah (A,D,H) dan aktivitas non-kritisnya adalah (B,C,E,F,G).

7.1.5 Konstruksi Jadwal

Dari aktivitas kritis dan aktivitas non-kritis yang didapat, dapat dibentuk interval (i, Mj) yang menggambarkan maksimum interval dari aktivitas (i, j) yang dijadwalkan.

Aktivitas Kritis

A → (1, M2) = (0, 5) D → (2, M4) = (5, 13) H → (5, M6) = (13, 25)

7.2. FLOW SHOP PROBLEM 133 Aktivitas Non-Kritis

B → (1, M3) = (0, 11) C → (2, M3) = (5, 11) E → (3, M5) = (8, 13) F → (3, M6) = (8, 25) G → (4, M6) = (13, 25)

Gambar 7.1.5. Jadwal Aktivitas

7.2 Flow Shop Problem

Model dari Flow Shop Problem adalah : terdapat m mesin dan n tugas. Setiap tugas terdiri dari m operasi dan setiap operasi membutuhkan mesin yang berbeda. n tugas harus diproses pada urutan yang sama pada m mesin.

Waktu pemrosesan dari tugas i pada mesin j diberikan oleh ti,j(i = 1, 2, . . . , n; j = 1, 2, . . . , m).

Obyektif dari flow shop problem adalah menemukan urutan tugas yang meminimumkan arus mak-simum.

Asumsi yang digunakan pada Flow Shop Problem adalah :

1. Setiap tugas diproses pada semua mesin dengan urutan yang sama.

2. Setiap mesin memproses hanya satu tugas pada satuan waktu.

3. Setiap tugas diproses oleh satu mesin pada satuan waktu.

Misal c(i, j) adalah waktu penyelesaian dari tugas i oleh mesin j, maka kita dapat menghitung waktu penyelesaian flow shop problem untuk n tugas dan m mesin sebagai berikut :

c(1, 1) = t1,1

c(1, j) = c(1, j − 1) + t1,j j = 2, 3, . . . , m c(i, 1) = c(i − 1, 1) + ti,1 i = 2, 3, . . . , n

c(i, j) = max(c(i − 1, j), c(i, j − 1)) + ti,j i = 2, 3, . . . , n; j = 2, 3, . . . , m

(7.3)

dengan arus maksimum adalah :

cmax= c(n, m) (7.4)

7.2.1 Metode Johnson

Langkah-langkah metode Johnson adalah sebagai berikut : 1. Ambil U = {i|ti,1 < ti,2} dan V = {i|ti,1 > ti,2}.

2. Urutkan tugas di U dengan urutan naik menurut ti,1. 3. Urutkan tugas di V dengan urutan turun menurut ti,2

4. Urutan tugas yang optimal adalah berdasarkan himpunan U yang diikuti oleh himpunan V . Contoh :

Diketahui waktu pemrosesan delapan tugas dengan dua mesin sebagai berikut :

Tugas i 1 2 3 4 5 6 7 8 ti,1 5 2 1 7 6 3 7 5 ti,2 2 6 2 5 6 7 2 1 Tentukan urutan tugas yang optimal.

Jawab :

Dari tabel, himpunan U yang terbentuk adalah :

Tugas i 2 3 6 ti,1 2 1 3 ti,2 6 2 7 Setelah diurutkan naik berdasarkan ti,1 adalah :

Tugas i 3 2 6 ti,1 1 2 3 Dari tabel, himpunan V yang terbentuk adalah :

Tugas i 1 4 5 7 8 ti,1 5 7 6 7 5 ti,2 2 5 6 2 1

7.3. JOB SHOP PROBLEM 135 Setelah diurutkan turun berdasarkan ti,2 adalah :

Tugas i 5 4 7 1 8 ti,2 6 5 2 2 1 Sehingga urutan tugas yang optimal adalah : {3, 2, 6, 5, 4, 7, 1, 8}.

Gantt chart untuk urutan tugas optimal adalah :

Gambar 7.2.1. Gantt Chart untuk Flow Shop Problem

7.3 Job Shop Problem

Model dari Job Shop Problem mirip dengan Flow Shop Problem yaitu : terdapat m mesin dan n tugas. Setiap tugas terdiri dari m operasi dan setiap operasi membutuhkan mesin yang berbeda.

Namun perbedaaannya adalah setiap tugas memiliki urutan pengoperasian mesin yang berbeda.

Waktu pemrosesan dari tugas i pada mesin j diberikan oleh ti,j(i = 1, 2, . . . , n; j = 1, 2, . . . , m).

Obyektif dari job shop problem adalah menemukan urutan tugas yang meminimumkan arus mak-simum.

Contoh :

Diketahui waktu pemrosesan tiga tugas dengan tiga mesin sebagai berikut :

Tugas i 1 2 3 ti,1 3 3 2 ti,2 1 3 5 ti,3 3 2 3

Urutan mesin yang digunakan pada masing-masing tugas adalah : Tugas 1 : 1 → 2 → 3

Tugas 2 : 1 → 3 → 2 Tugas 3 : 2 → 1 → 3

Tentukan urutan tugas yang optimal.

Jawab :

Gantt chart untuk urutan tugas yang optimal adalah :

Gambar 7.3. Gantt Chart untuk Job Shop Problem

Tiga digit pada gantt chart dapat dinotasikan dengan notasi ”ioj”. Contoh angka 321 berarti tugas 3 dikerjakan pada mesin 1 dengan urutan nomor 2.

Bab 8

Pemrograman Bilangan Bulat (Integer Programming)

Pemrograman bilangan bulat menggunakan metode Simpleks dalam perhitungannya. Dalam metode Simpleks, ada kalanya solusi optimal yang dihasilkan berupa bilangan real pecahan. Namun dalam obyek yang bersifat diskrit misal jumlah pekerja, jumlah produksi, dan sebagainya, solusi yang di-hasilkan merupakan bilangan bulat positif sehingga metode Simpleks dapat dikembangkan menjadi pemrograman bilangan bulat.

8.1 Metode Branch and Bound

Dalam memecahkan permasalahan pemrograman bilangan bulat, metode Branch and Bound pal-ing serpal-ing digunakan. Metode ini menggunakan tiga tahapan yaitu percabangan (branching), pengikatan (bounding), dan penguasaan (fathoming).

8.1.1 Tahap Awal (Inisialisasi)

Pada masalah optimisasi maksimalisasi nilai Z, tetapkan Z= −∞.

8.1.2 Tahap Optimisasi

1. Percabangan (Branching ). Misalkan xi adalah variabel dari solusi optimal yang bukan himpunan bilangan bulat. Buatlah cabang menjadi xi≤ [xi] dan xi≥ [xi] + 1.

2. Pembatasan (Bounding ). Tentukan batas dari Z menggunakan metode grafis (jika hanya terdiri dari dua peubah) atau metode Simpleks.

3. Penguasaan (Fathoming ). Syarat-syarat jika solusi optimal tersebut keadaan fathom se-hingga kita tidak perlu membuat cabang lagi adalah :

(a) JIka Znew ≤ Zold

(b) Tidak memiliki solusi optimal.

(c) Telah memiliki solusi optimal berupa bilangan bulat.

137

8.1.3 Tahap Pemberhentian

Tahap pemberhentian terjadi ketika semua solusi dalam keadaan fathom sehingga kita tidak bisa membuat cabang lagi.

8.1.4 Komputasi Contoh :

Diketahui masalah program linear sebagai berikut :

max Z = −x1+ 4x2 dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1, x2≥ 0 x1, x2 ∈ B Tentukan solusi optimalnya.

Jawab :

Pertama-tama buatlah grafik kendalanya seperti pada Gambar 8.1.4.

Gambar 8.1.4. Grafik Kendala Metode Branch and Bound

Cabang 1

Kemudian hitung titik potongnya. Dari hasil perhitungan, diperoleh titik potongnya adalah : (0; 0), (0; 1, 1), (3, 8; 3), (5; 2, 4), (5; 0). Kemudian kita masukkan pada fungsi obyektif Z = f (x1, x2) =

8.1. METODE BRANCH AND BOUND 139

−x1+ 4x2.

f (0; 0) = −0 + 4(0) = 0 f (0; 1, 1) = −0 + 4(1, 1) = 4, 4 f (3, 8; 3) = −3, 8 + 4(3) = 8, 2 f (5; 2, 4) = −5 + 4(2, 4) = 4, 6

f (5; 0) = −5 + 4(0) = 5

Dari hasil perhitungan di atas, terlihat bahwa titik (x1, x2) = (3, 8; 3) menghasilkan nilai Z paling besar yaitu sebesar 8,2.

Karena x1 = 3, 8 bukan termasuk elemen bilangan bulat, maka nilai x1harus dibagi menjadi x1 ≤ 3 dan x1≥ 4.

Cabang 1.1

Dari cabang 1, untuk kasus x1 ≤ 3, diperoleh program linear sebagai berikut :

max Z = −x1+ 4x2

dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1 ≤ 3

x1, x2 ≥ 0 x1, x2∈ B

Kemudian hitung titik potongnya. Dari hasil perhitungan, diperoleh titik potongnya adalah : (0; 0), (0; 1, 1), (3; 0), (3; 2, 6). Kemudian kita masukkan pada fungsi obyektif Z = f (x1, x2) = −x1+ 4x2.

f (0; 0) = −0 + 4(0) = 0 f (0; 1, 1) = −0 + 4(1, 1) = 4, 4

f (3; 0) = −3 + 4(0) = −3 f (3; 2, 6) = −3 + 4(2, 6) = 7, 4

Dari hasil perhitungan di atas, terlihat bahwa titik (x1, x2) = (3; 2, 6) menghasilkan nilai Z paling besar yaitu sebesar 7,4.

Gambar 8.1.4. Branch and Bound Cabang 1.1

Karena x2= 2, 6 bukan termasuk elemen bilangan bulat, maka nilai x2 harus dibagi menjadi x2 ≤ 2 dan x2 ≥ 3.

Cabang 1.2

Dari cabang 1, untuk kasus x1≥ 4, diperoleh program linear sebagai berikut : max Z = −x1+ 4x2

dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1 ≥ 4 x1, x2≥ 0 x1, x2 ∈ B

Kemudian hitung titik potongnya. Dari hasil perhitungan, diperoleh titik potongnya adalah : (4; 0), (5; 0), (5; 2, 4), (4; 2, 9). Kemudian kita masukkan pada fungsi obyektif Z = f (x1, x2) = −x1+ 4x2.

f (4; 0) = −4 + 4(0) = −4 f (5; 0) = −5 + 4(0) = −5 f (5; 2, 4) = −5 + 4(2, 4) = 4, 6 f (4; 2, 9) = −4 + 4(2, 9) = 7, 6

Dari hasil perhitungan di atas, terlihat bahwa titik (x1, x2) = (4; 2, 9) menghasilkan nilai Z paling besar yaitu sebesar 7,6.

8.1. METODE BRANCH AND BOUND 141

Gambar 8.1.4. Branch and Bound Cabang 1.2

Karena x2 = 2, 9 bukan termasuk elemen bilangan bulat, maka nilai x2harus dibagi menjadi x2 ≤ 2 dan x2≥ 3.

Gambar 8.1.4. Branch and Bound Cabang 1.1 dan 1.2

Cabang 1.1.1

Dari cabang 1.1, untuk kasus x2 ≤ 2, diperoleh program linear sebagai berikut : max Z = −x1+ 4x2

dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1 ≤ 3 x2 ≤ 2 x1, x2≥ 0 x1, x2 ∈ B

Kemudian hitung titik potongnya. Dari hasil perhitungan, diperoleh titik potongnya adalah : (0; 0), (0; 1, 1), (1, 8; 2), (3; 2), (3; 0). Kemudian kita masukkan pada fungsi obyektif Z = f (x1, x2) =

−x1+ 4x2.

f (0; 0) = −0 + 4(0) = 0 f (0; 1, 1) = −0 + 4(1, 1) = 4, 4 f (1, 8; 2) = −1, 8 + 4(2) = 6, 2

f (3; 2) = −3 + 4(2) = 5 f (3; 0) = −3 + 4(0) = −3

Dari hasil perhitungan di atas, terlihat bahwa titik (x1, x2) = (1, 8; 2) menghasilkan nilai Z paling besar yaitu sebesar 6,2.

Gambar 8.1.4. Branch and Bound Cabang 1.1.1

Karena x1= 1, 8 bukan termasuk elemen bilangan bulat, maka nilai x1 harus dibagi menjadi x1 ≤ 1 dan x1 ≥ 2.

Cabang 1.1.2

Dari cabang 1.1, untuk kasus x2 ≥ 3, diperoleh program linear sebagai berikut : max Z = −x1+ 4x2

8.1. METODE BRANCH AND BOUND 143 dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1 ≤ 3 x2 ≥ 3 x1, x2 ≥ 0 x1, x2∈ B

Kemudian hitung titik potongnya. Dari hasil perhitungan, pertidaksamaan x2 ≥ 3 berada di luar feasible area sehingga pada cabang ini tidak ada solusi optimal.

Gambar 8.1.4. Branch and Bound Cabang 1.1.2

Cabang 1.2.1

Dari cabang 1.2, untuk kasus x2 ≤ 2, diperoleh program linear sebagai berikut : max Z = −x1+ 4x2

dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1 ≥ 4 x2 ≤ 2 x1, x2 ≥ 0 x1, x2∈ B

Kemudian hitung titik potongnya. Dari hasil perhitungan, diperoleh titik potongnya adalah :

(4; 0), (5; 0), (4; 2), (5; 2). Kemudian kita masukkan pada fungsi obyektif Z = f (x1, x2) = −x1+ 4x2. f (4; 0) = −4 + 4(0) = −4

f (5; 0) = −5 + 4(0) = −5 f (4; 2) = −4 + 4(2) = 4 f (5; 2) = −5 + 4(2) = 3

Dari hasil perhitungan di atas, terlihat bahwa titik (x1, x2) = (4; 2) menghasilkan nilai Z paling besar yaitu sebesar 4.

Gambar 8.1.4. Branch and Bound Cabang 1.2.1

Cabang 1.2.2

Dari cabang 1.2, untuk kasus x2 ≥ 3, diperoleh program linear sebagai berikut : max Z = −x1+ 4x2

dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1 ≥ 4 x2 ≥ 3

x1, x2≥ 0 x1, x2 ∈ B

Kemudian hitung titik potongnya. Dari hasil perhitungan, pertidaksamaan x2 ≥ 3 berada di luar feasible area sehingga pada cabang ini tidak ada solusi optimal.

8.1. METODE BRANCH AND BOUND 145

Gambar 8.1.4. Branch and Bound Cabang 1.2.2

Gambar 8.1.4. Branch and Bound Cabang 1.1.1, 1.1.2, 1.2.1, 1.2.2

Cabang 1.1.1.1

Dari cabang 1.1.1, untuk kasus x1≤ 1, diperoleh program linear sebagai berikut : max Z = −x1+ 4x2

dengan kendala

−10x1+ 20x2 ≤ 22 5x1+ 10x2 ≤ 49 x1 ≤ 5 x1 ≤ 3 x2 ≤ 2 x1 ≤ 1 x1, x2 ≥ 0 x1, x2∈ B

Kemudian hitung titik potongnya. Dari hasil perhitungan, diperoleh titik potongnya adalah : (0; 0), (0; 1, 1), (1; 1, 6), (1; 0). Kemudian kita masukkan pada fungsi obyektif Z = f (x1, x2) = −x1+

4x2.

f (0; 0) = −0 + 4(0) = 0 f (0; 1, 1) = −0 + 4(1, 1) = 4, 4 f (1; 1, 6) = −1 + 4(1, 6) = 5, 4

f (1; 0) = −1 + 4(0) = −1

Dari hasil perhitungan di atas, terlihat bahwa titik (x1, x2) = (1; 1, 6) menghasilkan nilai Z paling besar yaitu sebesar 5,4.

Gambar 8.1.4. Branch and Bound Cabang 1.1.1.1

Karena x2= 1, 6 bukan termasuk elemen bilangan bulat, maka nilai x2 harus dibagi menjadi x2 ≤ 1 dan x2 ≥ 2.

Cabang 1.1.1.2

Dari cabang 1.1.1, untuk kasus x1 ≥ 2, diperoleh program linear sebagai berikut :

Dari cabang 1.1.1, untuk kasus x1 ≥ 2, diperoleh program linear sebagai berikut :

Dalam dokumen RISET OPERASI DAN KOMPUTASI (Halaman 117-0)