将个人分组为家庭

时间:2010-09-08 13:54:28

标签: algorithm

我们有一个模拟计划,我们会吸引大量的个人并将他们分组到家庭中。然后每个家庭都进行模拟。

我负责将个人分组到家庭中,我认为这是一个非常酷的问题。

现在,我的技术很幼稚/简单。每个单独的记录都有一些特征,包括已婚/单身,年龄,性别和收入水平。对于已婚人士,我选择一个人并在人口中循环并根据匹配函数寻找匹配。对于有孩子的人/夫妇,我基本上做同样的事情,寻找随机数量的孩子(根据经验分布选择)然后循环遍历所有孩子并挑选出来并根据匹配将他们添加到家庭功能。在此之后,并非每个人都匹配,所以我放松了我的匹配功能中的限制并再次循环。我一直这样做,但是在我的比赛功能变得过于荒谬之前就停止了(例如,将85岁的年轻人与20岁的年轻人结婚)。任何剩下的人都是一个人写的。

这对我们当前的目的来说效果很好,我可能永远不会有时间或许可来重做它,但我至少想要为这个场合做好计划或者学习一些很酷的东西 - 即使我从来没有使用它。此外,我担心算法对于较小的样本量不会很好。有没有人知道我可以研究哪种类型的算法可能与这个问题有关,或者我怎么可能将它正式化呢?

作为参考,我对CLRS的第1-26章感到满意,但我还没有真正触及NP完全性或近似算法。并不是说你不应该提出这些主题,但如果你这样做,可能会对我很轻松,因为我可能不会立即理解你所谈论的一切。 :)我对进化算法也一无所知。

编辑:我特别希望改进以下内容:

  1. 不那么荒谬的婚姻。
  2. 最后单身人士减少。

2 个答案:

答案 0 :(得分:3)

您所寻找的可能是cluster analysis

答案 1 :(得分:3)

让我们试着像这样想一想你的问题(从解决配偶匹配开始):
如果你有一个矩阵,其中每一行是一个男性,每列都是一个女性,并且该矩阵中的每个单元格都是匹配函数的返回值,那么你现在要寻找的是选择单元格,这样就不会有选择多个单元格的行或列,并且所有选定单元格的总和应该是最大的。这与N Queens Problem非常相似,修改后每个“女王”的分配都有奖励(我们应该最大化)。
您可以使用图表解决此问题,其中:
你有一个根,
每个第一个原始单元格的值是边缘的权重,导致第一个深度顶点
每个第二个原始单元格的值是边缘的权重,导致第二个深度顶点 等
(请注意,当你找到第一位女性的比赛时,你不应该再考虑她了,所以对于其他每一位女性你都会认为是匹配的) 然后找到最大分配可以通过BFS完成,或者更好地通过A*完成(通知A *通常会查找最低费用,因此您必须修改它位)。

对于夫妻(或单身人士,以后更多......)和孩子之间的匹配,我认为KNN经过一些修改是最好的选择,但您需要根据自己的需要对其进行优化。但现在我必须与你的编辑有关..
你如何衡量算法的效率?
您需要一个函数来接收所有状态的预期分布(单个,已婚,有一个孩子,一个有两个孩子等),以及解决方案中所有状态的分布,并对解决方案进行评分因此。你如何计算预期分布?这是相当多的统计工作..
首先,您需要了解人口中所有州(单身,已婚......如上所述)的分布情况,
那么你需要知道人口中年龄和性别的分布,
最后你需要知道的事情 - 你的人口中年龄和性别的分布。 只有这样,根据这三个人,你能计算出你希望在每个州有多少人。然后你可以衡量你所期望的和你得到的之间的距离...这是很多打字..对不起对于一般部分......