Program Linear

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)

Menetapkan Koefisien Dari Fungsi Tujuan

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)

Menambahkan Fungsi Kendala

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)

Menambahkan Tanda Pertidaksamaan

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("<=",
           "<=",
           "<=")

Menabahkan Koefisien Sisi Kanan

  1. 2X1 + 3X2 <= 60 (Benang Sutra)
  2. 0 + 2X2 <= 30 (Benang Wol)
  3. 2X1 + X2 <= 40 (Tenaga Kerja)
f.rhs <- c(60,
           30,
           40)

Nilai akhir (z)

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

Dual Values (first dual of the constraints and then dual of the variables)

Duals of the constraints and variables are mixed

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

2. Daftar Pustaka

  1. https://towardsdatascience.com/linear-programming-in-r-444e9c199280
  2. https://rpubs.com//suhartono-uinmaliki/885865