Python:用遗传算法解决背包优化?

Python:用遗传算法解决背包优化?,python,genetic-algorithm,knapsack-problem,Python,Genetic Algorithm,Knapsack Problem,目前我正试图用最好的方式来完成我正在做的事情。我有以下几点建议 Player Pos Salary My Proj 0 James Harden PG/SG 10600 51.94472302 1 Jose Juan Barea PG/SG 4200 22.20823452 2 Stephen Curry PG/SG 8700 42.95809374 3 Eric Gordon SG 5400 27.452

目前我正试图用最好的方式来完成我正在做的事情。我有以下几点建议

    Player  Pos Salary  My Proj
0   James Harden    PG/SG   10600   51.94472302
1   Jose Juan Barea PG/SG   4200    22.20823452
2   Stephen Curry   PG/SG   8700    42.95809374
3   Eric Gordon     SG      5400    27.45218158
4   Nikola Vucevic  C       7400    37.00103015
5   Wilson Chandler SF/PF   4900    24.83866589
每天大约有200名球员参加比赛。我需要运行优化以填充多达20个符合以下约束条件的绘图列表:

5万美元以下 使用1pg、1sg、1sf、1pf、1c、1g、1f和1util

正如您所看到的,大多数球员可以在一个阵容中填充多个位置,该阵容由位置列中的“/”字符表示。G位置可以用PG或SG填充,F位置可以用SF或PF填充,UTL位置接受所有位置

起初,我研究了使用背包暴力的方法,这似乎是最简单的方法,但实际上有数以万亿计的组合,因此如果没有真正做我真正想要的事情,这将花费大量的时间

相反,我决定尝试使用遗传学的方法,因为我已经看了很多关于这个问题的讲座视频,并且认为这是解决这个问题的一个好主意。然而,我不知道如何在一般的1/0背包方法中设置这个问题,因为我需要包括很多东西。在一个典型的背包方法中,你只有一个重量和一个值。我的体重和价值观是球员的工资和他们的预期分数。然而,我必须在这里也包括球员的位置,一个球员可能有1个或2个不同的可能性


希望这是有意义的,我基本上是在寻找一些关于如何开始在Python3中处理这项任务的见解。提前感谢您所提供的一切

这是一个良好的开端:

充分理解遗传算法的基础知识,很好的例子

遗传算法的美妙之处在于,一旦你定义了如何评估适应度,其他一切都会自行到位。您可以从完全随机的项目开始,经过连续几代,它将变得有序。如果你采取正确的方法,那么阵容和背包问题是非常非常相似的。您已经知道可以容纳多少项(领先);你现在只需要选择哪一个,这就是GA的作用

想想这些步骤:

  • 创建您的总体(随机列表)
  • 检查人口是否适合,职位是否已填补,工资是否低于最高工资等
  • 在对阵容进行分级的同时进化种群
  • 继续新一代,直到你满意为止