Базовый пример симплекс-функции в R с ошибками

Доброе утро, у меня есть вопрос к проблеме оптимизации, которую я не могу решить в R, но в Excel:

Я хотел бы оптимизировать следующую ситуацию (Перевозка материалов и людей):
Авиакомпания x1 может перевозить 50 т материала и 500 человек.
Авиакомпания x2 может перевозить 150 т материала и 250 человек.

50x1 + 150x2 >= 900 -> Транспортировка материала мин. 900
500x1 + 250x2> = 2500 -> Перевозка людей мин. 2500

x1 - авиакомпания со стоимостью рейса 2500 за рейс. x2 - авиакомпания со стоимостью рейса 3500 за рейс. Затраты должны быть минимизированы!

x1> = 0
х2>=0

Вот мое решение в R (функция simplex из пакета "boot"):

library("boot")    
a <- c(2500, 3500)
A2 <- matrix(c(50, 150, 500, 250), ncol=2, nrow=2, byrow=TRUE)
b2 <- c(900, 2500)
simplex(a, A2 = A2, b2 = b2, maxi=FALSE)

Я получаю следующую ошибку:
Fehler in the pivot(tableau, prow, pcol): NAs nicht zugelassen in Teilbereichszuweisungen

Решение Excels Solver дает мне точное решение: x1 = 2.4 и x2 = 5.2

Где моя ошибка в R? Я должен использовать аргументы A2 и b2 из-за>= ... Спасибо за любую помощь!

Просто короткое расширение: я решил данную проблему, используя функцию "solveLP" из пакета "linprog", используя следующий синтаксис:

solveLP(cvec = a, bvec = b, Amat = A, 
    maximum=FALSE, const.dir=c(">=",">="))

а также:

A <- matrix(c(-50,-150,-500,-250),nrow=2,ncol=2,byrow=TRUE)
a <- c(2500, 3500)
b <- c(-900, -2500)
solveLP(a,b,A,maximum=FALSE)

Все еще удивляетесь, почему функция simplex дает мне такие ошибки?

1 ответ

Решение

Я не знаю точную причину (так что это не существенное решение). Но я знаю, что ошибка решается, когда вы устанавливаете верхний предел с A1 а также b1 даже если b1 это огромная ценность.

Например;
simplex(a, A1 = c(1, 1), b1 = 1.0E+12, A2 = A2, b2 = b2, maxi = FALSE)
Другие вопросы по тегам