Я пытаюсь использовать функцию constrOptim()
в R для оптимизации:
2x + 2y + 3z
при условии:
-2x + y + z <= 1
4x - y + 3z <= 3
x, y, z >= 0
То, что у меня пока есть, таково:
ui = matrix(c(2,-1,-1,-4, 1,-3, 1, 0, 0, 0, 1, 0, 0, 0, 1),
nrow = 5,
byrow = T)
ci = c(-1, -3, 0, 0, 0)
theta = c(0, 1, 0)
constrOptim(
theta = theta,
f = func,
ui = ui,
ci = ci)
Это дает мне ошибку, что " начальное значение не во внутреннем допустимом районе". Однако, если я запускаю следующее в качестве теста:
ui = matrix(c(2,-1,-1,-4, 1,-3, 1, 0, 0, 0, 1, 0, 0, 0, 1),
nrow = 5,
byrow = T)
ci = c(-1, -3, 0, 0, 0)
theta = c(0, 1, 0)
ui %*% theta - ci
, я получаю (0 4 0 1 0)
, что определенно> = 0.
У меня вопрос, почему я получаю сообщение об ошибке, сообщающее мне что ui %*% theta - ci
не> = 0, когда это ясно? Чего мне не хватает?
Редактировать: удалось разобраться благодаря Стефану Лорану .
Есть какие-нибудь идеи, как наилучшим образом построить возможную область в R? Какие-нибудь полезные пакеты?