Pemrograman Linear Dalam Permasalahan Maksimisasi
| Oleh | Ihsan Bagus Fahad Arafat |
| Dosen Pengampu | Prof. Dr. Suhartono, M.Kom |
| Program | Magister Informatika |
| Tanggal | 9 Juni 2022 |
1. Latar Belakang
Program linear merupakan 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. Dua macam fungsi Program Linear:
Fungsi Tujuan : mengarahkan analisa untuk mendeteksi tujuan perumusan masalah Fungsi kendala : untuk mengetahui sumber daya yang tersedia dan permintaan atas sumber daya tersebut.
2. Aktivasi Library
library(npreg)## Warning: package 'npreg' was built under R version 4.1.3
library(jmv)## Warning: package 'jmv' was built under R version 4.1.3
library(tidyverse)## Warning: package 'tidyverse' was built under R version 4.1.3
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v dplyr 1.0.8
## v tidyr 1.2.0 v stringr 1.4.0
## v readr 2.1.2 v forcats 0.5.1
## Warning: package 'ggplot2' was built under R version 4.1.3
## Warning: package 'tibble' was built under R version 4.1.3
## Warning: package 'tidyr' was built under R version 4.1.3
## Warning: package 'readr' was built under R version 4.1.3
## Warning: package 'purrr' was built under R version 4.1.3
## Warning: package 'dplyr' was built under R version 4.1.3
## Warning: package 'stringr' was built under R version 4.1.3
## Warning: package 'forcats' was built under R version 4.1.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(skimr)## Warning: package 'skimr' was built under R version 4.1.3
library(stats)
library(npreg)3. Masalah Maksimisasi
Maksimisasi dapat berupa memaksimalkan keuntungan atau hasil.
Contoh: CV.MAJU JAYA memiliki usaha dalam membuat memproduksi sepatu dan sendal. Untuk memproduksi kedua produk tersebut diperlukan bahan baku sepatu, bahan baku sendal dan tenaga kerja. Maksimum penyediaan sepatu adalah 60 pasang per hari, sendal 30 pasang per hari dan tenaga kerja 40 jam per hari.
Kedua jenis produk memberikan keuntungan sebesar Rp.10.000.000,- untuk sepatu dan Rp. 7.000.000,- untuk sendal. Masalahnya adalah bagaimana menentukan jumlah unit setiap jenis produk yang akan diproduksi setiap hari agar keuntungan yang diperoleh bisa maksimal.
4. Langkah Penyelesaian :
4.1. Menentukan Variabel jika,
X1=sepatu X2=sendal
4.2. Fungsi Tujuan
Zmax= 10X1 + 7X2
(10 –> 10 juta) (7 –> 7 juta)
library(lpSolve)
# Menentukan Koefisien dari fungsi tujuan
f.obj <- c(10,7)4.3. Fungsi Kendala / Batasan
2X1 + 3X2 ≤ 70 (sepatu)
2X2 ≤ 50 (sendal) 2X1 + X2 ≤ 40 (tenaga kerja)
# Memasukkan koefisien kedalam persamaan fungsi
# 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 persamaan
f.dir <- c("<=",
"<=",
"<=")# Memasukkan koefisien ruas kanan
f.rhs <- c(70,
50,
40)4.4. Mencari Nilai Optimal
# Nilai Max
lp("max", f.obj, f.con, f.dir, f.rhs)## Success: the objective function is 230
# Mencari Nilai Variabel Agar Mendapat Keuntungan MAX
lp("max", f.obj, f.con, f.dir, f.rhs)$solution## [1] 12.5 15.0
# Mengganti Koefisien Sensitivitas
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$sens.coef.from## [1] 4.666667 5.000000
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$sens.coef.to## [1] 14 15
# Bayangan/Harga Ganda Dari Kendala dan Variabel Keputusan
lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals## [1] 1 0 4 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] 4.000000e+01 -1.000000e+30 2.333333e+01 -1.000000e+30 -1.000000e+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] 9e+01 1e+30 7e+01 1e+30 1e+30
5. Kesimpulan
Untuk memperoleh keuntungan optimal, maka X1 = 12.5 dan X2 = 15 dengan keuntungan sebesar Rp 230 juta. Koefisien sensitivitas berubah dari 4,67 dan 5 menjadi 14 dan 15. Bayangan/harga ganda dari kendala adalah 1, 0 dan 4, sedangkan untuk variabel keputusan masing-masing adalah 0 dan 0. Batas bawah harga bayangan adalah 4.000000e+01 -1.000000e+30 2.333333e+01 , sedangkan untuk variabel keputusan berturut-turut adalah -1.000000e+30 dan -1.000000e+30. Terakhir, batas atas harga bayangan adalah 9e+01 1e+30 dan 7e+01, sedangkan untuk variabel keputusan masing-masing adalah 1e+30 dan 1e+30.
6. Referensi
https://github.com/juba/rmdformats : Format Visual Rpubs