Program linear merupakan salah satu model matematika yang digunakan untuk menyelesaikan masalah optimisasi, yaitu memaksimumkan atau meminimumkan fungsi tujuan yang bergantung pada sejumlah variabel input. Hal terpenting yang perlu kita lakukan adalah mencari tahu tujuan penyelesaian masalah dan apa penyebab masalah tersebut. Dua macam fungsi Program Linear:
Fungsi Tujuan : mengarahkan analisa untuk mendeteksi tujuan perumusan masalah Fungsi kendala : untuk mengetahui sumber daya yang tersedia dan permintaan atas sumber daya tersebut.
Masalah Maksimisasi
Maksimisasi dapat berupa memaksimalkan keuntungan atau hasil.
Contoh: CV.MAJU JAYA memiliki usaha dalam membuat memproduksi sepatu dan sendal. Untuk memproduksi kedua produk tersebut diperlukan bahan baku sepatu, bahan baku sendal dan tenaga kerja. Maksimum penyediaan sepatu adalah 60 pasang per hari, sendal 30 pasang per hari dan tenaga kerja 40 jam per hari.
Kedua jenis produk memberikan keuntungan sebesar Rp.10.000.000,- untuk sepatu dan Rp. 7.000.000,- untuk sendal. Masalahnya adalah bagaimana menentukan jumlah unit setiap jenis produk yang akan diproduksi setiap hari agar keuntungan yang diperoleh bisa maksimal.
Langkah Penyelesaian :
Menentukan Variabel jika, X1=sepatu X2=sendal
Fungsi Tujuan Zmax= 10X1 + 7X2
(10 –> 10 juta) (7 –> 7 juta)
library(lpSolve)
# Menentukan Koefisien dari fungsi tujuan
f.obj <- c(10,7)
2X1 + 3X2 ≤ 70 (sepatu)
2X2 ≤ 50 (sendal) 2X1 + X2 ≤ 40 (tenaga kerja)
# Memasukkan koefisien kedalam persamaan fungsi
# Dengan nrow menunjukkan banyaknya kendala yaitu 3 dan angka yang
# diinput disusun perbaris sehingga byrow = TRUE
f.con <- matrix(c(2, 3,
0, 2,2, 1), nrow = 3, byrow = TRUE)
# Memasukkan tanda pertidaksamaan pada setiap persamaan
f.dir <- c("<=",
"<=",
"<=")
# Memasukkan koefisien ruas kanan
f.rhs <- c(70,
50,
40)
# Nilai Max
lp("max", f.obj, f.con, f.dir, f.rhs)
## Success: the objective function is 230
# Mencari Nilai Variabel Agar Mendapat Keuntungan MAX
lp("max", f.obj, f.con, f.dir, f.rhs)$solution
## [1] 12.5 15.0
# Mengganti Koefisien Sensitivitas
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$sens.coef.from
## [1] 4.666667 5.000000
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$sens.coef.to
## [1] 14 15
# Bayangan/Harga Ganda Dari Kendala dan Variabel Keputusan
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals
## [1] 1 0 4 0 0
# Batas Bawah Batasan Harga Bayangan/Ganda dan Masing-Masing Variabel Keputusan
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals.from
## [1] 4.000000e+01 -1.000000e+30 2.333333e+01 -1.000000e+30 -1.000000e+30
# Batas Atas Batasan Harga Bayangan/Ganda dan Masing-Masing Variabel Keputusan
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals.to
## [1] 9e+01 1e+30 7e+01 1e+30 1e+30
Kesimpulan untuk memperoleh keuntungan optimal, maka X1 = 12.5 dan X2 = 15 dengan keuntungan sebesar Rp 230 juta. Koefisien sensitivitas berubah dari 4,67 dan 5 menjadi 14 dan 15. Bayangan/harga ganda dari kendala adalah 1, 0 dan 4, sedangkan untuk variabel keputusan masing-masing adalah 0 dan 0. Batas bawah harga bayangan adalah 4.000000e+01 -1.000000e+30 2.333333e+01 , sedangkan untuk variabel keputusan berturut-turut adalah -1.000000e+30 dan -1.000000e+30. Terakhir, batas atas harga bayangan adalah 9e+01 1e+30 dan 7e+01, sedangkan untuk variabel keputusan masing-masing adalah 1e+30 dan 1e+30.