Revisi Simplex

39
(c) Departemen Teknologi Industri Pertanian, IPB 2005 (c) Departemen Teknologi Industri Pertanian, IPB 2005 Advanced Topics in Advanced Topics in Linear Programming Linear Programming Penelitian Operasional I Penelitian Operasional I Dr. Sukardi Dr. Sukardi Departemen Teknologi Industri Pertanian, Departemen Teknologi Industri Pertanian, Fakultas Teknologi Pertanian, IPB Fakultas Teknologi Pertanian, IPB

Transcript of Revisi Simplex

Page 1: Revisi Simplex

(c) Departemen Teknologi Industri Pertanian, IPB 2005(c) Departemen Teknologi Industri Pertanian, IPB 2005

Advanced Topics Advanced Topics in Linear in Linear ProgrammingProgramming

Penelitian Operasional IPenelitian Operasional I

Dr. SukardiDr. SukardiDepartemen Teknologi Industri Pertanian,Departemen Teknologi Industri Pertanian,Fakultas Teknologi Pertanian, IPBFakultas Teknologi Pertanian, IPB

Page 2: Revisi Simplex

(c) Departemen Teknologi Industri Pertanian, IPB 2005(c) Departemen Teknologi Industri Pertanian, IPB 2005

Umumnya Digunakan Umumnya Digunakan untuk Model LP Ukuran untuk Model LP Ukuran Besar:Besar:

Metode Simplex Revisi Metode Simplex Revisi √√

Bentuk Perkalian Matriks Inverse Bentuk Perkalian Matriks Inverse √√

Pembangkitan KolomPembangkitan Kolom Algoritma Dekomposisi Dantzig-WolfeAlgoritma Dekomposisi Dantzig-Wolfe Simplex untuk Variabel Simplex untuk Variabel UpperUpper BoundBound

√√ Metode KarmakarMetode Karmakar

Page 3: Revisi Simplex

Metode Simplex RevisiMetode Simplex Revisi

Rumus-rumus simplex yang didasarkan pada komponen matriks (previous lectures) sebenarnya dapat digunakan untuk setiap kumpulan variabel basic.

Untuk setiap BV yang terpilih, selalu dapat ditentukan matriks B yang kemudian, jika saling bebas linear (linearly independent), dapat diambil inversnya, B-1.

Metode Simplex Revisi menggunakan rumus-rumus tersebut.

Page 4: Revisi Simplex

Definisi VariabelDefinisi Variabel

BV = himpunan variabel basic (elemen pertama pada BV adalah variabel basic pada kendala pertama, elemen kedua adalah variabel basic pada kendala kedua, dst. BVj adalah variabel basic pada kendala ke j di dalam tableau simplex.

b = vektor ruas kanan kendala pada tableau awal.

aj = kolom untuk variabel xj pada fungsi kendala tableau awal.

B = matriks berukuran n x m yang kolom ke j-nya adalah kolom untuk BVj pada tableau awal.

cj = Koefisien xj pada fungsi tujuan.

cBV = vektor 1 x m vector yang elemen ke j-nya adalah keofisien fungsi tujuan untuk BVj

ui = vektor m x 1 yang elemen ke i-nya adalah 1 dan yang lainnya sama dengan nol.

Page 5: Revisi Simplex

Ringkasan RumusRingkasan Rumus

B-1aj = kolom untuk xj pada tableau BV

cBVB-1aj – cj = koefisien xj pada baris 0

B-1b = ruas kanan matriks kendala pada tableau BV

cBVB-1ui = koefisien variabel slack si pada baris 0

cBVB-1(-ui) = koefisien variabel excess ei pada baris 0

M + cBVB-1ui = koefisien variable artificial ai pada baris 0

cBVB-1b = ruas kanan baris 0

Page 6: Revisi Simplex

Jika BV, B-1, dan tableau awal diketahui, rumus-rumus pada slides sebelumnya dapat digunakan untuk menghitung setiap bagian dari tableau simplex.

Hal ini berarti bahwa jika metode simplex akan dikerjakan oleh komputer, yang komputer perlu lakukan adalah menyimpan variabel basic, B-1, dan tableau awal.

Algoritma simplex revisi menggunakan dasar pemikiran tersebut.

Implikasi RumusImplikasi Rumus

Page 7: Revisi Simplex

Prosedur Algoritma Prosedur Algoritma Simplex RevisiSimplex Revisi

max z - 60xmax z - 60x1 1 - 30x- 30x

22 - 20x - 20x33 = 0= 0

s.t. 8xs.t. 8x11 + 6x + 6x

22 + x + x33 + s + s

11 = 48= 48

4x4x11 + 2x + 2x

22 + 1.5x + 1.5x33 + s + s

22 = 20= 20

2x2x11 + 1.5x + 1.5x

22 + 0.5x + 0.5x33 + s + s

33 = 8= 8

Contoh Persoalan:

Untuk contoh persoalan di atas, tidak tergantung berapa pivot telah diselesaikan, B-1 untuk contoh tersebut akan selalu sebuah matriks berukuran 3 x 3 yang kolom ke j-nya adalah kolom untuk variabel sj.

Tableau awal

Page 8: Revisi Simplex

Dari tableau awal dapat diketahui bahwa:

BV(0) = {s1, s2, s3}

NBV(0) = {x1, x2, x3}

Misalkan Bi adalah matriks pada tableau ke i yang berkaitan dengan variabel basic, maka untuk tableau awal pada BV(0) dapat ditentukan:

B 01

B 0

1

0

0

0

1

0

0

0

1

==

Page 9: Revisi Simplex

Dapat ditentukan variabel nonbasic mana yang akan menjadi variabel basic, yaitu dengan cara menghitung koefisien setiap variabel nonbasic pada baris 0. Prosedur penentuan variabel nonbasic mana yang akan menjadi basic disebut pricing out variabel nonbasic.

Untuk keperluan tersebut diperlukan cBVB0-1. Karena

cBV = [0 0 0], maka:

cBVB0-1 = 0 0 0( )

1

0

0

0

1

0

0

0

1

0 0 0( )=

Page 10: Revisi Simplex

Koefisien variabel nonbasic dapat dihitung dengan rumus:

cBVB-1aj – cj

Hasil perhitungan menunjukkan bahwa koefisien x1 yang paling negatif x1 akan menjadi variabel basic.

c 3 0 0 0( )

1

1.5

0

20 20

c 2 0 0 0( )

6

2

1.5

30 30

c 1 0 0 0( )

8

4

2

60 60

Page 11: Revisi Simplex

Untuk melanjutkan prosedure simplex, yang perlu diketahui adalah variabel basic yang baru, BV(1), dan B1

-1dari variabel basic tersebut.

Untuk menentukan BV(1), tentukan baris dimana x1 akan masuk ke basis.

Perhitungannya adalah sebagai berikut:

Dari tableau sebelumnya, kolom untuk x1 dapat dihitung sebagai berikut:

B-1a1 =

1

0

0

0

1

0

0

0

1

8

4

2

8

4

2

Page 12: Revisi Simplex

Kemudian, ruas kanan kendala adalah:

Lakukan uji ratio untuk menentukan baris dimana x1 akan masuk basis, yaitu:

Baris 1: 48/8 = 6

Baris 2: 20/4 = 5

Baris 3: 8/2 = 4

Sehingga tableau 1 akan terdiri atas:

BV(1) = {s1, s2, x1}

NBV(1) = {s3, x2, x3}

B-1b =

1

0

0

0

1

0

0

0

1

48

20

8

48

20

8

Page 13: Revisi Simplex

B-1 yang baru akan tetap merupakan kolom-kolom untuk s1, s2, dan s3 yang nilainya berubah setelah operasi eliminasi baris berikut:

1. Bagi baris ke 3 dengan 2

2. Ganti baris ke 1 dengan baris 1 – 8 kali baris ke 3 yang baru

3. Ganti baris ke 2 dengan baris 2 – 4 kali baris ke 3 yang baru

-1B 0

1

0

0

0

1

0

0

0

1

=

0 0 1/2

1 0 0

0 0 4 –

1 0 -40 1 0

0 0 2 –

0 1 -2

Page 14: Revisi Simplex

Sehingga B0-1

berubah

menjadi B1-1

Pertama lakukan pricing out terhadap semua variabel nonbasic dengan menghitung cBVB1

-1, dll.

Kemudian lanjutkan dengan iterasi berikutnya:

B 11

1

0

0

0

1

0

4

2

1

2

cBVB1-1 = 0 0 60( )

1

0

0

0

1

0

-4

-2

1/2

0 0 30( )=

Page 15: Revisi Simplex

Koefisien variabel nonbasic dapat dihitung dengan rumus:

cBVB-1aj – cj

Hasil perhitungan menunjukkan bahwa koefisien x3 yang paling negatif x3 akan menjadi variabel basic.

c 3 0 0 30( )

1

1.5

0

20 5

c 2 0 0 30( )

6

2

1.5

30

s 3 0 0 30( )

0

0

1

0 30

Page 16: Revisi Simplex

Untuk melanjutkan prosedure simplex, yang perlu diketahui adalah variabel basic yang baru, BV(2), dan B2

-1dari variabel basic tersebut.

Untuk menentukan BV(2), tentukan baris dimana x3 akan masuk ke basis.

Perhitungannya adalah sebagai berikut:

Dari tableau sebelumnya, kolom untuk x3 dapat dihitung sebagai berikut:

B-1a3 =

1

0

0

0

1

0

-4

-2

0.5

1

1.5

0.5

-1

0.5

0.25

Page 17: Revisi Simplex

Kemudian, ruas kanan kendala adalah:

Lakukan uji ratio untuk menentukan baris dimana x3 akan masuk basis, yaitu:

Baris 1: tidak ada (-)

Baris 2: 4/0.5 = 8

Baris 3: 4/0.25 = 16

Sehingga tableau 2 akan terdiri atas:

BV(2) = {s1, x3, x1}

NBV(2) = {s2, s3, x2}

B-1b =

1

0

0

0

1

0

-4

-2

0.5

48

20

8

16

4

4

Page 18: Revisi Simplex

B-1 yang baru akan tetap merupakan kolom-kolom untuk s1, s2, dan s3 yang nilainya berubah setelah operasi eliminasi baris berikut:

1. Bagi baris ke 2 dengan 0.5

2. Ganti baris ke 1 dengan baris 1 – (-1) kali baris ke 2 yang baru

3. Ganti baris ke 3 dengan baris 3 – 0.25 kali baris ke 2 yang baru

-1B 1

1

0

0

0

1

0

-4

-2

0.5

=

0 2 -4

1 0 -4

0 -2 4 –

1 2 -8

0 00.5

0 0.5 -1 –

0 -0.51.5

Page 19: Revisi Simplex

Sehingga B1-1

berubah

menjadi B2-1

Pertama lakukan pricing out terhadap semua variabel nonbasic dengan menghitung cBVB1

-1, dll.

Pada tahap ini, tableau menunjukkan bahwa semua koefisien variabel nonbasic bernilai nonnegative yang berarti tableau 2 telah optimal.

Kemudian lanjutkan dengan iterasi berikutnya:

B 21

1

0

0

2

2

-0.5

8

4

1.5

cBVB2-1 = 0 20 60( )

1

0

0

2

2

-0.5

-8

-4

1.5

0 10 10( )=

Page 20: Revisi Simplex

Koefisien variabel nonbasic dapat dihitung dengan rumus:

cBVB-1aj – cj

Hasil perhitungan menunjukkan bahwa koefisien semua variabel nonbasic bernilai nonnegative Stop.

s 2 0 10 10( )

0

1

0

0 10

c 2 0 10 10( )

6

2

1.5

30

s 3 0 10 10( )

0

0

1

0 10

Page 21: Revisi Simplex

Untuk menentukan solusi optimal, hitung nilai ruas kanan tableau 2 dengan rumus:

Dari langkah sebelumnya kita tahu bahwa:

BV(2) = {s1, x3, x1}. Jadi:

dan x2 = s2 = s3 = 0

B-1b =

1

0

0

2

2

0.5

8

4

1.5

48

20

8

24

8

2

s1

x3

x1

24

8

2

Page 22: Revisi Simplex

Nilai optimal z dapat dihitung dengan menggunakan rumus:

cBVB2-1b = 0 10 10( )

48

20

8

280

Page 23: Revisi Simplex

Step 0 Tentukan B-1 awal, yaitu B-1 = I.

Step 1 Hitung cBVB-1

Step 2 Lakukan Price out untuk semua variabel nonbasic. Jika setiap koefisien variabel nonbasic adalah nonnegative, solusi telah optimal. Jika tidak, pilih variabel nonbasic yang memiliki koefisien paling negatif. Namakan variabel tersebut xk.

Ringkasan Metode Simplex Ringkasan Metode Simplex RevisiRevisi

Step 3 Untuk menentukan pada baris mana xk masuk basis,

hitung kolom untuk xk dengan rumus B-1ak dan hitung ruas kanan

kendala dengan rumus B-1b. Kemudian lakukan uji ratio dan pilih ratio terkecil.

Step 4 Gunakan kolom xk untuk menetukan B-1 yang baru. Kembali ke Step 1.

Page 24: Revisi Simplex

Dalam metode simplex revisi, perhitungan difokuskan pada updating B-1 dari satu tableau ke yang lain. Perkalian matriks inverse adalah cara efisien untuk menentukan B-1:

Misalkan model LP dengan m fungsi kendala sedang dipecahkan dan diketahui bahwa variabel xk akan masuk basis pada baris r. Misalkan kolom untuk xk pada tableau ybs adalah sebagai berikut:

a 1k

a 2k

....

....

a mk

Bentuk Perkalian Matriks Bentuk Perkalian Matriks Inverse (the product form of Inverse (the product form of the inverse)the inverse)

= B-1ak

Page 25: Revisi Simplex

Perkalian Matriks Perkalian Matriks InverseInverseDefinisikan sebuah matriks E berukuran m x m:

kolom r

baris rE

1

0

....

0

....

0

0

0

1

....

0

....

0

0

....

....

....

....

....

....

....

a 1k

a rk

a 2k

a rk

....

1

a rk

....

am 1 k

a rk

amk

a rk

....

....

....

....

....

....

....

0

0

....

0

....

1

0

0

0

....

0

....

0

1

Page 26: Revisi Simplex

Sehingga secara ringkas dapat dikatakan bahwa matriks E adalah matriks Im dengan kolom ke r-nya diganti dengan kolom seperti disebelah kanan:

Sebuah matriks seperti matriks E disebut matriks dasar (elementary matrix).

Dapat ditunjukkan bahwa B-1 untuk tableau berikutnya adalah sama dengan E(B-1) tabel sebelumnya

a 1k

a rk

a 2k

a rk

....

1a rk

....

am 1 , k

a rk

amk

a rk

Page 27: Revisi Simplex

Hasil Perkalian Matriks Hasil Perkalian Matriks Inverse Inverse

Hubungan antara matriks Ei dengan matriks inverse (B-1) adalah sebagai berikut:

Telah ditunjukkan bahwa

jadi

maka

Secara umum

Persamaan terakhir disebut sebagai bentuk hasil perkalian invers (the product form of the inverse) banyak digunakan oleh software vendor untuk memprogram model LP.

B21

E1 B11 E1 E0

B k1

Ek 1 Ek 2 .... E1 E0

B 11

E 0 B 01

E 0

B 01

I 0=

Page 28: Revisi Simplex

Contoh:Contoh:Pada contoh terdahulu diketahui bahwa x1 masuk basis melalui baris 3

Page 29: Revisi Simplex

Contoh:Contoh: Kemudian diketahui bahwa x3 masuk basis melalui baris 2

Page 30: Revisi Simplex

Contoh:Contoh:

Page 31: Revisi Simplex

Simplex untuk Variabel Simplex untuk Variabel UpperUpper BoundedBounded

Pada contoh model LP di sebelah kanan, kendala x1 < 4, x2 < 3, dan x3 < 1 merupakan kendala yang bersifat upper bound Metode simplex upper bounded lebih efisien untuk memecahkan persoalan tersebut.

Page 32: Revisi Simplex

Metode Simplex Upper Metode Simplex Upper BoundedBoundedUntuk setiap variabel xi yang memiliki kendala upper bound, xi < ui, definisikan variabel baru xi’ sehingga xi + xi’ = ui atau xi = ui – xi’. Cara ini disebut upper bound substitution.

Ada tiga kemungkinan, disebut bottleneck, untuk menentukan kenaikan nilai xi, yaitu:

Bottleneck 1 xi tidak dapat melampaui nilai upper bound ui.

Bottleneck 2 xi naik sampai ke suatu nilai yang menyebabkan variabel basic lain negatif. Nilai kenaikan terkecil xi dapat diperoleh dengan mengekspresikan variabel basic dalam bentuk xi.

Bottleneck 3 xi naik sampai ke suatu nilai yang menyebabkan variabel basic melampaui upper bound-nya. Nilai kenaikan terkecil xi dapat diperoleh dengan mengekspresikan variabel basic dalam bentuk xi.

Page 33: Revisi Simplex

Metode Simplex Upper Metode Simplex Upper BoundedBoundedMisalkan BNk (k = 1, 2, 3) adalah nilai xi pada bottleneck ke k. Maka xi hanya dapat dinaikkan sampai ke Min{BN1, BN2, BN3}.

Jika nilai terkecil adalah BN1, maka dilakukan substitusi upper bound dengan mengganti xi dengan ui – xi’.

Jika nilai terkecil adalah BN2, maka xi masuk basis melalui baris dimana BN2 terjadi.

Jika nilai terkecil adalah BN3, maka dilakukan substitusi upper bound pada variabel xj (dengan mengganti xj = uj – xj’) yang mencapai nilai upper bound jika xi = BN3. Kemudian xi masuk basis melalui baris dimana xj menjadi basic.

Kemudian lakukan pengecekan kondisi optimal.

Page 34: Revisi Simplex

Contoh 1:Contoh 1:

Untuk contoh di sebelah kanan, tableau awalnya adalah tabel di bawahnya:

Karena x1 adalah yang paling

negatif, maka x1 dinaikan setinggi yang dapat dicapai.

BN1: x1 tidak bisa melampaui

upper bound-nya, 4, maka BN1 = 4.

BN2: s1 = 10 – 2x1, s1>0 iif x1<5

s2 = 6 – x1, s2>0 iif x1<6

s3 = 20 – 2x1, s3>0 iif x1<10

Sehingga BN2 = Min(5, 6, 10) = 5

Karena BV sekarang (s1, s2, s3) tidak

memiliki upper bound, maka BN3

tidak perlu ditentukan.

Page 35: Revisi Simplex

Maka BN terkecil adalah Min{4, 5} = 4 BN1, sehingga harus dilakukan substitusi upper bound pada x1 dengan mengganti x1 menjadi 4 – x1’. Hasilnya adalah pada tabel berikut:

Pada tabel di sebelah kiri terlihat bahwa koefisien x3 adalah yang paling negatif, maka dicoba menaikkan x3 setinggi yang dapat dicapai.

Page 36: Revisi Simplex

BN1: x3 tidak bisa melampaui upper bound-nya, 1, maka BN1 = 1.

BN2: s1 = 2 – x3 s1>0 iif x3 < 2

s2 = 2 – 0.5x3 s2>0 iif x3 < 4

s3 = 12 – 4x3 s3>0 iif x3 < 3 BN2 = Min(2, 4, 3) = 2

Karena basic variabel yang sekarang s1, s2, s3 tidak mempunyai

upper bound, maka BN3 tidak ada.

BN terkecil adalah Min {1, 2} = 1 = BN1. Maka dilakukan

substitusi upper bound terhadap x3 dengan mengganti x3

dengan 1 – x3’. Hasilnya adalah sebagai berikut:

Page 37: Revisi Simplex

Pada slide sebelumnya terlihat bahwa koefisien x2 adalah yang paling

negatif, maka dicoba untuk menaikkan x2:

BN1: x2 tidak bisa melampaui upper bound 3, BN1 = 3.

BN2: s1 = 1 – x2 s1 > 0 iif x2 < 1

s2 = 3/2 – 0.5 x2 s2 > 0 iif x2 < 3

s3 = 8 – 2x2 s3 > 0 iif x2 < 4 BN2 = 1

BN3 tidak ada BN terkecil adalah 1 = BN2, dan x2 masuk basis melalui

baris dimana s1 sekarang basic, baris 1. Setelah dilakukan pivot,

diperoleh tabel optimal berikut: Karena x1’ = 4 – x1,

maka x1 = 4.

Juga x3’ = 1 – x3, maka

x3 = 1.

Page 38: Revisi Simplex

Contoh 2:Contoh 2:Max z = 6x3

s.t. x1 - x3 = 6

x2 + 2x3 = 8

x1 < 8, x2 < 10, x3 < 5

x1, x2, x3 > 0

BN1 = 5

BN2 x1 = 6 + x3 x3 > -6

x2 = 8 – 2x3 x3 < 4 BN2 = 4

BN3 x1 < 8 iif 6 + x3 < 8 atau x3 < 2

x2 < 10 iif 8 – 2x3 < 10 atau x3 > -1

x1 & x2 < upper bound jika x3 < 2 BN3= 2

BN terkecil adalah Min {5, 4, 2} = 2 = BN3

BN3 terjadi ketika x1 dijaga nilainya < u.b.

Dilakukan substitusi upper bound pada x1

dengan mengganti x1 dengan 8 – x1’

Setelah merubah –x1’ – x3 = -2 dengan x1’ +

x3 = 2 diperoleh tabel di sebelah kanan.

Page 39: Revisi Simplex

Karena x1, variabel yang menghasilkan BN3,

adalah variabel basic pada baris 1, x3

sekarang menggantikan x1 sebagai variabel basic pada baris 1.

Setelah dilakukan pivot, diperoleh tabel optimal berikut:

Z + 6x1’ =12 z = 12

x1’ + x3 = 2 x3 = 2

- 2x1’ + x2 = 4 x2 = 4

Karena x1’ = 0, maka x1 = 8 – x1’ = 8

Contoh Contoh 2:2: