【发布时间】:2017-11-27 18:39:52
【问题描述】:
我有一个优化问题要解决。这是上下文:我有潜在的“屏幕”可以购买来播放广告。每个屏幕都有一个名为“grp”的值。问题是,我有不同的电影,我想做的是尽量减少每部电影的总 grp 差异。
我有一个限制:所有银幕都必须归属于一部电影。
这是可用屏幕列表的示例:
date channel screen_id format grp
<dttm> <chr> <chr> <chr> <dbl>
1 2017-10-08 channel A 2142 * 45s 9.95
2 2017-10-08 channel A 2391 T 30s 1.43
3 2017-10-09 channel A 2320 S 20s 2.60
4 2017-10-09 channel A 2410 S 20s 1.03
5 2017-10-09 channel A 2430 S 20s 0.78
6 2017-10-10 channel A 1903 S 20s 2.70
我有三部不同的电影,我们称它们为c("film_A", "film_B", "film_C"),我想确保将每部电影的总 grp 差异降至最低。
预期输出(此处归因是随机的,因此未优化):
date channel screen_id format grp film
<dttm> <chr> <chr> <chr> <dbl> <chr>
1 2017-10-08 channel A 2142 * 45s 9.95 film_a
2 2017-10-08 channel A 2391 T 30s 1.43 film_b
3 2017-10-09 channel A 2320 S 20s 2.60 film_c
4 2017-10-09 channel A 2410 S 20s 1.03 film_a
5 2017-10-09 channel A 2430 S 20s 0.78 film_b
6 2017-10-10 channel A 1903 S 20s 2.70 film_c
在这种情况下,每部电影的总 grp 差异很大:
film grp_per_film
<chr> <dbl>
1 film_a 16.45
2 film_b 3.78
3 film_c 6.50
我试图最小化的是电影总 grp 的方差,而不是每部电影作为一个组的屏幕 grp 的方差。
我有点卡在这个上。我查看了 PortfoliAnalytics 包,但我无法将投资组合逻辑应用于此问题。
【问题讨论】:
-
您的示例输入的期望结果是什么?
-
嘿,谢谢,我已经更新了问题。
-
所需结果不符合您的条件。 film_a 在 grp 9.95 和 1.03 中。两者之间的差异并未最小化。
-
示例中的输出是随机的,我试图最小化的是每部电影的 grp 总和之间的差异。所以在这种情况下,电影 a 为 16.45 grp,电影 b 为 3.78,电影 c 为 6.5。电影之间的差异确实很大,这就是我试图最小化的。
-
在编写代码之前,我建议先开发一个数学模型。考虑目标(最小化方差)、约束(预算约束、目标 grp)和决策变量(买什么)。只是最小化方差将产生不购买任何东西的最佳解决方案。
标签: r mathematical-optimization