我在R中有一个大小为100K行和6列的data.table(让我们说x_1, ... x_6
)。
我正在寻找1K大小的子集,这样可以优化(可能不是最优的,但至少比随机或排序更好)如何选择这千行并优化a*sum(x_1) + ... + f*sum(x_6)
,其中{{1是数字。
是否有使用算法/库来解决此问题的建议?
谢谢!
可重复的例子:
a,...,f
答案 0 :(得分:2)
这是一个奇怪的代价函数:0.2*max(x1) + 0.4*sum(x2) - 0.3*sum(x2) - 0.1*max(x4)
..我不认为计算Ax
(后跟排序)的建议方法对应于此。成本函数中max
和sum
的组合使得它在行中不可分离,因此我们不能仅使用排序。我唯一能想到的是一个MIP公式(一个二进制变量,指示是否选择了一行)。
该模型并非完全无足轻重:
有关详细信息,请参阅here。
对于小型数据集,它执行以下操作:
请注意,另一个答案(现已删除)中给出的LP模型不正确(即使对于所有正值)。正确地为非凸案例建模max
并非易事。