R优化错误:(list)对象无法强制输入“ double”类型

时间:2019-09-02 21:53:46

标签: r

我正在使用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)

0 个答案:

没有答案