Materi Pemrograman Linier

Linear Programming
(Pemrograman Linier)
Program Studi Statistika
Semester Ganjil 2011/2012

DR. Rahma Fitriani, S.Si., M.Sc

Contoh untuk Algoritma Simpleks
Dakota’s Problem
Perusahaan

furniture Dakota
memproduksi bangku, meja dan kursi.
Untuk setiap jenis furniture dibutuhkan
bahan baku kayu dan 2 jenis waktu
pengerjaan: finishing & carpentry
Bahan baku dan waktu pengerjaan
terbatas
Ingin ditentukan jumlah produksi setiap
furniture yang memaksimumkan
keuntungan


Dakota’s Problem dalam Tabel

Sumber daya

Bangku

Meja

Kursi

Ketersediaan

Kayu (m2)

8

6

1


48

Finishing (jam)

4

2

1.5

20

Carpentry (jam)
Profit

2
60

1.5

30

0.5
20

8
 

Peubah
Keputusan?

x1 :# produksi bangku
x2 :# produksi meja
x3 :# produksi kursi

LP untuk Dakota’s
Problem
Sumber daya

Bangku

X1

Meja
X2

Kursi
X3

Ketersediaan

Kayu (m2)

8

6

1

48


Finishing (jam)

4

2

1.5

20

Carpentry (jam)
Profit($)

2
60

1.5
30

0.5

20

8
 

max z 60 x1  30 x2  20 x3
s.t. 8 x1  6 x2  x3 48 (Kayu)
4 x1  2 x2  1.5 x3 20 (Finishing hour)
2 x1  1.5 x2  0.5 x3 8 (Carpentry hour)
x1 0, x2 0, x3 0

Algoritma Simpleks
Mula
i

Tentukan BFS:
BV & NBV

BFS
optimal?

Ya
Selesa
i

Td
k

Lakukan iterasi
untuk
menentukan
BFS: BV & NBV
yang baru

Langkah 1 Algoritma Simpleks
Rubah

ke bentuk Standar

max z 60 x1  30 x2  20 x3
s.t. 8 x1  6 x2  x3 48 (Kayu)

4 x1  2 x2  1.5 x3 20 (Finishing hour)
2 x1  1.5 x2  0.5 x3 8 (Carpentry hour)

Digunakan slack
variabel karena
semua kendala ≤

x1 0, x2 0, x3 0

Kendala kayu
Kendala
finishing
Kendala
carpentry

8 x1  6 x2  x3 48

8 x1  6 x2  x3  s1 48

4 x1  2 x2  1.5 x3 20


4 x1  2 x2  1.5 x3  s2 20

2 x1  1.5 x2  0.5 x3 8

2 x1  1.5 x2  0.5 x3  s3 8

Langkah 1 Algoritma Simpleks
Bentuk

Standar LP

Baris 0

max z 60 x1  30 x2  20 x3

Baris 1

s.t. 8 x1  6 x2  x3


 s1

Baris 2

4 x1  2 x2  1.5 x3

Baris 3

2 x1  1.5 x2  0.5 x3

48
 s2

20
 s3 8

x1 , x2 , x3 , s1 , s2 , s3 0
Modifikasi

baris 0 menjadi:


z  60 x1  30 x2  20 x3 0

Semua peubah di
ruas kiri,
konstanta di ruas

Langkah 1 Algoritma Simpleks
Bentuk

max z  60 x1  30 x2  20 x3

Tableau s.t. 8 x

1

 6 x2  x3

 s1

4 x1  2 x2  1.5 x3

48
 s2

2 x1  1.5 x2  0.5 x3
z

x1

x2

x3

s1

s2

s3

20
 s3 8

x1 , x2 , x3 , s1 , s2 , s3 0
 

0

rhs

Baris 0

1

-60

-30

-20

0

0

0

0

Baris 1

0

8

6

1

1

0

0

48

Baris 2

0

4

2

1.5

0

1

0

20

Baris 4

0

2

1.5

0.5

0

0

1

8

Bentuk Kanonik: bernilai 1 pada variabel
tsb, bernilai nol pada variabel lain → spt
matriks identitas

Langkah 2 Algoritma Simpleks
Tentukan BFS (BV dan NBV).
BV dapat ditentukan dari elemen tableau yang
berbentuk kanonik.
 
Baris 0
Baris 1
Baris 2
Baris 3

z
1
 0
 0
 0

x1
-60
8
4
2

x2
-30
6
2
1.5

x3
-20
1
1.5
0.5

s1
0
1
0
0

s2
0
0
1
0

s3
0
0
0
1

BV  s1 , s2 , s3  NBV  x1 , x2 , x3 
BFS : x1  x2  x3 0, s1 48, s2 20, s3 8

rhs
0
48
20
8

BV
z=0
s1=48
s2=20
s3=8

Langkah 3 Algoritma Simpleks
Apakah

BFS tersebut sudah optimal?

BFS : x1  x2  x3 0, s1 48, s2 20, s3 8

z 60 x1  30 x2  20 x3
60 0  30 0  20 0 0
Dapat
 
Baris 0

z
1

dilihat dari koefisien baris 0.
x1
-60

x2
-30

x3
-20

Satu unit penambahan x1,
menaikkan z sebesar $ 60

s1
0

s2
0

s3
0

rhs
0

Langkah 3 Algoritma Simpleks
 Interpretasi

koefisien baris 0

◦ Bagi NBV
 Variabel
variabel
 Variabel
variabel

dengan Koefisien -c: satu unit penambahan
tsb menaikkan Z sebesar c.
dengan koefisien +c: satu unit penambahan
tsb menurunkan Z sebesar c.

◦ Variabel dengan koefisien 0: BV
 
Baris 0

z
1

x1
-60

x2
-30

x3
-20

s1
0

s2
0

s3
0

• Semua koefisien bagi NBV adalah < 0
• Ada beberapa kemungkinan menaikkan nilai Z
dengan menaikkan nilai peubah keputusan:
menambah produksi
• BFS yang ada belum optimal

rhs
0

Langkah 3 Algoritma Simpleks
 
Baris 0

z
1

x1
-60

x2
-30

x3
-20

s1
0

s2
0

s3
0

rhs
0

Produksi satu unit x1 (Bangku) akan menaikkan Z
(profit) sebesar 60 ($)
Produksi satu unit x2 (Meja) akan menaikkan Z
(profit) sebesar 30 ($)
Produksi satu unit x3 (Kursi) akan menaikkan Z
(profit) sebesar 20 ($)
Pilih Entering Variable: Peubah NBV
yang meningkatkan Z paling besar,
untuk menggantikan salah satu

x1

Langkah 4 Algoritma Simpleks
 Menentukan

peubah BV yang mana yang akan
digantikan oleh x1
 Dengan melakukan Ratio Test, agar pergantian
peubah tetap berada di dalam wilayah feasibel
 
Baris 0
Baris 1
Baris 2
Baris 3

z
1
 0
 0
 0

x1
-60
8
4
2

x2
-30
6
2
1.5

BFS : x1  x2  x3 0,
s1 48, s2 20, s3 8

Peubah
selainn
ya
tetap =

x3
-20
1
1.5
0.5

s1
0
1
0
0

s2
0
0
1
0

BV  s1 , s2 , s3 

s3
0
0
0
1

rhs
0
48
20
8

NBV  x1 , x2 , x3 

Baris 1

8 x1  s1 48

Baris 2

4 x1  s2 20 agar s2 0  x1  204 5

Baris 3

2 x1  s3 8

agar s1 0  x1  488 6
agar s3 0  x1  82 4

BV
z=0
s1=48
s2=20
s3=8

Langkah 4 Algoritma Simpleks
 Semua

syarat: x1 6, x1 5, x1 4

 Terpenuhi

pada:x1 4

di baris 3

 Ratio

Test: agar pergantian peubah tetap berada di dalam
wilayah feasibel, dipilih peubah dengan nilai ratio test
terkecil

 
Baris 0
Baris 1
Baris 2
Baris 3

z
1
 0
 0
 0

 Pada

x1
-60
8
4
2

x2
-30
6
2
1.5

x3
-20
1
1.5
0.5

s1
0
1
0
0

s2
0
0
1
0

s3
0
0
0
1

rhs
0
48
20
8

BFS berikutnya x1 adalah peubah NBV yang akan
menggantikan s3 salah satu dari BV
 Dengan ERO – Elementary Row Operation

BV
z=0
s1=48
s2=20
s3=8

Langkah 4 Algoritma Simpleks
Elementary

Row Operation (Operasi
baris elementer): operasi antar baris
untuk menentukan bentuk kanonik
yang baru (BV & NBV yang baru)
Di dalam bentuk kanonik baru:
BV  s1 , s2 , x1 NBV  s3 , x2 , x3 
B1 B2 B3
1 0 0

0 1
0 0

0
1

Peubah di dalam BV harus
mempunyai bentuk kanonik

Operasi Baris Elementer
BV  s1 , s2 , x1 NBV  s3 , x2 , x3 

Pada Iterasi berikutnya ingin diperoleh
Tableau sbb:

 
Baris 0
Baris 1
Baris 2
Baris 3

z

X1
0
0
0
1

x2

x3

s1
0
1
0
0

s2
0
0
1
0

s3

rhs

Operasi Baris Elementer
Initial Tableau (Tableau 0):
Tableau


Baris 0
Baris 1
Baris 2
Baris 3

z
1
 0
 0
 0

x1
-60
8
4
2

x2
-30
6
2
1.5

x3
-20
1
1.5
0.5

s1
0
1
0
0

Dengan ERO ingin diperoleh Tableau
1: : baris 3 didahulukan (pivot
row)
 Tableau
z
x1
x2
x3
s1
1

Baris 3

0

1

0.75

0.25

0

s2
0
0
1
0

s3
0
0
0
1

rhs
0
48
20
8

Baris 3(1) 

BV
z=0
s1=48
s2=20
s3=8

Baris 3(0)
2

s2

s3

rhs

0

0.5

4

Operasi Baris Elementer
Initial Tableau (Tableau 0):
Tableau


Baris 0
Baris 1
Baris 2
Baris 3

z
1
 0
 0
 0

x1
-60
8
4
2

x2
-30
6
2
1.5

x3
-20
1
1.5
0.5

s1
0
1
0
0

s2
0
0
1
0

s3
0
0
0
1

rhs
0
48
20
8

BV
z=0
s1=48
s2=20
s3=8

ERO untuk baris 0, memanfaatkan baris 3 pada tableu 1
(pivot row) Baris 0(1) Baris 0(0)  60 * Baris 3(1)

 Tableau
1

z

x1

x2

x3

s1

s2

s3

rhs

Baris 0

1

0

15

-5

0

0

30

240

0

1

0.75

0.25

0

0

0.5

4

Baris 3

Operasi Baris Elementer
Initial Tableau (Tableau 0):
Tableau


Baris 0
Baris 1
Baris 2
Baris 3

z
1
 0
 0
 0

x1
-60
8
4
2

x2
-30
6
2
1.5

x3
-20
1
1.5
0.5

s1
0
1
0
0

s2
0
0
1
0

s3
0
0
0
1

rhs
0
48
20
8

BV
z=0
s1=48
s2=20
s3=8

ERO untuk baris 1, memanfaatkan baris 3 pada tableu 1
(pivot row) Baris 1(1) Baris 1(0)  8 * Baris 3(1)

 Tableau
1
Baris 0
Baris 1

z

x1

x2

x3

s1

s2

s3

rhs

1
0

0
0

15
0

5
-1

0
1

0
0

30
-4

240
16

Baris 3

0

1

0.75

0.25

0

0

0.5

4

Operasi Baris Elementer
Initial Tableau (Tableau 0):
Tableau


Baris 0
Baris 1
Baris 2
Baris 3

z
1
 0
 0
 0

x1
-60
8
4
2

x2
-30
6
2
1.5

x3
-20
1
1.5
0.5

s1
0
1
0
0

s2
0
0
1
0

s3
0
0
0
1

rhs
0
48
20
8

BV
z=0
s1=48
s2=20
s3=8

ERO untuk baris 2, memanfaatkan baris 3 pada tableu 1
(pivot row) Baris 2(1) Baris 2(0)  4 * Baris 3(1)

 Tableau
1
Baris 0
Baris 1
Baris 2
Baris 3

z

x1

x2

x3

s1

s2

s3

rhs

1
0
0
0

0
0
0
1

15
0
-1
0.75

-5
-1
0,5
0.25

0
1
0
0

0
0
1
0

30
-4
-2
0.5

240
16
4
4

BV
z=240
s1=16
s2=4
x1=4

Tableau hasil iterasi: Tableau 1
Tableau


z

x1

x2

x3

s1

s2

s3

rhs

BV

Baris 0

1

0

15

-5

0

0

30

240

z=240

Baris 1

0

0

0

-1

1

0

-4

16

s1=16

Baris 2

0

0

-1

0,5

0

1

-2

4

s2=4

Baris 3

0

1

0,75

0,25

0

0

0,5

4

x1=4

Pada tableau 1:

BV  s1 , s2 , x1 NBV  s3 , x2 , x3 

BFS : x1 4, x2  x3 0, s1 16, s2 4, s3 0, z 240
Kembali

ke langkah 3: Apakah BFS tersebut sudah optimal?

Lihat

koefisien di baris 0, apakah masih ada kemungkinan menaikkan
nilai z dengan menambah nilai peubah keputusan?

Peubah dengan Koefisien baris

x3

Langkah 3 Algoritma Simpleks,
Iterasi ke-2
Tableau


z

x1

x2

x3

s1

s2

s3

rhs

BV

Baris 0

1

0

15

-5

0

0

30

240

z=240

BV  s1 , s2 , x1

NBV  s3 , x2 , x3 

Produksi satu unit x2 (Meja) akan menurunkan Z
(profit) sebesar 15 ($)
Produksi satu unit x3 (Kursi) akan menaikkan Z (profit)
sebesar 5 ($)
 BFS yang ada belum optimal.
Pilih Entering Variable: Peubah NBV
yang meningkatkan Z paling besar,
untuk menggantikan salah satu
peubah di BV

x3

Langkah 4 Algoritma Simpleks,
Iterasi 2
 Menentukan

peubah BV yang mana yang akan
digantikan oleh x2BV  s1 , s2 , x1
 Dengan melakukan Ratio Test, agar pergantian
peubah tetap berada di dalam wilayah feasibel
Tableau

Baris 0
Baris 1
Baris 2
Baris 3

Baris 1

z
1
0
0
0

x1
0
0
0
1

x2
15
0
-1
0,75

x3
-5
-1
0,5
0,25

s1
0
1
0
0

s2
0
0
1
0

s3
30
-4
-2
0,5

rhs
240
16
4
4

BV
z=240
s1=16
s2=4
x1=4

 x3  s1 16  s1  x3  16 0 untuk semua x3 0
Pada baris dengan koefisien negatif, tidak
perlu dilakukan ratio test

Langkah 4 Algoritma Simpleks,
Iterasi 2
Tableau

Baris 0
Baris 1
Baris 2
Baris 3

z
1
0
0
0

x1
0
0
0
1

x2
15
0
-1
0,75

x3
-5
-1
0,5
0,25

s1
0
1
0
0

s2
0
0
1
0

Baris 2

agar s2 0  x3  04.5 8

Baris 3

agar x1 0  x3  0.425 16

 Pemenang
 x3

s3
30
-4
-2
0,5

ratio test (terkecil): di baris 2

akan menggantikan s2

rhs
240
16
4
4

BV
z=240
s1=16
s2=4
x1=4

Langkah 4 Algoritma Simpleks,
Iterasi 2

Kolo
m
pivot

Tableau

Baris 0
Baris 1
Baris 2
Baris 3

z
1
0
0
0

x1
0
0
0
1

x2
15
0
-1
0,75

x3
-5
-1
0,5
0,25

s1
0
1
0
0

s2
0
0
1
0

s3
30
-4
-2
0,5

rhs
240
16
4
4

BV
z=240
s1=16
s2=4
x1=4

Kolom
pivot
 Pada BFS berikutnya x3 adalah peubah NBV yang akan
menggantikan s2 salah satu dari BV
BV  s1 , x3 , x1
 Dengan ERO – Elementary Row Operation
NBV  s3 , x2 , s2 

Tableau 2 mempunyai bentuk kanonik baru:
 Tableau
2
Baris 0
Baris 1
Baris 2
Baris 3

z

X1
0
0
0
1

x2

X3
0
0
1
0

s1
0
1
0
0

s2

s3

rhs

Operasi Baris Elementer
Tableau

Baris 0
Baris 1
Baris 2
Baris 3

z
1
0
0
0

x1
0
0
0
1

x2
15
0
-1
0,75

x3
-5
-1
0,5
0,25

s1
0
1
0
0

s2
0
0
1
0

Dengan ERO untuk memperoleh
Tableau 2: baris 2 didahulukan
(pivot row)

s3
30
-4
-2
0,5

rhs
240
16
4
4

Baris 2( 2) 

BV
z=240
s1=16
s2=4
x1=4

Baris 2(1)
0. 5

Tableau 2

z

x1

x2

x3

s1

s2

s3

rhs

Baris 2

0

0

-2

1

0

2

-4

8

Operasi Baris Elementer
Tableau

Baris 0
Baris 1
Baris 2
Baris 3

z
1
0
0
0

x1
0
0
0
1

x2
15
0
-1
0,75

x3
-5
-1
0,5
0,25

s1
0
1
0
0

s2
0
0
1
0

s3
30
-4
-2
0,5

rhs
240
16
4
4

BV
z=240
s1=16
s2=4
x1=4

ERO untuk baris 0, memanfaatkan baris 2 pada tableu 2
(pivot row)

Baris 0(2) Baris 0(1)  0.5 * Baris 2(2)

Tableau 2

z

x1

x2

x3

s1

s2

s3

rhs

Baris 0

1

0

5

0

0

10

10

280

Baris 2

0

0

-2

1

0

2

-4

8

Operasi Baris Elementer
Tableau

Baris 0
Baris 1
Baris 2
Baris 3

z
1
0
0
0

x1
0
0
0
1

x2
15
0
-1
0,75

x3
-5
-1
0,5
0,25

s1
0
1
0
0

s2
0
0
1
0

s3
30
-4
-2
0,5

rhs
240
16
4
4

BV
z=240
s1=16
s2=4
x1=4

ERO untuk baris 1, memanfaatkan baris 2 pada tableu 2
(pivot row)

Baris 1( 2) Baris 1(1)  (  1) * Baris 2( 2)

Tableau 2

z

x1

x2

x3

s1

s2

s3

rhs

Baris 0

1

0

5

0

0

10

10

280

Baris 1

0

0

-2

0

1

2

-8

24

Baris 2

0

0

-2

1

0

2

-4

8

Operasi Baris Elementer
Tableau

Baris 0
Baris 1
Baris 2
Baris 3

z
1
0
0
0

x1
0
0
0
1

x2
15
0
-1
0,75

x3
-5
-1
0,5
0,25

s1
0
1
0
0

s2
0
0
1
0

s3
30
-4
-2
0,5

rhs
240
16
4
4

BV
z=240
s1=16
s2=4
x1=4

ERO untuk baris 3, memanfaatkan baris 2 pada tableu 2
(pivot row)

Baris 3( 2) Baris 3(1)  0.25 * Baris 2( 2)

Tableau 2

z

x1

x2

x3

s1

s2

s3

rhs

Baris 0

1

0

5

0

0

10

10

280

Baris 1
Baris 2

0
0

0
0

-2
-2

0
1

1
0

2
2

-8
-4

24
8

Baris 3

0

1

1.25

0

0

-0.5

1.5

2

Tableau Hasil Iterasi: Tableau 2
Tableau
2
Baris 0
Baris 1
Baris 2
Baris 3

z
1
0
0
0

x1
0
0
0
1

x2
5
-2
-2
1.25

x3
0
0
1
0

s1
0
1
0
0

s2
10
2
2
-0.5

s3
10
-8
-4
1.5

rhs
280
24
8
2

BV
z=280
s1=24
x3=8
x1=2

BV  s1 , x3 , x1 NBV  s3 , x2 , s2 
BFS : x1 2, x2 0, x3 8, s1 24, s2 s3 0, z 280
Kembali

ke langkah 3: Apakah BFS tersebut sudah optimal?

Lihat

koefisien di baris 0, apakah masih ada kemungkinan
menaikkan nilai z dengan menambah nilai peubah keputusan?



Semua koefisien baris 0 >=0. Tidak mungkin lagi
menaikkan nilai z.
BFS sudah Optimal

Solusi Optimal Dakota’s Problem
x1 :# produksi bangku
x2 :# produksi meja
x3 :# produksi kursi
BFS : x1 2, x2 0, x3 8, s1 24, s2 s3 0, z 280

Agar keuntungan maksimum, dan
produksi yang sesuai dengan kendala
(bahan baku dan jam pengerjaan), harus
diproduksi sejumlah 2 buah bangku (x1), 8
buah kursi (x3), tanpa memproduksi meja

Langkah-langkah Algoritma
Simpleks untuk Masalah Max
Langkah
1

Rubah LP ke bentuk standar,
tuliskan dalam bentuk tableau.

Langkah
2

Tentukan BFS (BV dan NBV).
BV dapat ditentukan dari elemen
tableau yang berbentuk kanonik.

Langkah
3

Jika semua koefisien baris 0 >=0,
BFS solusi optimal
Selainnya, pilih koefisien paling
negatif untuk masuk ke dalam BV
Ratio test (terkecil) untuk
menentukan peubah BV mana yang
harus digantikan (menjadi NBV)

Langkah
4

Langkah-langkah Algoritma
Simpleks untuk Masalah Max
Langkah
4

Lakukan ERO untuk membentuk
bentuk kanonik baru, BFS baru
(Tableau baru)
Kembali ke langkah 3