我正在使用lp函数解决预算优化问题。我有许多媒体渠道,正在尝试估算最佳预算分配以最大化销售量。
每个渠道的销售额都估算为a *(1-exp(-x / b))的函数,其中x是支出
优化问题的结构为: 最大化总销售额(f_obj) 这是支出(x)的函数,满足min_spend和max_spend约束 支出总和(x)= 15000000(rhs)
以下代码返回错误消息: lp(direction =“ max”,objective.in,const,direction,rhs)中的错误: (列表)对象不能强制输入“ double”
我缺少明显的东西吗?
#data
inputs
Channel min_spend max_spend a b
1 Channel_1 5155000 20000000 2986681.6 5107174.8
2 Channel_2 3000000 6000000 9033045.4 9189208.4
3 Channel_3 0 0 3230153.6 4320097.7
4 Channel_4 900000 2500000 333368.5 854253.8
>
#define sales function
f_obj<-function(x){
for (i in 1:nrow(inputs))
sales[i]<-inputs$a[i]*(1-exp(-x[i]/inputs$b[i]))
return(sum(sales))}
#define min and max constraints for x
const<-as.matrix(t(inputs[,2:3]))
direction<-c(">=","<=")
#define total budget
budget<-15000000
rhs<-budget
optimum<-lp(direction="max",objective.in,const,direction,rhs)