Program linear adalah salah satu bagian dari matematika terapan yang dapat memecahkan persoalan optimisasi (Maksimum dan Minumum) dengan model matematika yang terdiri dari pertidaksamaan linier yang mempunyai banyak penyelesaian.
library(lpSolve)
Fungsi Tujuan digunakan untuk mengarahkan analisa untuk mendeteksi tujuan perumusan masalah. Jika deketahui Kain sutra adalah 40 dan Kain wol adalah 30, maka fungsi tujuannya sebagai berikut :
f.obj <- c(40, 30)
Fungsu kendala digunakan untuk mengetahui sumber daya yang tersedia dan permintaan atas sumber daya tersebut
Terdapat fungsi kendala X1 (Kain Sutra) dan X2 (Kain Wol) yang di gambarkan sebuah matriks: 1) 2X1 + 3X2 2) + 2X2 3) 2X1 + X2
f.con <- matrix(c(2, 3,
0, 2,
2, 1), nrow = 3, byrow = TRUE)
Tanda Pertidaksamaan adalah bentuk yang memuat tanda lebih dari “ > “, kurang dari “ < “, lebih dari atau sama dengan “ ≥ “, dan kurang dari atau sama dengan “ ≤ “.
f.dir <- c("<=",
"<=",
"<=")
f.rhs <- c(60,
30,
40)
Memasuka nilai X1 dan X2 ke dalam nilai akhir (Z) sehingga didapatkan nilai optimal.
lp("max", f.obj, f.con, f.dir, f.rhs)
## Success: the objective function is 900
Maka akan diketahui nilai X1 Dan X2
lp("max", f.obj, f.con, f.dir, f.rhs)$solution
## [1] 15 10
Sehingga dapat diketahui nilai X1 adalah 15 dan nilai X2 adal 10
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
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals
## [1] 5 0 15 0 0
# Duals lower and upper limits
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
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