Вам также следует попробовать пакет Rglpk для решения проблем LP с GLPK (GNU Linear Programming Kit) .
Пример:
## Simple linear program.
## maximize: 2 x_1 + 4 x_2 + 3 x_3
## subject to: 3 x_1 + 4 x_2 + 2 x_3 <= 60
## 2 x_1 + x_2 + x_3 <= 40
## x_1 + 3 x_2 + 2 x_3 <= 80
## x_1, x_2, x_3 are non-negative real numbers
obj <- c(2, 4, 3)
mat <- matrix(c(3, 2, 1, 4, 1, 3, 2, 2, 2), nrow = 3)
dir <- c("<=", "<=", "<=")
rhs <- c(60, 40, 80)
max <- TRUE
Rglpk_solve_LP(obj, mat, dir, rhs, max = max)
R выход:
(Обратите внимание, что $status
целое число с информацией о состоянии возвращаемого решения. Если параметр управления canonicalize_status установлен (по умолчанию), то он вернет 0 для найденного оптимального решения и ненулевое значение в противном случае. при значении FALSE будут возвращены коды состояния GLPK).
$optimum
[1] 76.66667
$solution
[1] 0.000000 6.666667 16.666667
$status
[1] 0