Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika

1. Linear Programming

Linear Programming atau Pemrograman Linier adalah suatu model umum yang dapat digunakan dalam pemecahan masalah pengalokasian sumber-sumber yang terbatas secara optimal. Model yang digunakan dalam memecahkan masalah alokasi sumber daya perusahaan adalah model matematis. Semua fungsi matematis yang disajikan dalam model haruslah dalam bentuk fungsi linier.

Terdapat dua fungsi dalam linier programming, diantaranya:

  1. Fungsi Tujuan, yaitu fungsi yang menggambarkan tujuan/sasaran di dalam permasalahan linier programming yang berkaitan dengan pengaturan secara optimal sumberdaya-sumberdaya, untuk memperoleh keuntungan maksimal atau biaya minimal. Nilai yang akan dioptimalkan dinyatakan sebagai Z
  2. Fungsi Batasan, yaitu bentuk penyajian secara matematis batasan-batasan kapasitas yang tersedia yang akan dialokasikan secara optimal ke berbagai kegiatan

2. Masalah Maksimasi

Maksimasi dapat diartikan sebagai cara agar suatu perusahaan dapat memaksimalkan keuntungan atau hasil. Masalah maksimasi dapat diselesaikan dalam pemrograman linier. berikut contoh masalah maksimasi:

PT LAQUNATEKSTIL 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:

Kedua jenis produk memberikan keuntungan sebesar Rp 40 juta untuk kainsutera dan Rp 30 juta untuk kain  wol.  Masalahnya  adalah  bagaimanamenentukan  jumlah  unit  setiap  jenis  produk  yang  akan diproduksi setiap hariagar keuntungan yang diperoleh bisa maksimal.

3. Langkah-langkah Penyelesaian

  1. Menentukan Variabel

    X1 = kain sutera

    X2 = kain wol

# Import lpSolve package
library(lpSolve)
  1. Fungsi Tujuan

    Tujuan pabrik adalah maksimasi keuntungan, sehingga kita dapat menuliskan fungsi tujuan secara matematis yaitu sebagai berikut:

    Zmax = 40X1 + 30X2

#Menetapkan koefisien dari fungsi tujuan
f.obj <- c(40, 30)
  1. Fungsi Kendala/Batasan Berkaitan dengan sumber daya yang digunakan, pabrik kesulitan untuk menentukan jumlah unit setiap jenis produk yang akan diproduksi setiap hari agar dapat memperoleh keuntungan yang maksimal. Maka fungsi kendala dapat dirumuskan secara matematis seperti berikut:
    • 2X1 + 3X2 ≤ 60 (benang sutera)
    • 2X2 ≤ 30 (benang wol)
    • 2X1 + X2 ≤ 40 (tenaga kerja)
#Menetapkan matriks yang sesuai dengan koefisien kendala berdasarkan baris
f.con <- matrix(c(2, 3,
                  0, 2,
                  2, 1), nrow = 3, byrow = TRUE)
#Menetapkan tanda-tanda ketidaksetaraan
f.dir <- c("<=",
           "<=",
           "<=")
#Menetapkan koefisien sisi kanan
f.rhs <- c(60,
           30,
           40)
  1. Membuat Grafik

    • 2X1 + 3X2 = 60 X1 = 0, X2 = 60/3 = 20

      X2 = 0, X1 = 60/2 = 30

    • 2X2 ≤ 30

      X2 = 15

    • 2X1 + X2 ≤ 40

      X1 = 0, X2 = 40

      X2 = 0, X1 = 40/2 = 20

  2. Mendapat Solusi Optimal

#Mendapatkan nilai maksimum
lp("max", f.obj, f.con, f.dir, f.rhs)
## Success: the objective function is 900
#Mendapatkan variabel akhir
lp("max", f.obj, f.con, f.dir, f.rhs)$solution
## [1] 15 10
#Merubah 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
#Mendapat 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
#Mendapat 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
#Mendapat 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

4. Kesimpulan

Nilai z maksimum yang dapat diperoleh saat memenuhi kendala yang diberikan adalah 900 atau keuntungan sebesar Rp 900 juta, di mana x1 = 15 dan 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 adalah 0 dan 0, masing-masing. Batas bawah batasan harga bayangan/ganda adalah 4e+01, -1e+30 dan 3e+01, sedangkan untuk variabel keputusan berturut-turut adalah -1e+30 dan -1e+30. Terakhir, batas atas batasan harga bayangan/ganda adalah 7e+01, 1e+30 dan 6e+01, sedangkan untuk variabel keputusan masing-masing adalah 1e+30 dan 1e+30.


Sumber :

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

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

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00