从熊猫中选择最佳球队(200名球员中的11名球员)进行优化

时间:2019-12-30 21:50:26

标签: python pandas optimization integer-programming scip

我正在尝试开发一种代码,以从200名玩家中选择出11名最佳玩家。我用到目前为止的球员价格和积分开发了一个电子表格,并使用下面的Pandas将其导入DF,

import pandas as pd
import numpy as np
df=pd.read_excel('FPL.xlsx')
print(df)
           Player  Price  Points Position  Select
0           Henderson    4.9      79       GK       1
1              Foster    4.8      79       GK       1
2                Ryan    4.8      78       GK       1
3          Schmeichel    5.4      78       GK       1
4            Ramsdale    4.7      76       GK       1
5              Guaita    5.1      76       GK       1
....
200
df['select price']=df['Price']*df['Select']
df['select points']=df['Points']*df['Select']
sumpoints=df['select points'].sum()
sumplayers=df['Select'].sum()
sumprice=df['select price'].sum()

我的想法是创建一个选择列,并将其乘以价格列和点列,然后优化问题如下:

  • 目标函数:最大化Select*points的总和
  • 约束:
    • 该团队只有11名球员
    • 购买球员的预算是85
    • 守门员(GK)的数量必须为1
    • DF的数量必须为3

这可以通过将选择列中的变量更改为0或1来完成(即,如果相应行的球员被选中参加团队,则为1,否则为0)。

如果使用excel求解器,这是非常简单的方法,但是我想学习如何在Python中做到这一点。

0 个答案:

没有答案