У меня простая (действительно стандартная по экономике) нелинейная ограниченная дискретная проблема максимизации для решения в R и у меня проблемы. Я нашел решения для деталей проблемы (нелинейная максимизация, дискретная максимизация), но не для объединения всех проблем.Нелинейная дискретная оптимизация в R
В этом проблема. Потребитель хочет купить три продукта (ананас, банан, печенье), знает цены и имеет бюджет в 20 €. Ему нравится разнообразие (т. Е. Он хочет иметь все три продукта, если это возможно), и его удовлетворение уменьшается в потребляемом количестве (ему нравится его первый способ печенья больше, чем его 100-й).
Функция он хочет максимизировать это
и, конечно же, так как каждый из них имеет свою цену, и он имеет ограниченный бюджет, он максимизирует эту функцию при ограничении, что
Что я хочу сделать, так это найти оптимальный список покупок (N ananas, M bananas, K cookie), который удовлетворяет ограничению.
Если проблема была линейной, я бы просто использовал linprog :: solveLP(). Но объективная функция нелинейна. Если проблема носила непрерывный характер, то это было бы простым аналитическим решением.
Вопрос дискретный и нелинейный, я не знаю, как действовать.
Ниже приведены некоторые данные о игрушечной игре.
df <- data.frame(rbind(c("ananas",2.17),c("banana",0.75),c("cookie",1.34)))
names(df) <- c("product","price")
Я хотел бы иметь оптимизационную процедуру, которая дает мне оптимальный список покупок (N, M, K).
Любые подсказки?
По существу, что вам нужно это нелинейное неравенство ограничено, дискретно оптимизатор, который я не верю, что она существует в R (пока) , Вы можете использовать «Rsolnp», который обеспечивает все, кроме дискретного, и затем проверять все комбинации округленных вверх и вниз оценочных значений. Если параметры слишком велики, вы можете пойти на компромисс, взяв округленные значения. В большинстве случаев это было бы приемлемым решением. – LyzandeR