Paket lpSolve adalah sebuah paket yang digunakan dalam bahasa pemrograman R untuk menyelesaikan masalah pemrograman linier (linear programming). Paket ini menyediakan fungsi-fungsi yang memungkinkan pengguna untuk merumuskan dan memecahkan masalah pemrograman linier dengan menggunakan metode simplex dan metode dual simplex.

Paket lpSolve memungkinkan pengguna untuk menentukan fungsi tujuan, kendala, serta batasan-batasan yang terkait dengan masalah pemrograman linier. Selain itu, paket ini juga menyediakan fungsi untuk menentukan jenis solusi (misalnya, mencari solusi optimal, solusi terbatas, atau solusi tidak terbatas) serta mendapatkan solusi optimal yang memenuhi semua kendala yang telah ditentukan.

Dengan menggunakan paket lpSolve, pengguna dapat merumuskan dan memecahkan berbagai masalah pemrograman linier yang melibatkan optimisasi, alokasi sumber daya, perencanaan produksi, dan masalah serupa lainnya.

definisikan matrix dan vektor-vektor untuk mendefinisikan polytope menggunakan fungsi diag() dan fungsi rbind().

A <- matrix(c(1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 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 , 1 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 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 , 1 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 1 , 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 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
1 , 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 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 1), nrow = 11, ncol = 18, byrow = TRUE)
f.con <- rbind(A, diag(18))
f.rhs <- c(1298, 1948,465 ,605 ,451 ,338 ,260 ,183 ,282 ,127 ,535,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

definisikan fungsi cost dan persamaan atau pertidaksamaan

f.obj <- c(39.99, 126.27, 102.70, 81.68, 38.81, 71.99,
31.21, 22.28, 321.04, 145.36, 33.82, 154.05, 64.19,
87.90, 107.98, 65.45, 39.08, 167.38)
f.dir <- c("=", "=", "=", "=", "=", "=", "=", "=", "=", "=", "=",
">=", ">=", ">=", ">=", ">=", ">=", ">=", ">=", ">=", ">=",
">=", ">=", ">=", ">=", ">=", ">=", ">=", ">=")

gunakan fungsi lp() dari package lpSolve untuk mencari solusi optimal dan juga nilai optimalnya.

library(lpSolve)
Sol <- lp ("min", f.obj, f.con, f.dir, f.rhs)

Untuk melihat nilai optimal kita gunakan “Sol$objval”.

Sol$objval
## [1] 245498.9

Sol$solution digunakan untuk mencari nilai optimal tersebut.

Sol$solution
##  [1] 465   0 451   0 260 122   0   0   0   0 605   0 338   0  61 282 127 535