LINIER PROGRAMING
1. Seorang pengrajin enghasilkan satu tipe meja dan satu tipe kursi. Proses yang dikerjakan hanya merakit meja dan kursi. Dibutuhkan waktu 2 jam untuk merakit 1 unit meja dan 30 menit untuk merakit 1 unit kursi. Perakitan dilakukan oleh 4 orang karyawan dengan waktu kerja 8 jam perhari. Pelanggan pada umumnya membeli paling banyak 4 kursi untuk 1 meja. Oleh karena itu, pengrajin harus memproduksi kursi paling banyak empat kali jumlah meja. Harga jual per unit meja adalah Rp 1,2 juta dan per unit kursi adalah Rp 500 ribu.
Dari soal diatas, solusinya adalah:
a. tujuannya adalah memaksimalkan pendapatan.
b. Sumberdaya yang dibatasi:
- waktu perakitan
2 jam = 1 unit meja
30 menit = 1 unit kursi
- jumlah pekerja 4 orang
- jam kerja = 8 jam
- pangsa pasar = 1 meja maksimal 4 kursi
c. alternatif keputusan adalah mengatur jumlah produksi
d. Model matematika:
x1= meja
x2= kursi
Tujuan : Max Z = 1,2x1 + 0,5x2
Kendala: 2x1 + 0,5x2 ≤ 32
x1 / x2 = ¼
x1, x2 ≥ 0
2. Seorang peternak memiliki 200 kambinng yang mengkonsumsi 90 kg pakan khusus setiap harinya. Pakan tersebut disiapkan menggunakan campuran jagung dan bungkil kedelai dengan komposisi sebagai berikut:
BAHAN Kg per kg bahan
Kalsium Protein Serat Biaya (RP/kg)
Jagung 0.001 0.09 0.02 2000
Bungkil Kedelai 0.002 0.60 0.06 5500
Kebutuhan pakan kambing setiap harinya adalah paling banyak 1% kalsium, paling sedikit 30% protein dan paling banyak 5% serat.
Dari soal diatas, solusinya adalah:
a. tujuannya adalah meminimalkan biaya pembelian bahan pakan.
b. Sumberdaya yang dibatasi:
- jumlah pakan per hari adalah 90 kg
- kandungan kalsium : jagung = 0,001, bungkil kedelai = 0,002 dan jumlah paling banyak kalsium sebesar 1%
- kandungan protein : jagung = 0,09, bungkil kedelai = 0,60 dan jumlah paling sedikit adalah 30%
- kandungan serat : jagung = 0,02, bungkil kedelai = 0,06 dan jumlah paling banyak serat adalah 5%
c. alternatif keputusan adalah jumlah jagung dan bungkil kedelai yang akan digunakan
d. Model matematika:
Kita definisikan :
x1 = jumlah jagung yang akan digunakan
x2 = jumlah bungkil kedelai yang akan digunakan
Fungsi tujuan : minimumkan z = 2000 x1 + 5500 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
3. Suatu oabrik perakitan radio menghasilkan dua tipe radio, yaitu HiFi-1 dan HiFi-2 pada fasilitas perakitan yang sama. Lini perakitan terdiri dari 3 stasiun kerja. Waktu perakitan masing-masing tipe pada masing-masing stasiun kerja adalah sebagai berikut:
Statsiun Kerja Waktu perakitan per unit (menit)
HiFi-1 HiFi-2
1 6 4
2 5 5
3 4 6
Waktu kerja masing-masing stasiun kerja adalah 8 jam perhari. Masing-masing stasiun kerja membutuhkan perawatan selama 10%, 14% dan 12% dari total waktu kerja (8jam) secara berturut-turut untuk stasiun kerja 1,2 dan 3.
a. tujuannya adalah memaksimalkan produksi.
b. Sumberdaya yang dibatasi:
- Waktu perakitan masing-masing stasiun kerja:
Stasiun kerja 1 = HiFi-1 = 6 menit dan HiFi-2 = 4 menit
Stasiun kerja 2 = HiFi-1 = 5 menit dan HiFi-2= 5 menit
Stasiun kerja 3 = HiFi-1 = 4 menit dan HiFi-2= 6 menit
- Jumlah waktu perawatan tiap mesin
Stasiun kerja 1 : (8 * 60) – (10% (8 * 60)) = 432
Stasiun kerja 2 : (8 * 60) – (14% (8 * 60)) = 412,8
Stasiun kerja 3 : (8 * 60) – (12% (8 * 60)) = 422,4
c. alternatif keputusan adalah waktu perakitan tiap stasiun kerja
d. Model matematika:
Kita definisikan :
x1 = HiFi-1
x2 = HiFi-2
Fungsi tujuan : max z = x1 + x2
Kendala :
6 x1 + 4 x2 ≤ 432
5 x1 + 5 x2 ≤ 412,8
4 x1 + 6 x2 ≤ 422,4
x1, x2 ≥ 0
4. Dua produk menghasilkan menggunakan tiga mesin. Waktu masing-masing mesin yang digunakan untuk menghasilkan kedua produk dibatasi hanya 10 jam per hari. Waktu produksi dan keuntungan per unit masing-masing produk ditunjukkan tabel di bawah ini:
Produk Waktu produksi (menit) Keuntungan
Mesin 1 Mesin 2 Mesin 3
1 10 6 8 2
2 5 20 15 3
a. tujuannya adalah memaksimalkan keuntungan.
b. Sumberdaya yang dibatasi:
- Jumlah waktu perakitan tiap mesin untuk menghasilkan kedua produk kurang dari 10 jam/hari = 600 menit
- Waktu produksi (menit) tiap-tiap mesin:
Mesin 1 =
Produk 1 = 10
Produk 2 = 5
Mesin 2 =
Produk 1 = 6
Produk 2 = 20
Mesin 3 =
Produk 1 = 8
Produk 2 = 15
- Keuntungan tiap produk
Produk 1 = 2
Produk 2 = 3
c. Alternatif keputusan adalah waktu produksi tiap mesin untuk menghasilkan produk 1 dan 2
d. Model matematika:
Kita definisikan :
x1 = Produk 1
x2 = Produk 2
Fungsi tujuan : max z = 2x1 + 3x2
Kendala :
10 x1 + 5 x2 ≤ 600
6 x1 + 20 x2 ≤ 600
8 x1 + 15 x2 ≤ 600
x1, x2 ≥ 0
5. Suatu perusahaan manufaktur menghentikan produksi salah satu produk yang tidak menguntungkan. Penghentian ini menghasilkan kapasitas produksi yang menganggur (berlebih). Kelebihan kapasitas produksi ini oleh manajemen sedang dipertimbangkan untuk dialokasikan ke salah satu atau semua produk yang dihasilkan (produk 1, 2 dan 3). Kapasitas yang tersedia pada mesin yang mungkin akan membatasi output diringkaskan pada tabel berikut:
Tipe Mesin Waktu yang dibutuhkan produk masing-masing mesin (jam) Waktu yang tersedia (jam per minggu)
Produk 1 Produk 2 Produk 3
Mesin milling 9 3 5 500
Lathe 5 4 0 350
grinder 3 0 2 150
Bagian penjuallan menghasilkan bahwa penjualan potensial untuk produk 1 dan 2 tidak akan melebihi laju produksi maksimum dan penjualan potensial untuk produk 3 adalah 20 unit per minggu. Keuntungan per unit masing-masing produk secara berturut adalah $50, %20 dan %25.
a. tujuannya adalah memaksimalkan keuntungan.
b. Sumberdaya yang dibatasi:
- Waktu produksi (jam) tiap-tiap mesin per minggu:
Mesin milling:
Produk 1 = 9 * 7 = 63
Produk 2 = 3 * 7 =21
Produk 3 = 5 * 7 = 35
Lathe:
Produk 1 = 5 * 7 = 35
Produk 2 = 4 * 7 = 28
Produk 3 = 0 * 7 = 0
Grinder:
Produk 1 = 3 * 7 = 21
Produk 2 = 0 * 7 =0
Produk 3 = 2 * 7 = 14
c. Waktu yang tersedia untuk tiap mesin (jam/minggu)
Mesin milling = 500
Lathe =350
Grinder = 150
d. Alternatif keputusan adalah waktu produksi tiap mesin untuk menghasilkan produk 1, 2 dan 3
e. Model matematika:
Kita definisikan :
x1 = Produk 1
x2 = Produk 2
x3 = Produk 3
Fungsi tujuan : max z = 50x1 + 20x2 + 25 x3
Kendala :
9 x1 + 3 x2 + 5 x3 ≤ 500
5 x1 + 4 x2 + 0 x3≤ 350
3 x1 + 0 x2 + 2 x3 ≤ 150
x1, x2, x3 ≥ 0
Metode Simpleks
(Sumber : Siringoringo, 2005)
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 :
1. Iterasi adalah tahapan perhitungan dimana nilai dalam perhitungan itu tergantung dari nilai tabel sebelumnya.
2. 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.
3. 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).
4. 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.
5. 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.
6. 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.
7. 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.
8. 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).
9. Baris pivot (baris kerja) adalah salah satu baris dari antara variabel basis yang memuat variabel keluar.
10. Elemen pivot (elemen kerja) adalah elemen yang terletak pada perpotongan kolom dan baris pivot. Elemen pivot akan menjadi dasar perhitungan untuk tabel simpleks berikutnya.
11. 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.
12. 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 :
1. Fungsi kendala dengan pertidaksamaan ≤ dalam bentuk umum, dirubah menjadi persamaan (=) dengan menambahkan satu variabel slack. (S1, S2,.....Sn)
2. Fungsi kendala dengan pertidaksamaan ≥ dalam bentuk umum, dirubah menjadi persamaan (=) dengan mengurangkan satu variabel surplus.(-S1+A1)
3. Fungsi kendala dengan persamaan dalam benttuk umum,ditambahkan satu artificial variabel (variabel buatan). Pada akhir iterasi (solusi terakhir), variabel ini tidak diperkenankan nol. (A1, A2, ....An).
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
Kendala :
x1 + x2 + s1 = 90
0.001 x1 + 0.002 x2 + s2 = 0.9
0.09 x1 + 0.6 x2 – s3 + s4 = 27
0.02 x1 + 0.06 x2 + s5 = 4.5
x1, x2 , s1, s2, s3, s4, s5 ≥ 0
Fungsi kendala pertama mendapatkan variable buatan (s1), karena bentuk umumnya sudah menggunakan bentuk persamaan. Fungsi kendala kedua dan keempat mendapatkan variabel slack (s2 dan s5) karena bentuk umumnya menggunakan pertidaksamaan ≤, sedangkan fungsi kendala ketiga mendapatkan variabel surplus (s3) dan variabel buatan (s4) 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
x1, x2 , s1 , s2 , s3 ≥ 0
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 fungsikendala 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 :
VB X1 X2 S1 S2 S3 solusi
Z -2 -3 0 0 0 0
S1 10 5 1 0 0 600
S2 6 20 0 1 0 600
S3 8 15 0 0 1 600
LANGKAH-LANGKAH PENYELESAIAN
Langkah-langkah penyelesaian adalah sebagai berikut :
1. Periksa apakah tabel layak atau tidak. Kelayakan tabel simpleks dilihat dari solusi (nilai kanan). Jika solusi ada yang bernilai negatif, maka tabel tidak layak. Tabel yang tidak layak tidak dapat diteruskan untuk dioptimalkan.
2. Tentukan kolom kerja. Penentuan kolom kerja dilihat dari koefisien fungsi tujuan (nilai di sebelah kanan baris z) dan tergantung dari bentuk tujuan. Jika tujuan maksimisasi, maka kolom kerja adalah kolom dengan koefisien paling negatif. Jika tujuan minimisasi , maka kolom kerja adalah kolom dengan koefisien positif terbesar. Jika kolom kerja ditandai dan ditarik ke atas, maka kita akan mendapatkan variabel keluar. Jika nilai paling negatif (untuk tujuan maksimisasi) atau positif terbesar (untuk tujuan minimisasi) lebih dari satu, pilih salah satu secara sembarang.
3. Tentukan baris pivot. Baris pivot ditentukan setelah membagi nilai solusi dengan nilai kolom pivot yang bersesuaian (nilai yang terletak dalam satu baris). Dalam hal ini, nilai negatif dan 0 pada kolom pivot tidak diperhatikan, artinya tidak ikut menjadi pembagi. Baris pivot adalah baris dengan rasio pembagian terkecil. Jika baris pivot ditandai dan ditarik ke kiri, maka kita akan mendapatkan variabl keluar. Jika rasio pembagian terkecil lebih dari satu, pilih salah sau secara sembarang.
4. Tentukan elemen pivot. Elemen pivot merupakan nilai yang terletak pada perpotongan kolom dan baris pivot.
5. Bentuk tabel simpleks baru. Tabel simpleks baru dibentuk dengan pertama sekali menghitung nilai baris pivot baru. Baris pivot baru adalah baris pivot lama dibagi dengan elemen pivot. Baris baru lainnya merupakan pengurangan nilai kolom pivot baris yang bersangkutan dikali baris pivot baru dalam satu kolom terhadap baris lamanya yang terletak pada kolom tersebut.
6. Periksa apakah tabel sudah optimal. Keoptimalan tabel dilihat dari koefisien fungsi tujuan (nilai pada baris z) dan tergantung dari bentuk tujuan. Untuk tujuan maksimisasi, tabel sudah optimal jika semua nilai pada baris z sudah positif atau 0. Pada tujuan minimisasi, tabel sudah optimal jika semua nilai pada baris z sudah negatif atau 0. Jika belum, kembali ke langkah no. 2 , jika sudah optimal baca solusi optimalnya.
MEMBACA TABEL OPTIMAL
Membaca tabel optimal adalah bagian penting bagi pengambil keputusan. Ada beberapa hal yang bisa dibaca dari table optimal :
1. Solusi optimal variable keputusan
2. Status sumber daya
3. harga bayangan (dual/shadow prices).
Kasus berikut ini menggunakan metode simpleks :
A.
1. Model Matematika:
Max Z = 50 X1 + 40 X2
Kendala = 0.4 X1 + 0.5 X2 ≤ 326
0.5 X1 + 0.3 X2 ≤ 354
0.05 X1 + 0.1 X2 ≤ 62
X1, X2 ≥ 0
X1 = CB
X2 = PR
2. Bentuk baku
Max Z = 50 X1 + 40 X2 + 0S1 + 0S2 + 0S3
Kendala = 0.4 X1 + 0.5 X2 + S1 = 326
0.5 X1 + 0.3 X2 + S2 = 354
0.05 X1 + 0.1 X2 + S3 = 62
X1, X2, S1, S2, S3 ≥ 0
3. Tabel Simpleks
4. Penyelesaian
- Kolom kerja merupakan perbandingan nilai negatif terbesar dari koefisien tujuan yaitu : - 50 : - 40. Maka kolom kerja terdapat dalam kolom CB
- Baris pivot adalah hasil perbandingan terkecil dari perbandingan nilai solusi/ kendali dengan nilai pada kolom kerja.
S1 = 326 : 0.4 = 815
S2 = 354 : 0.5 = 708
S3 = 60 : 0.05 = 1240
Baris pivot terdapat pada baris S2.
- Rubah semua nilai pada baris pivot dengan cara membaginya dengan nilai perpotongan antara kolom kerja dengan baris pivot : 0.5
- Rubah semua nilai selain nilai pada baris pivot dengan cara:
Nilai baru = Nilai lama – (nilai kolom kerja * nilai baru baris pivot)
Perhitungan nilai barisnya:
Baris Z :
1 -50 -40 0 0 0 0
- 50 ( 0 1 0.6 0 2 0 708 ) -
1 0 -10 0 100 0 35400
Baris S1 :
0 0.4 0.5 1 0 0 326
0.4 ( 0 1 0.6 0 2 0 708 ) -
0 0 0.26 1 -0.8 0 42.8
Baris S3
0 0.05 0.1 0 0 1 62
0.05 ( 0 1 0.6 0 2 0 708 ) -
0 0 0.07 0 -0.1 1 26.6
Tabel hasil iterasi pertama:
Selanjutnya kita periksa apakah tabel sudah optimal atau belum. Karena nilai baris Z dibawah variabel PR masih negatif , maka tabel belum optimal. Kita lakukan iterasi ke 2.
- Kolom kerja merupakan perbandingan nilai negatif terbesar dari koefisien tujuan yaitu : 0 : - 10. Maka kolom kerja terdapat dalam kolom PR
- Baris pivot adalah hasil perbandingan terkecil dari perbandingan nilai solusi/ kendali dengan nilai pada kolom kerja.
S1 = 42.8 : 0.26 = 156.9
CB = 708 : 0.6 = 1180
S3 = 26.6 : 0.07 = 380
Baris pivot terdapat pada baris S1.
- Rubah semua nilai pada baris pivot dengan cara membaginya dengan nilai perpotongan antara kolom kerja dengan baris pivot : 0.26
- Rubah semua nilai selain nilai pada baris pivot dengan cara:
Nilai baru = Nilai lama – (nilai kolom kerja * nilai baru baris pivot)
Perhitungan nilai barisnya:
Baris Z :
1 0 -10 0 100 0 35400
- 10 ( 0 0 1 3.85 -3.08 0 164.62) -
1 0 0 38.5 -30.8 0 37046.2
Baris CB :
0 1 0.6 0 2 0 708
0.6 ( 0 0 1 3.85 -3.08 0 164.62) -
0 0.4 0 -2.31 3.85 0 609.23
Baris S3
0 0 0.07 0 -0.1 1 26.6
0.07 ( 0 0 1 3.85 -3.08 0 164.62) -
0 0 0 -0.27 0.12 1 15.08
Tabel Hasil Iterasi ke 2:
Tabel sudah optimal. Sehingga perhitungan iterasi di hentikan.
MEMBACA TABEL OPTIMAL
CB = 609.23, PR = 164.62 dan Z = 37046.2 artinya untuk mendapatkan keuntungan maksimum sebesar $ 37.046,2, maka perusahaan sebaiknya memproduksi Radio CityBand sebanyak 609,23 dan Radio Portable sebanyak 164,62.
Status sumber daya :
Sumber daya pertama dilihat dari keberadaan variable basis awal dari setiap fungsi kendala pada table optimal. Dalam kasus di atas, untuk fungsi kendala pertama periksa keberadaan S1 pada variable basis table optimal. Periksa keberadaan S2 pada variable basis table optimal untuk fungsi kendala kedua. Periksa keberadaan S3 pada variable basis table optimal untuk fungsi kendala ketiga.
S3 = 15,08. Sumber daya ini disebut berlebih (abundant)
S2 = S1 = 0. Kedua sumber daya ini disebut habis terpakai (scarce).
Harga bayangan :
Harga bayangan dilihat dari koefisien variable slack atau surplus pada baris fungsi tujuan.
Koefisien S1 pada baris fungsi tujuan table optimal = 38,5, dengan demikian harga bayangan sumber daya pertama adalah 38,5
Koefisien S2 pada baris fungsi tujuan table optimal = -30,8, dengan demikian harga bayangan sumber daya kedua adalah -30,8
Koefisien S3 pada baris fungsi tujuan table optimal = 0, dengan demikian harga bayangan sumber daya kedua adalah 0.
B. Dua produk menghasilkan menggunakan tiga mesin. Waktu masing-masing mesin yang digunakan untuk menghasilkan kedua produk dibatasi hanya 10 jam per hari. Waktu produksi dan keuntungan per unit masing-masing produk ditunjukkan tabel di bawah ini:
Produk Waktu produksi (menit) Keuntungan
Mesin 1 Mesin 2 Mesin 3
1 10 6 8 2
2 5 20 15 3
1. Model Matematika:
Max Z = 2x1 + 3x2
Kendala = 10 x1 + 5 x2 ≤ 600
6 x1 + 20 x2 ≤ 600
8 x1 + 15 x2 ≤ 600
x1, x2 ≥ 0
2. Bentuk baku
Max Z = 2 X1 + 3 X2 + 0S1 + 0S2 + 0S3
Kendala = 10 X1 + 5 X2 + S1 = 600
6 X1 + 20X2 + S2 = 600
8 X1 + 15X2 + S3 = 600
X1, X2, S1, S2, S3 ≥ 0
3. Tabel Simpleks
4. Penyelesaian
- Kolom kerja merupakan perbandingan nilai negatif terbesar dari koefisien tujuan yaitu : - 2 : - 3. Maka kolom kerja terdapat dalam kolom Prod. 2.
- Baris pivot adalah hasil perbandingan terkecil dari perbandingan nilai solusi/ kendali dengan nilai pada kolom kerja.
S1 = 600 : 5 = 120
S2 = 600 : 20 = 30
S3 = 600 : 15 = 40
Baris pivot terdapat pada baris S2.
- Rubah semua nilai pada baris pivot dengan cara membaginya dengan nilai perpotongan antara kolom kerja dengan baris pivot : 20
- Rubah semua nilai selain nilai pada baris pivot dengan cara:
Nilai baru = Nilai lama – (nilai kolom kerja * nilai baru baris pivot)
Perhitungan nilai barisnya:
Baris Z :
1 -2 -3 0 0 0 0
- 3 ( 0 6/20 1 0 1/20 0 30 ) -
1 -22/20 0 0 3/20 0 90
Baris S1:
0 10 5 1 0 0 600
5 ( 0 6/20 1 0 1/20 0 30 ) -
0 17/2 0 1 -5/20 0 450
Baris S3
0 8 15 0 0 1 600
15 ( 0 6/20 1 0 1/20 0 30 ) -
0 7/2 0 0 -15/20 1 150
Tabel hasil iterasi pertama:
Selanjutnya kita periksa apakah tabel sudah optimal atau belum. Karena nilai baris Z dibawah variabel Prod. 1 masih negatif , maka tabel belum optimal. Kita lakukan iterasi ke 2.
- Kolom kerja merupakan perbandingan nilai negatif terbesar dari koefisien tujuan yaitu : - 22/20 : 0. Maka kolom kerja terdapat dalam kolom Prod. 1.
- Baris pivot adalah hasil perbandingan terkecil dari perbandingan nilai solusi/ kendali dengan nilai pada kolom kerja.
S1 = 450 : 17/2 = 900/17
Prod. 1 = 30 : 6/20 = 100
S3 = 450 : 7/2 = 900/7
Baris pivot terdapat pada baris S3.
- Rubah semua nilai pada baris pivot dengan cara membaginya dengan nilai perpotongan antara kolom kerja dengan baris pivot : 17/2
- Rubah semua nilai selain nilai pada baris pivot dengan cara:
Nilai baru = Nilai lama – (nilai kolom kerja * nilai baru baris pivot)
Perhitungan nilai barisnya:
Baris Z :
1 -11/10 0 0 3/20 0 90
- 11/10 ( 0 1 0 4/17 -1/34 0 900/17) -
1 0 0 22/85 2/17 0 2520/17
Baris Prod. 1 :
0 3/10 1 0 1/20 0 30
3/10 ( 0 1 0 4/17 -1/34 0 900/17) -
0 0 1 -6/85 1/17 0 240/17
Baris S3
0 7/2 0 0 0 -15/20 450
7/2 ( 0 1 0 4/17 -1/34 0 900/17) -
0 0 0 -14/17 7/68 -15/20 4500/17
Tabel Hasil Iterasi ke 2:
Tabel sudah optimal. Sehingga perhitungan iterasi di hentikan.
MEMBACA TABEL OPTIMAL
Prod. 1 = 240/17, Prod. 2 = 900/17 dan Z = 2520/17 artinya untuk mendapatkan keuntungan maksimum sebesar 2520/17, maka perusahaan sebaiknya memproduksi Prod. 1 sebanyak 240/17 dan Prod. 2 sebanyak 900/17.
Status sumber daya :
Sumber daya pertama dilihat dari keberadaan variable basis awal dari setiap fungsi kendala pada table optimal. Dalam kasus di atas, untuk fungsi kendala pertama periksa keberadaan S1 pada variable basis table optimal. Periksa keberadaan S2 pada variable basis table optimal untuk fungsi kendala kedua. Periksa keberadaan S3 pada variable basis table optimal untuk fungsi kendala ketiga.
S3 = 4500/17. Sumber daya ini disebut berlebih (abundant)
S2 = S1 = 0. Kedua sumber daya ini disebut habis terpakai (scarce).
Harga bayangan :
Harga bayangan dilihat dari koefisien variable slack atau surplus pada baris fungsi tujuan.
Koefisien S1 pada baris fungsi tujuan table optimal = 22/85, dengan demikian harga bayangan sumber daya pertama adalah 22/85.
Koefisien S2 pada baris fungsi tujuan table optimal = 2/17, dengan demikian harga bayangan sumber daya kedua adalah 2/17
Koefisien S3 pada baris fungsi tujuan table optimal = 0, dengan demikian harga bayangan sumber daya kedua adalah 0.
C. Suatu oabrik perakitan radio menghasilkan dua tipe radio, yaitu HiFi-1 dan HiFi-2 pada fasilitas perakitan yang sama. Lini perakitan terdiri dari 3 stasiun kerja. Waktu perakitan masing-masing tipe pada masing-masing stasiun kerja adalah sebagai berikut:
Statsiun Kerja Waktu perakitan per unit (menit)
HiFi-1 HiFi-2
1 6 4
2 5 5
3 4 6
Waktu kerja masing-masing stasiun kerja adalah 8 jam perhari. Masing-masing stasiun kerja membutuhkan perawatan selama 10%, 14% dan 12% dari total waktu kerja (8jam) secara berturut-turut untuk stasiun kerja 1,2 dan 3.
1. Model Matematika:
Max Z = x1 + x2
Kendala = 6 x1 + 4 x2 ≤ 432
5 x1 + 5 x2 ≤ 412,8
4 x1 + 6 x2 ≤ 422,4
x1, x2 ≥ 0
2. Bentuk baku
Max Z = x1 + x2 + 0S1 + 0S2 + 0S3
Kendala = 6 x1 + 4 x2 + S1 = 432
5 x1 + 5 x2 + S2 = 412,8
4 x1 + 6 x2 +S3 = 422,4
x1, x2, 0S1, 0S2, 0S3 ≥ 0
3. Tabel Simpleks
4. Penyelesaian
- Kolom kerja merupakan perbandingan nilai negatif terbesar dari koefisien tujuan yaitu : - 1 : - 1 . Kita tentukan secara sembarang sehingga kolom kerja terdapat dalam kolom HiFi-1.
- Baris pivot adalah hasil perbandingan terkecil dari perbandingan nilai solusi/ kendali dengan nilai pada kolom kerja.
S1 = 432 : 6 = 72
S2 = 412,8 : 5 = 82.56
S3 = 422,4 : 4 = 105,6
Baris pivot terdapat pada baris S1.
- Rubah semua nilai pada baris pivot dengan cara membaginya dengan nilai perpotongan antara kolom kerja dengan baris pivot : 6
- Rubah semua nilai selain nilai pada baris pivot dengan cara:
Nilai baru = Nilai lama – (nilai kolom kerja * nilai baru baris pivot)
Perhitungan nilai barisnya:
Baris Z :
1 -1 -1 0 0 0 0
- 1 ( 0 1 2/3 1/6 0 0 72 ) -
1 0 -1/3 1/6 0 0 72
Baris S2 :
0 5 5 0 1 0 412,8
5 ( 0 1 2/3 1/6 0 0 72 ) -
0 0 5/3 -5/6 1 0 52,8
Baris S3
0 4 6 0 0 1 422,4
4 ( 0 1 2/3 1/6 0 0 72 ) -
0 0 10/3 -2/3 0 1 134,4
Tabel hasil iterasi pertama:
Selanjutnya kita periksa apakah tabel sudah optimal atau belum. Karena nilai baris Z dibawah variabel HiFi- 2 masih negatif , maka tabel belum optimal. Kita lakukan iterasi ke 2.
- Kolom kerja merupakan perbandingan nilai negatif terbesar dari koefisien tujuan yaitu : 0 : - 1/3. Maka kolom kerja terdapat dalam kolom HiFi-2.
- Baris pivot adalah hasil perbandingan terkecil dari perbandingan nilai solusi/ kendali dengan nilai pada kolom kerja.
HiFi-1 = 72 :2/3 = 108
S2 = 52,8 : 5/3 = 31,68
S3 = 134,4 : 10/3 = 40,32
Baris pivot terdapat pada baris S2.
- Rubah semua nilai pada baris pivot dengan cara membaginya dengan nilai perpotongan antara kolom kerja dengan baris pivot : 5/3
- Rubah semua nilai selain nilai pada baris pivot dengan cara:
Nilai baru = Nilai lama – (nilai kolom kerja * nilai baru baris pivot)
Perhitungan nilai barisnya:
Baris Z :
1 0 -1/3 1/6 0 0 72
- 1/3 ( 0 0 1 -1/2 3/5 0 31,68) -
1 0 0 0 1/5 0 61,44
Baris HiFi-1 :
0 1 2/3 1/6 0 0 72
2/3 ( 0 0 1 -1/2 3/5 0 31,68) -
0 1 0 1/2 2/5 0 21,12
Baris S3
0 0 10/3 -2/3 0 1 134,4
10/3 ( 0 0 1 -1/2 3/5 0 31,68) -
0 0 0 1 1 1 105,6
Tabel Hasil Iterasi ke 2:
Tabel sudah optimal. Sehingga perhitungan iterasi di hentikan.
MEMBACA TABEL OPTIMAL
HiFi-1 = 21,12, HiFi-2=31,68 dan Z = 61,44 artinya untuk mendapatkan keuntungan maksimum sebesar 61,44, maka perusahaan sebaiknya memproduksi HiFi-1 = 21,12 dan HiFi-2=31,68.
Status sumber daya :
Sumber daya pertama dilihat dari keberadaan variable basis awal dari setiap fungsi kendala pada table optimal. Dalam kasus di atas, untuk fungsi kendala pertama periksa keberadaan S1 pada variable basis table optimal. Periksa keberadaan S2 pada variable basis table optimal untuk fungsi kendala kedua. Periksa keberadaan S3 pada variable basis table optimal untuk fungsi kendala ketiga.
S3 = 105,6. Sumber daya ini disebut berlebih (abundant)
S2 = S1 = 0. Kedua sumber daya ini disebut habis terpakai (scarce).
Harga bayangan :
Harga bayangan dilihat dari koefisien variable slack atau surplus pada baris fungsi tujuan.
Koefisien S1 pada baris fungsi tujuan table optimal = 0, dengan demikian harga bayangan sumber daya pertama adalah 0.
Koefisien S2 pada baris fungsi tujuan table optimal = 1/5, dengan demikian harga bayangan sumber daya kedua adalah 1/5
Koefisien S3 pada baris fungsi tujuan table optimal = 0, dengan demikian harga bayangan sumber daya kedua adalah 0.
Sumber :
Siringoringo, Hotniar. Seri Teknik Riset Operasional. Pemrograman Linear. Penerbit Graha Ilmu. Yogyakarta. 2005.
Jawaban dengan 5 soal
1. tujuan memaximalkan pendapatan (Z)
Sumberdaya yang diketahui :
• 1 kursi = 30 menit (0,5)
• Meja = 2 jam
• SDM = 4 orang
Pangsa pasar = 1 meja max 4
Harga jual 1 kursi = 1,2 juta
Haruga jual 1 meja = 500 ribu
Model matematika
Max Z = 1,2 x1 + 0,5 x2
0,5 x1+ 2 x2 < 32
1 x1+ 1 x2 = 1/4
X1, X2 > 0
2. fungsi tujuan
Memin Z = 2000x1 + 5500x2
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
3. tujuan memax produksi
Waktu yang dibutuhkan untuk perawatan untuk masing-masing=
10% x 8 jam = 48 menit
14% x 8 jam = 67,2 menit
12% x 8 jam = 57,6 menit
Operasi matematika Z = x1 +x2
6x1 + 4x2 < 432 (8 x 60) – 48
5x1 + 5x2 < 412,8 (8 x 60) – 67,2
4x1 + 6x2 < 422,4 (8 x 60) – 57,6
4. waktu max 10 jam = 600 menit
Max Z = 2x1 + 3x2
Kendala
10x1 + 5x2 < 600
6x1 + 20x2 < 600
8x1 + 15x2 < 600
5. max Z = 50x1 + 20x2 + 25x3
Kendala
9x1 + 3x2 + 5x3 < 500
5x1 + 4x2 + 0x3 < 350
3x1 + 0x2 + 2x3 < 150
X1, x2 > 0
DSS adalah salah satu sistem penunjang keputusan yang dibuat untuk membantu perusahaan dalam mengoptimalisasikan.
Tujuan memaximalkan Z = 50 x1 + 40 x2
Kendala-kendala:
0,4x1 + 0,5x2 < 326
0,5x1 + 0,3x2 < 354
0,05x1 + 0,1 < 62
Bentuk bakunya :
Z = 50x1 + 40x2 + 0.s1 +0.s2 + 0.s3
0,4x1 + 0,4x2 + s1 = 326
0,5x1 + 0,3x2 + s2 = 354
0,05x1 + 0,1 + s3 = 62
Tabel simpleks
VD Z X1 X2 S1 S2 S3 NK
Z 1 -50 -40 0 0 0 0
S1 0 0,4 0,5 1 0 0 326
S2
0 0,5 0,3 0 1 0 354
S3 0 0,05 0,1 0 0 1 62
Kolom kerja adalah nilai negatif terbesar
Baris pivot adalah perbandingan nilai solusi dengan nilai pada kolom kerja
S1 326 : 0,4 = 815
S2 354 : 0,5 = 708
S3 62 : 0,05 = 1240
Rubah semua nilai pada baris Pivot dengan cara membagi nilai lama bari pivot dengan baris pivot (0,5)
Maka tabel simpleks alan berubah
VD Z X1 X2 S1 S2 S3 NK
Z 1 -50 -40 0 0 0 0
S1 0 0,4 0,5 1 0 0 326
CB 0 1 0,6 0 2 0 708
S3 0 0,05 0,1 0 0 1 62
Lakukan interasi pertama
Rubah nilai dengan nilai baru dengan cara:
Nilai baru = nilai lama – (nilai kolom kerja X nilai baru baris pivot)
Tabel simpleks
VD Z CB X2 S1 S2 S3 NK
Z 1 0 -10 0 100 0 35400
S1 0 0,4 0,26 1 -0,8 0 32,8
CB 0 1 0,6 0 2 0 708
S3 0 0 0,07 0 -0,1 1 26,6
Karena masih terdapat nilai negatif pada baris CB dan PR, lakukan interasi kedua
Lakukan hal yang sama, yaitu tentukan dulu kolom kerja sampai menghitung nilai baru.
Tabel simpleks
VD Z CB PR S1 S2 S3 NK
Z 1 0 0 38,46 69,23 0 37046,15
PR 0 0 1 3,84 -3,07 0 164,61
CB 0 1 0 -2,30 3,84 0 609,23
S3 0 0 0 -0,26 0,11 1 15,07
Pada tabel diatas sudah tidak terdapat nilai negatif pada baris CB dan PR, maka didapatkan nilai :
max CB = 609,23
max PR = 164,61
koding untuk membuat program diatas :
Private Sub Command1_Click()
HASIL1.Text = NK2.Text
HASIL2.Text = NK3.Text
End Sub
Private Sub DISS_Click()
If Int(X1A) < Int(X2A) Then
kk1 = X1A
KK2 = X1B
KK3 = X1C
KK4 = X1D
Label21.Caption = "CB"
VGANTI_BP = "CB"
Else
kk1 = X2A
KK2 = X2B
KK3 = X2C
KK4 = X2D
Label22.Caption = "PR"
VGANTI_BP = "PR"
End If
If KK2 = 0 Then
A = 0
Else
A = NK2 / KK2
If KK3 = 0 Then
B = 0
Else
B = NK3 / KK3
If KK4 = 0 Then
C = 0
Else
C = NK4 / KK4
End If
End If
End If
'blok yang kemungkinan dimulai'
'If a < b And b < c And a > c Then'
'tak mungkin'
If A < B And B < C And A < C Then
x = A
F = KK2
P = Z2 / F
Q = X1B / F
R = X2B / F
S = S1B / F
T = S2B / F
U = S3B / F
V = NK2 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z3.Text = Z1 - (KK3 * P)
X1C.Text = X1C - (KK3 * Q)
X2C.Text = X2C - (KK3 * R)
S1C.Text = S1C - (KK3 * S)
S2C.Text = S2C - (KK3 * T)
S3C.Text = S3C - (KK3 * U)
NK3.Text = NK3 - (KK3 * V)
Z4.Text = Z4 - (KK4 * P)
X1D.Text = X1D - (KK4 * Q)
X2D.Text = X2D - (KK4 * R)
S1D.Text = S1D - (KK4 * S)
S2D.Text = S2D - (KK4 * T)
S3D.Text = S3D - (KK4 * U)
NK4.Text = NK4 - (KK4 * V)
Z2.Text = P
X1B.Text = Q
X2B.Text = R
S1B.Text = S
S2B.Text = T
S3B.Text = U
NK2.Text = V
Label17.Caption = VGANTI_BP
'If a < b And b < c And a = c Then'
'tak mungkin'
ElseIf A < B And B > C And A > C Then
x = C
F = KK4
P = Z4 / F
Q = X1D / F
R = X2D / F
S = S1D / F
T = S2D / F
U = S3D / F
V = NK4 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z2.Text = Z2 - (KK2 * P)
X1B.Text = X1B - (KK2 * Q)
X2B.Text = X2B - (KK2 * R)
S1B.Text = S1B - (KK2 * S)
S2B.Text = S2B - (KK2 * T)
S3B.Text = S3B - (KK2 * U)
NK2.Text = NK2 - (KK2 * V)
Z3.Text = Z1 - (KK3 * P)
X1C.Text = X1C - (KK3 * Q)
X2C.Text = X2C - (KK3 * R)
S1C.Text = S1C - (KK3 * S)
S2C.Text = S2C - (KK3 * T)
S3C.Text = S3C - (KK3 * U)
NK3.Text = NK3 - (KK3 * V)
Z4.Text = P
X1D.Text = Q
X2D.Text = R
S1D.Text = S
S2D.Text = T
S3D.Text = U
NK4.Text = V
Label19.Caption = "CB"
ElseIf A < B And B > C And A < C Then
x = A
F = KK2
P = Z2 / F
Q = X1B / F
R = X2B / F
S = S1B / F
T = S2B / F
U = S3B / F
V = NK2 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z3.Text = Z1 - (KK3 * P)
X1C.Text = X1C - (KK3 * Q)
X2C.Text = X2C - (KK3 * R)
S1C.Text = S1C - (KK3 * S)
S2C.Text = S2C - (KK3 * T)
S3C.Text = S3C - (KK3 * U)
NK3.Text = NK3 - (KK3 * V)
Z4.Text = Z4 - (KK4 * P)
X1D.Text = X1D - (KK4 * Q)
X2D.Text = X2D - (KK4 * R)
S1D.Text = S1D - (KK4 * S)
S2D.Text = S2D - (KK4 * T)
S3D.Text = S3D - (KK4 * U)
NK4.Text = NK4 - (KK4 * V)
Z2.Text = P
X1B.Text = Q
X2B.Text = R
S1B.Text = S
S2B.Text = T
S3B.Text = U
NK2.Text = V
Label17.Caption = VGANTI_BP
'ElseIf a < B And B > c And a = c Then'
'tak mungkin'
'ElseIf a < b And b = c And a > c Then
'tak mungkin'
ElseIf A < B And B = C And A < C Then
x = A
F = KK2
P = Z2 / F
Q = X1B / F
R = X2B / F
S = S1B / F
T = S2B / F
U = S3B / F
V = NK2 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z3.Text = Z1 - (KK3 * P)
X1C.Text = X1C - (KK3 * Q)
X2C.Text = X2C - (KK3 * R)
S1C.Text = S1C - (KK3 * S)
S2C.Text = S2C - (KK3 * T)
S3C.Text = S3C - (KK3 * U)
NK3.Text = NK3 - (KK3 * V)
Z4.Text = Z4 - (KK4 * P)
X1D.Text = X1D - (KK4 * Q)
X2D.Text = X2D - (KK4 * R)
S1D.Text = S1D - (KK4 * S)
S2D.Text = S2D - (KK4 * T)
S3D.Text = S3D - (KK4 * U)
NK4.Text = NK4 - (KK4 * V)
Z2.Text = P
X1B.Text = Q
X2B.Text = R
S1B.Text = S
S2B.Text = T
S3B.Text = U
NK2.Text = V
Label17.Caption = VGANTI_BP
'ElseIf a < b And b = c And a = c Then
'tak mungkin'
ElseIf A > B And B < C And A > C Then
x = B
F = KK3
P = Z3 / F
Q = X1C / F
R = X2C / F
S = S1C / F
T = S2C / F
U = S3C / F
V = NK3 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z2.Text = Z2 - (KK2 * P)
X1B.Text = X1B - (KK2 * Q)
X2B.Text = X2B - (KK2 * R)
S1B.Text = S1B - (KK2 * S)
S2B.Text = S2B - (KK2 * T)
S3B.Text = S3B - (KK2 * U)
NK2.Text = NK2 - (KK2 * V)
Z4.Text = Z4 - (KK4 * P)
X1D.Text = X1D - (KK4 * Q)
X2D.Text = X2D - (KK4 * R)
S1D.Text = S1D - (KK4 * S)
S2D.Text = S2D - (KK4 * T)
S3D.Text = S3D - (KK4 * U)
NK4.Text = NK4 - (KK4 * V)
Z3.Text = P
X1C.Text = Q
X2C.Text = R
S1C.Text = S
S2C.Text = T
S3C.Text = U
NK3.Text = V
Label18.Caption = VGANTI_BP
ElseIf A > B And B < C And A < C Then
x = B
F = KK3
P = Z3 / F
Q = X1C / F
R = X2C / F
S = S1C / F
T = S2C / F
U = S3C / F
V = NK3 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z2.Text = Z2 - (KK2 * P)
X1B.Text = X1B - (KK2 * Q)
X2B.Text = X2B - (KK2 * R)
S1B.Text = S1B - (KK2 * S)
S2B.Text = S2B - (KK2 * T)
S3B.Text = S3B - (KK2 * U)
NK2.Text = NK2 - (KK2 * V)
Z4.Text = Z4 - (KK4 * P)
X1D.Text = X1D - (KK4 * Q)
X2D.Text = X2D - (KK4 * R)
S1D.Text = S1D - (KK4 * S)
S2D.Text = S2D - (KK4 * T)
S3D.Text = S3D - (KK4 * U)
NK4.Text = NK4 - (KK4 * V)
Z3.Text = P
X1C.Text = Q
X2C.Text = R
S1C.Text = S
S2C.Text = T
S3C.Text = U
NK3.Text = V
Label18.Caption = VGANTI_BP
ElseIf A > B And B < C And A = C Then
x = B
F = KK3
P = Z3 / F
Q = X1C / F
R = X2C / F
S = S1C / F
T = S2C / F
U = S3C / F
V = NK3 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z2.Text = Z2 - (KK2 * P)
X1B.Text = X1B - (KK2 * Q)
X2B.Text = X2B - (KK2 * R)
S1B.Text = S1B - (KK2 * S)
S2B.Text = S2B - (KK2 * T)
S3B.Text = S3B - (KK2 * U)
NK2.Text = NK2 - (KK2 * V)
Z4.Text = Z4 - (KK4 * P)
X1D.Text = X1D - (KK4 * Q)
X2D.Text = X2D - (KK4 * R)
S1D.Text = S1D - (KK4 * S)
S2D.Text = S2D - (KK4 * T)
S3D.Text = S3D - (KK4 * U)
NK4.Text = NK4 - (KK4 * V)
Z3.Text = P
X1C.Text = Q
X2C.Text = R
S1C.Text = S
S2C.Text = T
S3C.Text = U
NK3.Text = V
Label18.Caption = ²
ElseIf A > B And B > C And A > C Then
x = C
F = KK4
P = Z4 / F
Q = X1D / F
R = X2D / F
S = S1D / F
T = S2D / F
U = S3D / F
V = NK4 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NK1 - (kk1 * V)
Z2.Text = Z2 - (KK2 * P)
X1B.Text = X1B - (KK2 * Q)
X2B.Text = X2B - (KK2 * R)
S1B.Text = S1B - (KK2 * S)
S2B.Text = S2B - (KK2 * T)
S3B.Text = S3B - (KK2 * U)
NK2.Text = NK2 - (KK2 * V)
Z3.Text = Z1 - (KK3 * P)
X1C.Text = X1C - (KK3 * Q)
X2C.Text = X2C - (KK3 * R)
S1C.Text = S1C - (KK3 * S)
S2C.Text = S2C - (KK3 * T)
S3C.Text = S3C - (KK3 * U)
NK3.Text = NK3 - (KK3 * V)
Z4.Text = P
X1D.Text = Q
X2D.Text = R
S1D.Text = S
S2D.Text = T
S3D.Text = U
NK4.Text = V
Label19.Caption = VGANTI_BP
'ElseIf a > b And b > c And a < c Then
'tak mungkin'
'/ElseIf a > b And b > c And a = c Then
'tak mungkin'
'ElseIf a > b And b = c And a > c Then
'tak mungkin'
'ElseIf a > b And b = c And a < c Then
'tak mungkin'
'ElseIf a > b And b = c And a = c Then
'tak mungkin'
'ElseIf a = b And b < c And a > c Then
'tak mungkin'
'ElseIf a = b And b < c And a < c Then
'tak mungkin'
'ElseIf a = b And b < c And a = c Then
'tak mungkin'
Else
If A = B And B > C And A > C Then
x = C
F = KK4
P = Z4 / F
Q = X1D / F
R = X2D / F
S = S1D / F
T = S2D / F
U = S3D / F
V = NK4 / F
Z1.Text = Z1 - (kk1 * P)
X1A.Text = X1A - (kk1 * Q)
X2A.Text = X2A - (kk1 * R)
S1A.Text = S1A - (kk1 * S)
S2A.Text = S2A - (kk1 * T)
S3A.Text = S3A - (kk1 * U)
NK1.Text = NKZ2.Text = Z2 - (KK2 * P)
X1B.Text = X1B - (KK2 * Q)
X2B.Text = X2B - (KK2 * R)
S1B.Text = S1B - (KK2 * S)
S2B.Text = S2B - (KK2 * T)
S3B.Text = S3B - (KK2 * U)
NK2.Text = NK2 - (KK2 * V)
Z3.Text = Z1 - (KK3 * P)
X1C.Text = X1C - (KK3 * Q)
X2C.Text = X2C - (KK3 * R)
S1C.Text = S1C - (KK3 * S)
S2C.Text = S2C - (KK3 * T)
S3C.Text = S3C - (KK3 * U)
NK3.Text = NK3 - (KK3 * V)
Z4.Text = P
X1D.Text = Q
X2D.Text = R
S1D.Text = S
S2D.Text = T
S3D.Text = U
NK4.Text = V
Label19.Caption = VGANTI_BP
'ElseIf a = b And b > c And a < c Then
'tak mungkin '
'ElseIf a = b And b > c And a = c Then
'tak mungkin'
'ElseIf a = b And b = c And a > c Then
'tak mungkin'
'ElseIf a = b And b = c And a < c Then
'tak mungkin'
'ElseIf a = b And b = c And a = c Then
'tak mungkin'
'end blok yang benar
If Label17.Caption = "CB" Then
Text8.Text = NK2
ElseIf Label18.Caption = "CB" Then
Text8.Text = NK3
ElseIf Label19.Caption = "CB" Then
Text8.Text = NK4
ElseIf Label17.Caption = "PR" Then
Text9.Text = NK2
ElseIf Label18.Caption = "PR" Then
Text9.Text = NK3
ElseIf Label19.Caption = "PR" Then
Text9.Text = NK4
End If
End If
End If
End Sub
Private Sub HSL_Click()
Z1.Text = 1
Z2.Text = 0
Z3.Text = 0
Z4.Text = 0
X1A.Text = (CB * -1)
X1B.Text = CB1
X1C.Text = CB2
X1D.Text = CB3
X2A.Text = (PR * -1)
X2B.Text = PR1
X2C.Text = PR2
X2D.Text = PR3
S1A.Text = 0
S1B.Text = 1
S1C.Text = 0
S1D.Text = 0
S2A.Text = 0
S2B.Text = 0
S2C.Text = 1
S2D.Text = 0
S3A.Text = 0
S3B.Text = 0
S3C.Text = 0
S3D.Text = 1
NK1.Text = 0
NK2.Text = TOTAL1
NK3.Text = TOTAL2
NK4.Text = TOTAL3
End Sub
Private Sub KELUAR_Click()
Unload Me
End Sub
Private Sub ULANG_Click()
CB.Text = ""
PR.Text = ""
CB1.Text = ""
CB2.Text = ""
CB3.Text = ""
PR1.Text = ""
PR2.Text = ""
PR3.Text = ""
TOTAL1.Text = ""
TOTAL2.Text = ""
TOTAL3.Text = ""
End Sub