求解线性规划营销问题的R
我有这个问题,我知道答案,但我需要能够通过R解决它 有5个活动称为A、B、C、D、E。每个活动都有一个最大可能的预算,每个活动花费的每一美元都有一个投资回报率 看起来像这样求解线性规划营销问题的R,r,linear-programming,lpsolve,R,Linear Programming,Lpsolve,我有这个问题,我知道答案,但我需要能够通过R解决它 有5个活动称为A、B、C、D、E。每个活动都有一个最大可能的预算,每个活动花费的每一美元都有一个投资回报率 看起来像这样 Campaign Max Budget ROI A 156.09 0.77 B 73.92 1.46 C 65.8 2.14 D 43.68 0.77 E 41
Campaign Max Budget ROI
A 156.09 0.77
B 73.92 1.46
C 65.8 2.14
D 43.68 0.77
E 41.01 1.81
有两个限制,你只能在所有活动中总共花费100英镑,并且你在每次露营上的花费不能超过你的最高预算,你正在努力使你的利润最大化,这就是你的投资回报率乘以你在活动中花费的预算
我知道答案是在活动C上花费65.8美元,因为它的投资回报率较高,然后在活动E上花费34.2美元,因为你的投资回报率第二高,因此你将达到最大花费100美元的限制
如果有人能帮我用lpSolveAPI或lpsolve设置,请提前感谢
这就是我迄今为止所尝试的
library("lpSolveAPI")
model<-make.lp(ncol=5)
m1<-lp.control(model, sense="max", verbose="neutral")
m2<-set.objfn(model, obj=c(120.1893,107.9232,140.812,33.6336,74.2462))
m3<-set.bounds(model, upper =c(156.09,73.92,65.8,43.68,41.02))
m4<-add.constraint(model, c(1,1,1,1,1), "<=",100)
solve(model)
get.variables(model)
34.2 0.0 65.8 0.0 0.0
库(“lpSolveAPI”)
模型我认为在这里使用一个完整的方程求解模型是过分的,因为在战役之间没有任何平衡
如果我理解正确的话,你想在投资回报率最高的活动上花费尽可能多的钱,剩下的钱在第二高,剩下的钱在……等等,直到所有的钱都花光
我的方法是根据投资回报率进行排序,并计算一个累计总和,以了解您的收益。如果数据位于名为df
的data.frame
中:
df <- df[order(df$ROI, decreasing=TRUE), ]
df$spend <- pmin(df$MaxBudget,
pmax(TotalMoney-cumsum(c(0, df$MaxBudget[-nrow(df)]),
0)
df使用以下注释中的dat
尝试此操作:
library(lpSolveAPI)
n <- nrow(dat)
model <- make.lp(0, n)
control <- lp.control(model, sense = "max")
set.objfn(model, dat$ROI)
set.bounds(model, upper = dat$Max_Budget)
add.constraint(model, rep(1, n), "<=", 100)
solve(model)
## [1] 0
get.variables(model)
## [1] 0.0 0.0 65.8 0.0 34.2
库(lpSolveAPI)
到目前为止,您尝试了什么?为什么选择使用线性规划?正如您在问题中所指出的那样,最好按投资回报率排序,并在预算完全用完之前将其列在列表中。
Lines <- "
Campaign Max_Budget ROI
A 156.09 0.77
B 73.92 1.46
C 65.8 2.14
D 43.68 0.77
E 41.01 1.81"
dat <- read.table(text = Lines, header = TRUE)