Решить нелинейную задачу выпуклой оптимизации с нелинейными ограничениями в R
У меня есть простая задача оптимизации экономического объема заказа (EOQ), включающая много переменных и несколько ограничений.
Обобщенная целевая функция является суммой (ai*x[i]+bi/[xi]) и имеет следующие ограничения:
- x [i]> = 1 для всех "i" (не менее 1 порядка)
- x [i] <= 24 для всех "i" (максимум 24 заказа)
- сумма (x[i]) <= 2000 (максимум 2000 заказов вместе взятых)
- сумма (ci/x[i]) <= 2000 (запас в цикле не более 2000 единиц)
При использовании auglag () это занимает слишком много времени (даже для 100 переменных), поэтому, проводя некоторые исследования, я обнаружил, что проблема является выпуклой, и попытался реализовать выпуклый решатель.
Я нашел эту ссылку:
Ошибка в задаче нелинейной оптимизации: бесконечные или отсутствующие значения в "x"
Тем не менее, кажется, что CVXR не учитывает "х" в знаменателе, поскольку он предлагает следующее сообщение об ошибке:
Ошибка в as.Constant(e1)/e2: может делиться только на скалярную константу
ans2 <- auglag(par=rep(2,1000), fn=objfun, hin=confun) ##takes too long
p <- Variable(1000)
obj <- Minimize(sum(a*p+b/p)) ##prompts error
Я ожидаю, что решатель будет работать намного быстрее для такой "простой" задачи оптимизации... Я что-то не так делаю со вторым вариантом? Или есть ли лучший решатель для выпуклых задач нелинейной оптимизации с нелинейными ограничениями?
Спасибо
1 ответ
Пытаться
Minimize(sum(a*p+b*inv_pos(p)))
Я не пробовал, так как вы не предоставляете воспроизводимый код.