给定某些约束条件R,选择大小为k的最佳子集

时间:2018-01-04 15:13:38

标签: r algorithm optimization linear-programming

我在R中有一个大小为100K行和6列的data.table(让我们说x_1, ... x_6)。

我正在寻找1K大小的子集,这样可以优化(可能不是最优的,但至少比随机或排序更好)如何选择这千行并优化a*sum(x_1) + ... + f*sum(x_6),其中{{1是数字。

是否有使用算法/库来解决此问题的建议?

谢谢!

可重复的例子:

a,...,f

1 个答案:

答案 0 :(得分:2)

这是一个奇怪的代价函数:0.2*max(x1) + 0.4*sum(x2) - 0.3*sum(x2) - 0.1*max(x4) ..我不认为计算Ax(后跟排序)的建议方法对应于此。成本函数中maxsum的组合使得它在行中不可分离,因此我们不能仅使用排序。我唯一能想到的是一个MIP公式(一个二进制变量,指示是否选择了一行)。

该模型并非完全无足轻重:

enter image description here

有关详细信息,请参阅here

对于小型数据集,它执行以下操作:

enter image description here

请注意,另一个答案(现已删除)中给出的LP模型不正确(即使对于所有正值)。正确地为非凸案例建模max并非易事。