选择一组球员的算法,使得最接近的排名达到极限

时间:2016-12-28 15:50:38

标签: c# algorithm

假设我有一个包含30名玩家的数据库。数据库保存每个玩家在3个元素中排名的值(击球,保龄球和守备 - 排名为1-10,其中10为最高)和玩家的比赛次数。为了计算球队排名,我在考虑将球员的等级平均超过3个元素并将其添加到球队得分中。

有两种类型的比赛 - 友谊和联赛。 挑选团队时需要考虑的事项:

  1. 球队必须保持平衡(例如,防守等级不得超过打击和打保龄球。)
  2. 所有玩家在一个赛季结束时必须拥有大约相同数量的游戏(一个赛季大约有15场比赛,当用户批准球队时,球员会加入比赛)
  3. 如果用户将匹配设置为友好,则该算法会忽略玩家的排名并选择最少玩的玩家。

    我需要制作一个算法,为匹配(10名玩家)提供最佳团队,其排名尽可能接近极限(1到100之间的任何数字)(限制由用户设置)。

    以下是我查看的内容

    我查看了0-1 背包问题,但我不知道如何修改它以便团队在某种程度上保持平衡。我也看过线性编程,但我认为我不能在这里使用它(如果我错了就纠正我)

1 个答案:

答案 0 :(得分:0)

这是constraint satisfaction problem

您可以通过使用像AMPL这样的代数建模语言逐个解决此类问题,或者您可以使用constraint programming库编写更灵活的解决方案。