Допустим, я пытаюсь максимизировать продажи и у меня есть две переменные, сумма, потраченная на два типа рекламы, ads
и ads2
в долларах, которые влияют на sales
.
ПослеПри расчете линейной модели влияния продаж я извлекаю коэффициенты, чтобы получить формулу для прогнозируемых продаж.Затем я пытаюсь максимизировать прогнозируемые продажи, оптимизируя количество объявлений.
Проблема в том, что должен быть бюджет для типов рекламы.Без этого ограничения весь рекламный бюджет был бы потрачен на ads
, а не на ads2
.
. Это приводит к тому, что объем продаж составляет около 140 долларов, но небольшая часть продаж может быть принесена в жертву, чтобы выполнить это ограничение..
Я не знаю, как это реализовать.Я попытался настроить ограничения в константной матрице, но оптимизация попыталась заставить всю рекламу использовать только один из типов объявлений.
library(tibble)
library(dplyr)
library(lpSolve)
data <- tribble(~"ads", ~"ads2", ~"sales",
100, 120, 100,
50, 90, 40,
20, 10, 10,
150, 110, 130,
190, 90, 160,
180, 300, 250,
110, 200, 100,
80, 70, 20,
50, 20, 10,
30, 100, 200,
100, 190, 40,
100, 200, 100,
40, 90, 80,
60, 80, 60,
200, 20, 100,
20, 200, 80,
30, 10, 30,
40, 90, 100,
80, 20, 80,
200, 150, 100,
80, 80, 40,
100, 10, 300,
150, 100, 60,
10, 100, 10
)
forecast <- lm(sales ~ ads + ads2, data = data)
coef <- forecast$coefficients
obj <- coef[2:3] # coefficients
const <- matrix(c(1, 1, # ads
1, 1), # ads2
nrow = 2)
min_items <- 250 # minimum total budget
max_items <- 300 # maximum total budget
rhs <- c(min_items, max_items)
direction <- c(">", "<")
optimum <- lp(direction = "max", obj, const, direction, rhs)
optimum$solution # budget spent on ads and ads2
optimum$objval + coef[1] # forecasted sales by using this budget
optimum$solution
не должен быть равен 0 ни для одного из типов объявлений, этодолжен вернуть, например, 50 100 вместо 300 0 или 0 300.