基于R中的多个响应来最优地定义组的算法

时间:2017-05-23 20:11:22

标签: r algorithm constraints matching

我有一个调度难题,我正在寻找使用R的建议/解决方案。

上下文
我正在协调一系列实时在线小组讨论,其中注册参与者将根据其可用性进行分组。在一项调查中,28名参与者(id)表示周一至周六(18种可能性)的早晨,下午或晚上(上午,下午,下午)可用性。我需要生成4-6个参与者的组,这些参与者可以同时使用,无需替换(这意味着他们只能被分配到一个组)。一旦分配,小组将每周同时开会(即A组成员将始终在周一早上见面)。

问题
目前正在手动(由人工)实现组分配,但是更多参与者优化组分配将变得越来越具有挑战性。我有兴趣找到一种有效实现相对平等的群体位置的算法,并且尊重其他因素,例如人的时区。

示例数据
示例数据采用长格式,位于R脚本here

>str(x)
'data.frame':   504 obs. of  4 variables:
$ id      : Factor w/ 28 levels "1","10","11",..: 1 12 22 23 24 25 26 27 28 2 ...
$ timezone: Factor w/ 4 levels "Central","Eastern",..: 2 1 3 4 2 1 3 4 2 1 ...
$ day.time: Factor w/ 18 levels "Fri.after","Fri.am",..: 5 5 5 5 5 5 5 5 5 5 ...
$ avail   : num  0 0 1 0 1 1 0 1 0 0 ...

前12行数据如下所示:

> head(x, 12)
   id timezone  day.time avail
1   1  Eastern    Mon.am     0
2   2  Central    Mon.am     0
3   3 Mountain    Mon.am     1
4   4  Pacific    Mon.am     0
5   5  Eastern    Mon.am     1
6   6  Central    Mon.am     1
7   7 Mountain    Mon.am     0
8   8  Pacific    Mon.am     1
9   9  Eastern    Mon.am     0
10 10  Central    Mon.am     0
11 11 Mountain    Mon.am     0
12 12  Pacific    Mon.am     1

理想解决方案
一种算法,用于最佳地定义在day.timeavail上完全匹配的组(大小= 4到6),同时最小化其他更灵活的因素(在这种情况下为timezone)的差异。在最终结果中,参与者应该只存在于一个组中。

1 个答案:

答案 0 :(得分:0)

好的,所以我对此并不是最了解,但是你看过K-Means聚类算法了吗?您可以指定所需的群集数量以及要考虑的算法变量。然后,它会将数据聚集到指定数量的聚类中,也就是您的类别。

您怎么看?

参考文献:

https://datascienceplus.com/k-means-clustering-in-r/

http://www.sthda.com/english/wiki/cluster-analysis-in-r-unsupervised-machine-learning