Python 选择最佳团队(200名玩家中的11名玩家)与熊猫进行优化
我正在尝试开发一个代码,从200名玩家中选出最好的11名玩家。我已经开发了一个包含球员价格和积分的电子表格,并使用熊猫将其导入DF,如下所示:Python 选择最佳团队(200名玩家中的11名玩家)与熊猫进行优化,python,pandas,optimization,integer-programming,scip,Python,Pandas,Optimization,Integer Programming,Scip,我正在尝试开发一个代码,从200名玩家中选出最好的11名玩家。我已经开发了一个包含球员价格和积分的电子表格,并使用熊猫将其导入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
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列,并将其乘以price列和points列,然后优化问题将如下所示:
- 目标函数:最大化
Select*点的总和
- 限制条件:
- 这个队只有11名队员
- 购买球员的预算是85英镑
- 守门员人数(GK)必须为1人
- DF的数量必须为3
如果使用excel解算器,这是非常简单的,但我想学习如何在Python中执行此操作。我不理解约束,请您编辑以更清楚地解释约束是什么。请将约束的格式更改为更可读的格式。当然,我的限制是:我总共只能有11名球员,其中只有1名是守门员,5名是中场,2名是进攻队员,3名是防守队员(有一个名为“位置”的专栏,上面写着如果球员是守门员,防守队员等等。另外,购买球员的预算是85美元(每个玩家都有一个价格标签栏)嗨@Omarebagalati,是否必须使用scip?(我问这个问题是因为我在标签中看到了scip)。否则,我可以想办法使用Python或工具来解决此问题。不,这不是强制性的。我想学习如何使用Python解决。我不理解约束,请您编辑以更清楚地解释约束是什么。请将约束的格式改为更可读的格式。当然,我的约束是:我总共只能有11名球员,其中只有1名是吉凯恩(守门员),5名是中场,2名是进攻队员,3名是防守队员(有一个名为“位置”的专栏,上面写着如果球员是吉凯恩、防守队员等等。此外,购买球员的预算是85美元(有一个专栏,每个球员都有价格标签)嗨@Omarebagalati,使用scip是强制性的吗?(我这么问是因为我在标签中看到了scip)。否则,我可以想办法使用Python或工具来解决这个问题。不,这不是强制性的。我想学习如何使用Python解算