Lembaga : UIN Maulana Malik Ibrahim Malang, Teknik Informatika.
Program linear adalah 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. Terdapat 2 macam fungsi program linear, diantaranya yaitu fungsi tujuan yang mengarahkan analisa untuk mendeteksi tujuan perumusan masalah dan fungsi kendala yang digunakan untuk mengetahui sumber daya yang tersedia serta permintaan atas sumber daya tersebut. Berikut contoh penerapan linear programming dalam menyelesaikan masalah maksimisasi menggunakan bahasa pemrograman R.
Maksimisasi dapat berupa memaksimalkan keuntungan atau hasil.
Contoh: PT. Harapan Tekstil memiliki sebuah pabrik yang akan memproduksi 2 jenis produk, yaitu kain sutera dan kain wol. Untuk memproduksi kedua produk diperlukan bahan baku benang sutera, bahan baku benang wol dan tenaga kerja. Maksimum penyediaan benang sutera adalah 60 kg per hari, benang wol 30 kg per hari dan tenaga kerja 40 jam per hari. Kebutuhan setiap unit produk akan bahan baku dan jam tenaga kerja dapat dilihat pada tabel berikut :
Kedua jenis produk memberikan keuntungan sebesar Rp 40.000.000 untuk kain sutera dan Rp 30.000.000 untuk kain wol. Masalahnya adalah bagaimana menentukan jumlah unit setiap jenis produk yang akan diproduksi setiap hari agar keuntungan yang diperoleh bisa maksimal.
X1 = kain sutera
X2 = kain wol
Zmax = 40X1 + 30X2
library(lpSolve)
f.obj <- c(40, 30)
# Memasukkan koefiesian fungsi kendala dalam bentuk matriks
# 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 kendala
f.dir <- c("<=",
"<=",
"<=")
# Memasukkan koefisien ruas kanan
f.rhs <- c(60,
30,
40)
# Keuntungan Maksimum
lp("max", f.obj, f.con, f.dir, f.rhs)
## Success: the objective function is 900
# Nilai Variabel agar mencapai keuntungan maksimum
lp("max", f.obj, f.con, f.dir, f.rhs)$solution
## [1] 15 10
# Koefisien sensitivitas
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$sens.coef.from
## [1] 20 20
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$sens.coef.to
## [1] 60 60
# Bayangan/harga ganda dari kendala dan variabel keputusan
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals
## [1] 5 0 15 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] 4e+01 -1e+30 3e+01 -1e+30 -1e+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] 7e+01 1e+30 6e+01 1e+30 1e+30