Definisi Linier Programing

Linier Programming adalah Suatu model umum yang dapat digunakan dalam pemecahan masalah pengalokasian sumber-sumber yang terbatas secara optimal

Tujuan Linear Programing ialah mencari pemecahan persoalan-persoalan yang timbul didalam perusahaan, yakni mencari keadaan yang optimal dengan cara memperhitungkan batasan yang ada.

Study case

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.

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.

Problem solving

Menentukan Variabel:

X1 = kain sutera

X2 = kain wol

Fungsi tujuan

Zmax= 40X1 + 30X2

#Membuat fungsi sesuai data yang didapatkan
f.obj <- c(40, 30)

#Fungsi Batasan atau Batasan

2X1 + 3X2 ≤ 60 (benang sutera)

2X2 ≤ 30 (benang wol)

2X1 + X2 ≤ 40 (tenaga kerja)

# Membuat matriks dan memasukkan data fungsi kedalam matriks
f.con <- matrix(c(2, 3,
                  0, 2,
                  2, 1), nrow = 3, byrow = TRUE)
# Memberi tanda pertidaksamaan fungsi
f.dir <- c("<=",
           "<=",
           "<=")
# Memasukkan nilai koefisien ruas kanan
f.rhs <- c(60,
           30,
           40)
# Perintah metode linier programming mencari nilai keuntungan maksimum 
library(lpSolve)
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
# Mendapatkan nilai sensitivitas koefisie fungsi
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
# Nilai ganda dari kendala/batasan dan variabel keputusan
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals
## [1]  5  0 15  0  0
# Mendapatkan nilai sensitivitas variable ruas kanan
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
# Mendapatkan Nilai maksimum dalam bilangan bulat
lp("max", f.obj, f.con, f.dir, f.rhs, int.vec = 1:3)
## Success: the objective function is 900
lp("max", f.obj, f.con, f.dir, f.rhs, int.vec = 1:3)$solution
## [1] 15 10

Referensi

https://ilab.gunadarma.ac.id/wp-content/uploads/2019/09/Modul-TRO.pdf

https://www.gurupendidikan.co.id/pengertian-linear-programing/

https://youtu.be/AJw91UVYNsg

https://rpubs.com/suhartono-uinmaliki/885865

https://towardsdatascience.com/linear-programming-in-r-444e9c199280