Metode Simpleks
Pengantar
Salah satu teknik penentuan solusi optimal yang
digunakan dalam pemrograman linier adalah metode simpleks. Penentuan solusi optimal menggunakan metode
simpleks didasarkan pada teknik eleminasi Gauss Jordan. Penentuan solusi
optimal dilakukan dengan memeriksa titik ekstrim satu per satu dengan cara
perhitungan iteratif. Sehingga penentuan solusi optimal dengan simpleks
dilakukan tahap demi tahap yang disebut dengan iterasi. Iterasi ke-i hanya
tergantung dari iterasi sebelumnya (i-1).
Ada beberapa istilah yang sangat sering digunakan
dalam metode simpleks, diantaranya :
- Iterasi adalah tahapan perhitungan dimana nilai
dalam perhitungan itu tergantung dari nilai tabel sebelumnya.
- Variabel non basis adalah variabel yang nilainya diatur menjadi
nol pada sembarang iterasi. Dalam terminologi umum, jumlah variabel non
basis selalu sama dengan derajat bebas
dalam sistem persamaan.
- Variabel basis merupakan variabel yang nilainya bukan nol
pada sembarang iterasi. Pada solusi awal, variabel basis merupakan
variabel slack (jika fungsi kendala merupakan pertidaksamaan ≤ ) atau
variabel buatan (jika fungsi kendala menggunakan pertidaksamaan ≥ atau =). Secara umum,
jumlah variabel basis selalu sama
dengan jumlah fungsi
pembatas (tanpa fungsi non negatif).
- Solusi atau nilai kanan merupakan nilai sumber daya pembatas
yang masih tersedia. Pada solusi awal, nilai kanan atau solusi sama dengan
jumlah sumber daya pembatas awal
yang ada, karena aktivitas belum dilaksanakan.
- Variabel slack adalah variabel yang ditambahkan ke model
matematik kendala untuk mengkonversikan
pertidaksamaan ≤ menjadi persamaan (=). Penambahan variabel ini terjadi
pada tahap inisialisasi. Pada solusi awal, variabel slack akan berfungsi
sebagai variabel basis.
- Variabel surplus adalah variabel yang dikurangkan dari model matematik kendala untuk
mengkonversikan pertidaksamaan ≥ menjadi
persamaan (=). Penambahan ini terjadi pada tahap inisialisasi. Pada solusi
awal, variabel surplus tidak dapat berfungsi sebagai variabel basis.
- Variabel buatan adalah variabel yang ditambahkan ke model
matematik kendala dengan bentuk ≥ atau = untuk difungsikan sebagai variabel
basis awal. Penambahan variabel ini terjadi pada tahap inisialisasi.
Variabel ini harus bernilai 0 pada solusi optimal, karena kenyataannya
variabel ini tidak ada. Variabel hanya ada di atas kertas.
- Kolom pivot (kolom kerja) adalah kolom yang memuat variabel
masuk. Koefisien pada kolom ini akn menjadi pembagi nilai kanan untuk
menentukan baris pivot (baris kerja).
- Baris pivot (baris kerja) adalah salah satu baris dari antara
variabel basis yang memuat variabel keluar.
- Elemen pivot (elemen kerja) adalah elemen yang terletak pada
perpotongan kolom dan baris pivot. Elemen pivot akan menjadi dasar
perhitungan untuk tabel simpleks berikutnya.
- Variabel masuk adalah variabel yang terpilih untuk menjadi
variabel basis pada iterasi berikutnya. Variabel masuk dipilih satu dari
antara variabel non basis pada setiap iterasi. Variabel ini pada iterasi
berikutnya akan bernilai positif.
- Variabel keluar adalah variabel yang keluar dari variabel
basis pada iterasi berikutnya dan digantikan oleh variabel masuk. Variabel
keluar dipilih satu dari antara variabel basis pada setiap iiterasi.
Variabel ini pada iterasi berikutnya akan bernilai nol.
BENTUK BAKU
Sebelum melakukan perhitungan iteratif untuk
menentukan solusi optimal, pertama sekali bentuk umum pemrograman linier
dirubah ke dalam bentuk baku terlebih dahulu. Bentuk baku dalam metode simpleks
tidak hanya mengubah persamaan kendala ke dalam bentuk sama dengan, tetapi
setiap fungsi kendala harus diwakili oleh satu variabel basis awal. Variabel
basis awal menunjukkan status sumber daya pada kondisi sebelum ada aktivitas
yang dilakukan. Dengan kata lain, variabel keputusan semuanya masih bernilai
nol. Dengan demikian, meskipun fungsi kendala pada bentuk umum pemrograman
linier sudah dalam bentuk persamaan, fungsi kendala tersebut masih harus tetap
berubah.
Ada beberapa hal yang harus diperhatikan dalam membuat bentuk baku, yaitu :
- Fungsi
kendala dengan pertidaksamaan ≤ dalam bentuk umum, dirubah menjadi
persamaan (=) dengan menambahkan satu variabel slack.
- Fungsi
kendala dengan pertidaksamaan ≥ dalam bentuk umum, dirubah menjadi
persamaan (=) dengan mengurangkan satu variabel surplus dan menambahkan satu variabel
artificial.
- Fungsi
kendala dengan persamaan dalam benttuk umum,ditambahkan satu artificial
variabel (variabel buatan).
Perhatikan kasus A berikut :
Fungsi tujuan :
minimumkan z = 2 x1 + 5.5 x2
Kendala :
x1 +
x2 = 90
0.001 x1 +
0.002 x2 ≤ 0.9
0.09 x1 +
0.6 x2 ≥ 27
0.02 x1 +
0.06 x2 ≤ 4.5
x1, x2
≥ 0
Bentuk di atas adalah bentuk umum pemrograman liniernya. Kedalam bentuk
baku, model matematik tersebut akan berubah menjadi :
Fungsi tujuan :
minimumkan
z = 2 x1 + 5.5 x2+ 0.S1+0. S2+0. S3+ M.A4+ M.A2
Kendala :
x1 + x2 + A1 = 90
0.001 x1 + 0.002 x2 + S1 = 0.9
0.09 x1 + 0.6 x2
– S2 + A2 = 27
0.02 x1 + 0.06 x2
+ S3 = 4.5
Fungsi kendala pertama
mendapatkan variable buatan (A1), karena bentuk umumnya sudah menggunakan bentuk
persamaan. Fungsi kendala kedua dan keempat
mendapatkan variabel slack (S1 dan S3) karena bentuk
umumnya menggunakan pertidaksamaan ≤, sedangkan
fungsi kendala ketiga mendapatkan variabel surplus (S2) dan variabel
buatan (A2) karena bentuk umumnya menggunakan pertidaksamaan
≥.
Perhatikan
pula kasus B berikut ini :
Maksimumkan z = 2x1
+ 3x2
Kendala :
10 x1 + 5 x2
≤ 600
6 x1 + 20 x2
≤ 600
8 x1 + 15 x2
≤ 600
x1, x2 ≥
Bentuk di atas juga merupakan bentuk umum. Perubahan ke dalam bentuk baku
hanya membutuhkan variabel slack, karena semua fungsi kendala menggunakan
bentuk pertidaksamaan ≤ dalam bentuk umumnya. Maka bentuk bakunya adalah
sebagai berikut :
Maksimumkan z = 2x1 + 3x2 + 0s1 + 0s2
+ 0s3
Kendala :
10 x1 + 5 x2 + S1 = 600
6 x1 + 20 x2 + S2 = 600
8 x1 + 15 x2 + S3 = 600
S1 , S2
, S3 merupakan variable slack.
PEMBENTUKAN TABEL SIMPLEKS
Dalam perhitungan iterative, kita akan bekerja menggunakan tabel. Bentuk
baku yang sudah diperoleh, harus dibuat ke dalam bentuk tabel.
Semua variabel yang bukan variabel basis mempunyai solusi (nilai kanan)
sama dengan nol dan koefisien variabel basis pada baris tujuan harus sama
dengan 0. Oleh karena itu kita harus membedakan pembentukan tabel awal
berdasarkan variabel basis awal. Dalam sub bab ini kita hanya akan memperhatikan
fungsi kendala yang menggunakan variabel slack dalam
bentuk bakunya, sedangkan yang menggunakan variabel buatan akan dibahas pada
sub bab lainnya.
Gunakan kasus B di atas, maka tabel awal simpleksnya adalah :
Var Dasar
|
Cj
|
X1
|
X2
|
S1
|
S2
|
S3
|
Konstanta
|
2
|
3
|
0
|
0
|
0
|
|||
S1
|
0
|
10
|
5
|
1
|
0
|
0
|
600
|
S2
|
0
|
6
|
20
|
0
|
1
|
0
|
600
|
S3
|
0
|
8
|
15
|
0
|
0
|
1
|
600
|
|
Zj
|
0
|
0
|
0
|
0
|
0
|
0
|
|
Zj - Cj
|
-2
|
-3
|
0
|
0
|
0
|
|
LANGKAH-LANGKAH PENYELESAIAN
Langkah-langkah penyelesaian adalah sebagai berikut :
- Periksa
apakah tabel optimum atau tidak. Tabel dikatakan optimum apabila tidak ada
nilai Zj - Cj ( masalah maksimalisasi) atau nilai Cj
- Zj ( masalah minimalisasi) yang negatif. Apabila ada yang
negatif maka tabel simplek diperbaiki ( Langkah 2 – 5)
- Tentukan
kolom pivot.
Penentuan kolom pivot ditentukan dari nilai nilai Zj - Cj
( masalah maksimalisasi) atau nilai Cj - Zj ( masalah
minimalisasi) yang negatif terkecil
- Tentukan
baris pivot.
Baris pivot dipilih dari nilai rasio konstanta/nilai
kolom pivot yang positif
terkecil
- Tentukan
elemen pivot.
Elemen pivot merupakan nilai yang terletak pada
perpotongan kolom dan baris pivot.
- Bentuk
tabel simpleks baru.
Tabel simpleks baru dibentuk dengan pertama sekali
menghitung nilai baris pivot baru. Baris pivot baru = baris pivot lama/elemen pivot.
Baris baru lainnya = baris lama - nilai kolom pivot baris yang bersangkutan dikali
baris pivot baru
Selesaikan kasus berikut ini menggunakan metode simpleks :
Maksimum z = 8 x1 + 9
x2 + 4x3
Kendala :
x1 + x2 +
2x3 ≤ 2
2x1 + 3x2 +
4x3 ≤ 3
7x1 + 6x2 +
2x3 ≤ 8
x1,x2,x3
≥ 0
Penyelesaian :
Bentuk bakunya adalah :
Maksimum Z = 8 x1 + 9 x2 + 4x3
+ 0S1 + 0S2 + 0S3
Kendala :
x1
+ x2 + 2x3 + s1 = 2
2x1
+ 3x2 + 4x3 + s2 = 3
7x1
+ 6x2 + 2x3 + s3
= 8
Solusi / table awal simpleks :
Var Dasar
|
Cj
|
X1
|
X2
|
X3
|
S1
|
S2
|
S3
|
Kuantitas
|
8
|
9
|
4
|
0
|
0
|
0
|
|||
S1
|
0
|
1
|
1
|
2
|
1
|
0
|
0
|
2
|
S2
|
0
|
2
|
3
|
4
|
0
|
1
|
0
|
3
|
S3
|
0
|
7
|
6
|
2
|
0
|
0
|
1
|
8
|
|
Zj
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
|
Zj -
Cj
|
-8
|
-9
|
-4
|
0
|
0
|
0
|
|
Karena nilai negative terkecil
ada pada kolom X2, maka kolom X2 adalah kolom
pivot dan X2 adalah variabel masuk. Rasio pembagian nilai kanan dengan kolom pivot terkecil adalah 1
bersesuaian dengan baris s2, maka baris s2
adalah baris pivot dan s2 adalah varisbel keluar. Elemen pivot
adalah 3.
Var Dasar
|
Cj
|
X1
|
X2
|
X3
|
S1
|
S2
|
S3
|
Kuantitas
|
Rasio
|
8
|
9
|
4
|
0
|
0
|
0
|
|
|||
S1
|
0
|
1
|
1
|
2
|
1
|
0
|
0
|
2
|
2/1=2
|
S2
|
0
|
2
|
3
|
4
|
0
|
1
|
0
|
3
|
3/3=1
|
S3
|
0
|
7
|
6
|
2
|
0
|
0
|
1
|
8
|
8/6=4/3
|
|
Zj
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
|
|
Zj -
Cj
|
-8
|
-9
|
-4
|
0
|
0
|
0
|
|
|
Iterasi 1
Nilai pertama yang kita miliki adalah nilai baris pivot baru (baris x2). Semua nilai pada baris s2 pada
tabel solusi awal dibagi dengan 3 (elemen pivot).
Var Dasar
|
Cj
|
X1
|
X2
|
X3
|
S1
|
S2
|
S3
|
Kuantitas
|
8
|
9
|
4
|
0
|
0
|
0
|
|||
S1
|
0
|
|
|
|
|
|
|
|
X2
|
9
|
2/3
|
3/3
|
4/3
|
0/3
|
1/3
|
0/3
|
3/3
|
S3
|
0
|
|
|
|
|
|
|
|
|
Zj
|
|
|
|
|
|
|
|
|
Zj -
Cj
|
|
|
|
|
|
|
|
Perhitungan nilai baris
baru yang lainnya :
Baris s1 :
1 1 2 1 0 0 2
1 (2/3 1 4/3 0 1/3 0 1 ) -
1/3 0 2/3 1 -1/3 0 1
Baris s3 :
7 6 2 0 0 1 8
6 (
2/3 1 4/3 0 1/3 0 1 ) -
3 0 -6 0 -2 1 2
Maka tabel iterasi 1 ditunjukkan tabel di bawah. Selanjutnya kita periksa
apakah tabel sudah optimal atau belum. Karena nilai baris z di bawah variabel x1
masih negatif, maka tabel belum optimal. Kolom dan baris pivotnya ditandai pada tabel di bawah ini :
Var Dasar
|
Cj
|
X1
|
X2
|
X3
|
S1
|
S2
|
S3
|
Kuantitas
|
8
|
9
|
4
|
0
|
0
|
0
|
|||
S1
|
0
|
1/3
|
0
|
2/3
|
1
|
-1/3
|
0
|
2
|
X2
|
9
|
2/3
|
1
|
4/3
|
0
|
1/3
|
0
|
3
|
S3
|
0
|
3
|
0
|
-6
|
0
|
-2
|
1
|
8
|
|
Zj
|
6
|
9
|
12
|
0
|
3
|
0
|
27
|
|
Zj -
Cj
|
-2
|
0
|
8
|
0
|
3
|
0
|
|
VB
|
X1
|
X2
|
X3
|
S1
|
S2
|
S3
|
NK
|
Rasio
|
Z
|
-2
|
0
|
8
|
0
|
3
|
0
|
9
|
-
|
S1
|
1/3
|
0
|
2/3
|
1
|
-1/3
|
0
|
1
|
3
|
X2
|
2/3
|
1
|
4/3
|
0
|
1/3
|
0
|
1
|
3/2
|
S3
|
3
|
0
|
-6
|
0
|
-2
|
1
|
2
|
2/3
|
Iterasi 2 :
Var Dasar
|
Cj
|
X1
|
X2
|
X3
|
S1
|
S2
|
S3
|
Kuantitas
|
Rasio
|
8
|
9
|
4
|
0
|
0
|
0
|
||||
S1
|
0
|
1/3
|
0
|
2/3
|
1
|
-1/3
|
0
|
2
|
3
|
X2
|
9
|
2/3
|
1
|
4/3
|
0
|
1/3
|
0
|
3
|
3/2
|
S3
|
0
|
3
|
0
|
-6
|
0
|
-2
|
1
|
8
|
2/3
|
|
Zj
|
6
|
9
|
12
|
0
|
3
|
0
|
27
|
|
|
Zj -
Cj
|
-2
|
0
|
8
|
0
|
3
|
0
|
|
|
Variabel masuk dengan demikian
adalah X1 dan variabel keluar adalah S3
. Hasil Iterasi ke 2 sbb:
Var Dasar
|
Cj
|
X1
|
X2
|
X3
|
S1
|
S2
|
S3
|
Kuantitas
|
Rasio
|
8
|
9
|
4
|
0
|
0
|
0
|
||||
S1
|
0
|
0
|
0
|
4/3
|
1
|
-1/9
|
-1/9
|
7/9
|
3
|
X2
|
9
|
0
|
1
|
8/3
|
0
|
7/9
|
-2/9
|
5/9
|
3/2
|
X1
|
8
|
1
|
0
|
-2
|
0
|
-2/3
|
1/3
|
2/3
|
2/3
|
|
Zj
|
8
|
9
|
8
|
0
|
5/3
|
2/3
|
31/3
|
|
|
Zj -
Cj
|
0
|
0
|
4
|
0
|
5/3
|
2/3
|
|
|
Tabel sudah optimal, sehingga perhitungan iterasi dihentikan !
Perhitungan dalam simpleks menuntut
ketelitian tinggi, khususnya jika angka
yang digunakan adalah pecahan. Pembulatan harus diperhatikan dengan baik. Disarankan jangan menggunakan
bentuk bilangan desimal, akan lebih teliti jika menggunakan bilangan pecahan.
Pembulatan dapat menyebabkan iterasi lebih panjang atau bahkan tidak selesai
karena ketidaktelitian dalam melakukan pembulatan.
Perhitungan iteratif dalam simpleks pada dasarnya merupakan pemeriksaan satu
per satu titik-titik ekstrim layak pada daerah penyelesaian. Pemeriksaan
dimulai dari kondisi nol (dimana semua aktivitas/variabel keputusan bernilai
nol). Jika titik ekstrim berjumlah n, kemungkinan terburuknya kita akan
melakukan perhitungan iteratif sebanyak n kali.
0 komentar:
Posting Komentar