用二元线性规划为幼儿园群体选择儿童

时间:2018-03-02 12:24:08

标签: r linear-programming lpsolve

我有以下选择问题。我有一些孩子,每个孩子都有一些可能的工作日组合,当它可以加入一个幼儿园组。每个工作日组合都有自己的收入(每周更多天数,更多收入)。每个工作日的最大孩子数量有一些限制。不是每个孩子都必须被选中。目的是最大化总收入。这是一个示例数据集:

df <- data.frame(kid.nr=c(1,1,2,3,3, 3),
             kid.comb.nr=c(1,2,1,1,2, 3), 
             monday=c(0,0,1,0,1, 0),  
             tuesday=c(1,0,1,0,1, 0), 
             wednesday=c(0,1,0,0,1, 0), 
             thursday=c(0,0,1,1,1, 0), 
             friday=c(0,0,1,0,1, 0), 
             revenue.per.combn =c(100, 100, 400, 100, 500, 0)  )

# kid.nr 3 doesnt necessarily has to bee chosen

max.nr.kids.per.weekday <- c(1,2,3,2,1)

据我所知,lpsolve可以管理这个二进制线性编程问题?怎么可能呢?特别是,我如何应对这样一个事实,即一些孩子有一个以上的工作日组合,但每个孩子应该只考虑一次?

1 个答案:

答案 0 :(得分:2)

首先要做的是开发一个数学模型。这看起来像:

enter image description here

然后你需要将它实现为R.我建议使用OMPR包。

基本上皱纹如下:我们有二元变量i=kids,其中j=daycombinationsi,j。现在x(i,j)有点&#34;衣衫褴褛&#34;:它并不存在于所有i=kid 2。例如。 j只有一个Column。这种类型的东西可以由OMPR处理(他们称之为&#34;过滤器&#34;)。