library(lpSolve)
library(linprog)
dat<- data.frame("AX" = c("Harga", "BK", "PK", "TDN", "Bahan pakan sapi pedaging","Bahan pakan hijauan","Bahan pakan ransum"), "x1" = c( 600, 0.4, 0.0172, 0.1728, 1,1,0),
"x2" = c(500, 0.21, 0.02, 0.11, 1,1,0), "x3" = c(4000,0.891,0.096,0.801,1,0,1),
"x4" = c(6500,0.893,0.149,0.625,1,0,1), "x5" = c(6000,0.897,0.439,0.529,1,0,1),
"x6" = c(3000,0.114,0.021,0.044,1,0,1), "x7" = c(750,0.262,0.062,0.206,1,0,1),
"x8" = c(1500,0.322,0.010,0.263,1,0,1), "x9" = c(6500,0.896,0.142,0.6,1,0,1))
dat
## AX x1 x2 x3 x4 x5 x6
## 1 Harga 600.0000 500.00 4000.000 6500.000 6000.000 3000.000
## 2 BK 0.4000 0.21 0.891 0.893 0.897 0.114
## 3 PK 0.0172 0.02 0.096 0.149 0.439 0.021
## 4 TDN 0.1728 0.11 0.801 0.625 0.529 0.044
## 5 Bahan pakan sapi pedaging 1.0000 1.00 1.000 1.000 1.000 1.000
## 6 Bahan pakan hijauan 1.0000 1.00 0.000 0.000 0.000 0.000
## 7 Bahan pakan ransum 0.0000 0.00 1.000 1.000 1.000 1.000
## x7 x8 x9
## 1 750.000 1500.000 6500.000
## 2 0.262 0.322 0.896
## 3 0.062 0.010 0.142
## 4 0.206 0.263 0.600
## 5 1.000 1.000 1.000
## 6 0.000 0.000 0.000
## 7 1.000 1.000 1.000
data diatas merupkan data yang akan digunakan pada dalam optimasi cost minimizing yaitu pada pakan sapi.
berikut fungsi tujuan atau disebut juga fungsi objektif yang ingin di minimalkan
objective.in <- c(600, 500, 4000, 6500, 6000, 3000, 750, 1500, 6500)
berikut inimerupakan fungsi kendala yang diberikan untuk masing masing X
const.mat<- matrix(c(0.400, 0.210, 0.891, 0.893, 0.897, 0.114, 0.262, 0.322, 0.896,
0.0172, 0.020, 0.096, 0.149, 0.439, 0.021, 0.062, 0.010, 0.142,
0.1728, 0.110, 0.8019, 0.6251, 0.52923, 0.04465, 0.20698, 0.263396, 0.6,
1,1,1,1,1,1,1,1,1,
1,1,0,0,0,0,0,0,0,
0,0,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,
0,1,0,0,0,0,0,0,0,
0,0,1,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,
0,0,0,0,0,1,0,0,0,
0,0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,1,0,
0,0,0,0,0,0,0,0,1), nrow = 15, byrow = TRUE)
berikut merupkan batas fungsi kendala yang dikehendaki
a1<- 13.5 #Kilogram
a2<- 1.4159 #Kilogram
a3<- 8.396 #Kilogram
a4<- 45 #Kilogram
a5<- 31.5 #Kilogram
a6<- 13.5 #Kilogram
a7<- 100
a8<- 100
a9<- 30
a10<-30
a11<-30
a12<-30
a13<-30
a14<-30
a15<-30
penggabungan batasan fungsi kendala
const.rhs<- c(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)
berikut merupakan arah yang menginformasikan bahwa setiap kendala memiliki nilai max atau nilai min yang dikehendaki
const.dir<- c("<=", ">=", ">=", "<=","<=","<=","<=","<=","<=","<=","<=","<=","<=","<=","<=")
fungsi yang digunakan dalam optimasi yaitu sebagai berikut : akan di peroleh nilai cost minimizing
optm<- lp(direction = "min", objective.in , const.mat, const.dir, const.rhs)
summary(optm)
## Length Class Mode
## direction 1 -none- numeric
## x.count 1 -none- numeric
## objective 9 -none- numeric
## const.count 1 -none- numeric
## constraints 165 -none- numeric
## int.count 1 -none- numeric
## int.vec 1 -none- numeric
## bin.count 1 -none- numeric
## binary.vec 1 -none- numeric
## num.bin.solns 1 -none- numeric
## objval 1 -none- numeric
## solution 9 -none- numeric
## presolve 1 -none- numeric
## compute.sens 1 -none- numeric
## sens.coef.from 1 -none- numeric
## sens.coef.to 1 -none- numeric
## duals 1 -none- numeric
## duals.from 1 -none- numeric
## duals.to 1 -none- numeric
## scale 1 -none- numeric
## use.dense 1 -none- numeric
## dense.col 1 -none- numeric
## dense.val 1 -none- numeric
## dense.const.nrow 1 -none- numeric
## dense.ctr 1 -none- numeric
## use.rw 1 -none- numeric
## tmp 1 -none- character
## status 1 -none- numeric
optm$objval
## [1] 34881.58
Biaya termurah yang dapat dicapai adalah 34.888,58
optm$solution
## [1] 13.586047 11.612429 3.322689 0.000000 0.000000 0.000000 10.177311
## [8] 0.000000 0.000000
untuk mencari kombinasi terbaik diantara bahan pakan untuk mencapai tujuan dan memenuhi semua batasan-batasan yang telah ditetapkan. Berdasarkan hasil optimasi, kombinasi bahan pakan paling baik dan mengutungkan terdiri dari Jerami padi basah (X1) sebesar 13,586 , rumput gajah (X2) sebesar 11,612 , tepung jagung (X3) sebesar 3,323 , dan Ampas tahu basah (X7) sebesar 10,177.
x1<-optm$solution[1];x1
## [1] 13.58605
x2<-optm$solution[2];x2
## [1] 11.61243
x3<-optm$solution[3];x3
## [1] 3.322689
x4<-optm$solution[4];x4
## [1] 0
x5<-optm$solution[5];x5
## [1] 0
x6<-optm$solution[6];x6
## [1] 0
x7<-optm$solution[7];x7
## [1] 10.17731
x8<-optm$solution[8];x8
## [1] 0
x9<-optm$solution[9];x9
## [1] 0