Linear Programming with R, MAKSIMISASI PRODUKSI PT. HARAPAN TEKSTIL

4/5/2022

Mutiara Aprillia Dzakiroh, 210605110032

Dosen Pengampu : Prof. Dr. Suhartono, M.Kom

Mata Kuliah : Linier Algebra

Prodi : Teknik Informatika

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Linear programming

(juga disebut sebagai LP) adalah teknik riset operasi yang digunakan ketika semua tujuan dan kendala adalah linier (dalam variabel) dan ketika semua variabel keputusan adalah kontinu. Secara hierarki, program linier dapat dianggap sebagai teknik riset operasi yang paling mudah. Pada pemrograman R ini LP bisa kita terapkan dengan menggunakan package lpSolve.

Package lpSolve

Paket lpSolve dari R berisi beberapa fungsi untuk menyelesaikan masalah program linier dan mendapatkan analisis statistik yang signifikan. Lp_solve tersedia secara bebas (di bawah LGPL 2) perangkat lunak untuk menyelesaikan program linear, integer, dan integer campuran. Di dalam implementasi kami menyediakan fungsi ``wrapper’’ di C dan beberapa R fungsi yang memecahkan masalah linier/bilangan bulat umum, masalah penugasan, dan masalah transportasi.

Masalah Maksimisasi

Maksimisasi dapat berupa memaksimalkan keuntungan atau hasil. Berikut salah satu bentuk kasusnya. 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 dalam tabel berikut

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
PT_HarapanTekstil <- read_excel("PT.HarapanTekstil.xlsx")
PT_HarapanTekstil
## # A tibble: 3 x 4
##   `BAHAN DAN TENAGA` `KAIN SUTERA` `KAIN WOL` `MAKS PENYEDIAAN`
##   <chr>                      <dbl>      <dbl>             <dbl>
## 1 BENANG SUTERA (kg)             2          3                60
## 2 BENANG WOL (kg)                0          2                30
## 3 TENAGA KERJA (jam)             2          1                40
## 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.

Langkah-langkah penyelesaian Masalah Maksimisasi

# Import lpSolve package
library(lpSolve)
# Memasukkan koefisien dari fungsi tujuan pada f.obj
f.obj <- c( 40 , 30)
# f.obj = function object dan  40(X1) + 30(X2) adalah koefisien function object

# 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)

#  2X1 + 3X2 ≤ 60 (benang sutera)
#        2X2 ≤ 30 (benang wol)
#  2X1 + 1X2 ≤ 40 (tenaga kerja)

# # Memasukkan tanda pertidaksamaan pada setiap kendala
f.dir <- c("<=",
           "<=",
           "<=")
# merupakan fungsinya (pertidakasamaannya)

# # Memasukkan koefisien ruas kanan
f.rhs <- c(60,
           30,
           40)

# Membuat grafik
 # 1. 2X1 + 3 X 2=60
 #     X1=0, X2 =60/3 = 20
 #     X2=0, X1= 60/2 = 30
 # 2. 2X2 ≤ 30
 #     X2=15
 # 3. 2X1 + X2 ≤ 40
 #     X1=0, X2 = 40
 #     X2=0, X1= 40/2 = 20

Mendapat Solusi Optimal

# # 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

Kesimpulan

Nilai z maksimum yang dapat diperoleh saat memenuhi kendala yang diberikan adalah 900 ( keuntungan sebesar Rp 900 juta), di mana X1=15 X2=10. Koefisien sensitivitas berubah dari 20 dan 20 menjadi 60 dan 60. Bayangan/harga ganda dari kendala adalah 5, 0 dan 15, sedangkan untuk variabel keputusan masing-masing adalah 0 dan 0. Batas bawah harga bayangan adalah 4e+01, -1e+30, dan 3e+01, sedangkan untuk variabel keputusan berturut-turut adalah -1e+30 dan -1e+30. Terakhir, batas atas harga bayangan adalah 17e+01, 1e+30, dan 6e+01, sedangkan untuk variabel keputusan masing-masing adalah 1e+30 dan 1e+30.

Referensi