【发布时间】:2023-01-14 02:18:56
【问题描述】:
我创建了一条曲线,显示每个支出水平 (X) 的独特收入产出 (Y)。
曲线由以下(单调)函数定义:
calculate_abc_revenue <- function(a, b, c, spend) {
res <- ifelse(
a/(1+b*(spend)^c) >= 0,
a/(1+b*(spend)^c),
0
)
return(res)
}
其中 a、b 和 c 是给定参数,应被视为常量:
a0 <- 1303066.36937866
b0 <- 15560519.9999999
c0 <- -1.09001859302511
现在,如果我们将 ROI 定义为:
revenue <- calculate_abc_revenue(a = a0, b = b0, c = c0, spend)
ROI <- revenue/spend
如何找到使 ROI 最大的 revenue 和 spend 的确切值?
我目前使用长度为 n 的花费向量来帮助我找到大约最大投资回报率,但大多数时候结果并非 100% 准确真正的最大投资回报率可以落在作为输入发送的两点之间。
我想避免增加花费向量的长度,因为它会增加计算时间(并且它不能保证找到的解决方案无论如何都是全局最大值)。
【问题讨论】:
-
使用
optim..... -
感谢@Roland 的评论,你介意帮我设置解决方案吗?
-
你的函数不是单调递增的吗?
-
感谢您的评论,@MarBlo。不一定(它可能发生,但它也可以变平)但这并不重要。重要的是,即使它一直在增加,我们想要最大化的是 y 除以 x 的值。
-
另外,我认为数值优化器不能严格保证全球的max 但这是一个数学问题而不是编程问题。