LINIER PROGRAMMING MENCARI PENYELESAIAN MASALAH MAKSIMASI MENGGUNAKAN BAHASA PEMROGRAMAN R
1.LINEAR PROGRAMMING
Linear programming adalah metode matematika dalam menentukan pemecahan masalah nilai maksimum dan nilai minimum.permasalahan yang berhubungan dengan program linear selalu berhubungan dengan fungsi objektif(fungsi tujuan) berdasarkan kondisi-kondisi yang membatasinya.
2.MASALAH MAKSIMISASI
contoh:
Aziza adalah produser snack popcorn dan snack diet. untuk memproduksi kedua snack dibutuhkan bahan baku berupa jagung dan snack diet . maksimum penyediaan jagung 40 kg/hari, padi 15 kg/hari dan tenaga robot 20 jam/hari. fungsi kendala 3,2, 0,3, 1,2. dengan keuntungan sebesar RP.10.000.000,- untuk snack diet dan RP.7.500.000,- untuk popcorn. Bagaimana menentukan jumlah unit setiap jenis produk yang akan di produksi setiap hari agar keuntungan yang diperoleh maksimal? menentukan variabel:
x1 = popcorn x2 = snack diet Tujuan : Smax= 10x1 + 7.5x2
library(lpSolve)
#memasukkan koofosien dari fungsi tujuan pada f.obj
f.obj <- c (10,7.5)
fungsi kendala/batasan 1. 3X1 + 2X2 <= 40 (Jagung) 2. 3X2 <= 15(Beras) 3. X1 + 2X2 <=20(Tenaga Robot)
#memasukkan koofosien fungsi kendala dalam bentuk matriks
#row menunjukkna banyaknya kendala yaitu 3 dan angka yang diinput disusun perbaris sehingga byrow= TRUE
f.con <- matrix(c(3,2,
0,3,
1,2),nrow=3,byrow = TRUE)
#memasukkan tanda pertidaksamaan pada setiap kendala
f.dir <- c("<=",
"<=",
"<=")
#memasukkan koofosien ruas kanan
f.rhs <- c(40,
15,
20)
Mendapatkan solusi Optimal
#keuntungan maksimum
lp("max",f.obj,f.con,f.dir,f.rhs)
## Success: the objective function is 137.5
#nilai variabel agar mencapai keuntungan maksimum
lp("max",f.obj,f.con,f.dir,f.rhs)$solution
## [1] 10 5
#koofosien sensitivitas
lp("max",f.obj,f.con,f.dir,f.rhs, compute.sens = TRUE)$sens.coef.from
## [1] 0.000000 6.666667
lp("max",f.obj,f.con,f.dir,f.rhs, compute.sens = TRUE)$sens.coef.to
## [1] 1.125e+01 1.000e+30
#bayangan harga ganda dari kendala dan variabel keputusan
lp("max",f.obj,f.con,f.dir,f.rhs, compute.sens = TRUE)$duals
## [1] 3.3333333 0.2777778 0.0000000 0.0000000 0.0000000
#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] 1.000000e+01 -1.776357e-15 -1.000000e+30 -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] 4.0e+01 1.5e+01 1.0e+30 1.0e+30 1.0e+30
nilai S maksimum yang dapat diperoleh saat memenuhi kendala yang diberikan adalah 137.5( keuntuan sebesar 137.5 juta), dimana X1=10 DAN X2=5. Koofisien sensitivitas berubah dari 0.00000 dan 6.666667 ke 1.125e+01 1.000e+30. Bayangan/ harga ganda dari kendala adalah 3.3333333,0.2777778,0.0000000. untuk variabel keputusan masing-masing adalah 0.0000000 dan 0.0000000. Batas bawah harga bayangan adalah 1.000000e+01 -1.776357e-15 -1.000000e+30, sedangkan untuk variabel keputusan berturut-turut adalah -1.000000e+30 -1.000000e+30. yang terakhir , batas atas harga bayangan adalah 4.0e+01 1.5e+01 1.0e+30 , sedangkan untuk variabel keputusan masing-masing adalah 1.0e+30 1.0e+30.