我一直在研究k近邻算法,因为我可能正在开发一个在不久的将来匹配战士(拳击手)的应用程序。
我的问题的原因是,根据规则集,找出基于多个参数和约束匹配战斗机时使用的最佳方法/算法。
每架战斗机的相关属性如下:
现在有一些规则集可用于匹配战士时可以允许的内容:
现在显然是完美匹配,所有与会者都会与另一个符合规则集的拳击手相匹配。 而主要的优先事项是尽可能多地匹配战士。
K-nn是走的路还是有更好的方法? 如果是这样的话?
答案 0 :(得分:1)
评论太长了。
为了获得K-nn的最佳结果,我建议使用主要成分。这些允许您使用更多维度,并且可以很好地将数据传播到整个空间,以获得良好的社区。 p>
至于合并现有规则,您有两种选择。也许,最好的方法是将它构建到你的距离函数中。或者,您可以将一个大的邻域并将其构建到组合函数中。
答案 1 :(得分:0)
我会选择k-Nearest Neighbor搜索。由于您的数据集位于低维空间(即3),因此我将使用CGAL来执行任务。
现在,您唯一需要做的就是创建一个这样的距离函数:
float boxers_dist(Boxer a, Boxer b) {
if(abs(a.year - b.year) > 2 || abs(a.weight - b.weight) > e)
return inf;
// think how you should use the 3 dimensions you have, to compute distance
}
你完成了......现在去战斗吧!