Skip to content

Instantly share code, notes, and snippets.

@StuartFeldt
Created October 21, 2015 15:04
Show Gist options
  • Save StuartFeldt/d9ac4a19e194a232ce01 to your computer and use it in GitHub Desktop.
Save StuartFeldt/d9ac4a19e194a232ce01 to your computer and use it in GitHub Desktop.
KSP Projections
from optparse import OptionParser
from itertools import groupby
from openopt import *
from FuncDesigner import *
maxSalary = 55000
options.stackLimit = 4
# constrain positions, salary, num players per team
constraints = lambda values: (values['salary'] <= maxSalary, values['rw'] == 2, values['lw'] == 2, values['c'] == 2, values['d'] == 2, values['g'] == 1, values["ANA"] < options.stackLimit, values["ARI"] < options.stackLimit, values["BOS"] < options.stackLimit, values["BUF"] < options.stackLimit, values["CGY"] < options.stackLimit, values["CAR"] < options.stackLimit, values["CHI"] < options.stackLimit, values["COL"] < options.stackLimit, values["CLM"] < options.stackLimit, values["DAL"] < options.stackLimit, values["DET"] < options.stackLimit, values["EDM"] < options.stackLimit, values["FLA"] < options.stackLimit, values["LA"] < options.stackLimit, values["MIN"] < options.stackLimit, values["MON"] < options.stackLimit, values["NAS"] < options.stackLimit, values["NJ"] < options.stackLimit, values["NYI"] < options.stackLimit, values["NYR"] < options.stackLimit, values["OTT"] < options.stackLimit, values["PHI"] < options.stackLimit, values["PIT"] < options.stackLimit, values["SJ"] < options.stackLimit, values["STL"] < options.stackLimit, values["TAM"] < options.stackLimit, values["TOR"] < options.stackLimit, values["VAN"] < options.stackLimit, values["WSH"] < options.stackLimit, values["WPG"] < options.stackLimit)
objective = "projPts"
# load projections
projections = getProjections()
p = KSP(objective, projections.proj, goal='max', constraints=constraints)
r = p.solve('glpk')
print(r.xf)
{
"exTeams": [],
"locks": [],
"updated": "09:55AM on October 08, 2015",
"exPlayers": [],
"proj": [
{
"projPts": 4.117924191024508,
"MIN": 0,
"NYR": 0,
"BOS": 0,
"pos": "LW",
"NAS": 0,
"NYI": 0,
"avgVal": 1.144426787377778,
"COL": 0,
"NJ": 0,
"val": 0.6641813211329851,
"CGY": 0,
"lw": 1,
"CAR": 0,
"TAM": 0,
"WPG": 0,
"PIT": 0,
"relSal": 2534.6184018608506,
"CLM": 0,
"VAN": 0,
"CHI": 0,
"name": "Jaden Schwartz",
"PHI": 0,
"d": 0,
"EDM": 0,
"SJ": 0,
"team": "STL",
"x": 2.446127588850504,
"TOR": 0,
"WSH": 0,
"DET": 0,
"FLA": 0,
"relVal": 1.624672253622571,
"rw": 0,
"stats": {
"plusMinus": 13.0,
"PPA": 8.0,
"PPG": 8.0,
"assists": 35.0,
"goals": 28.0,
"shots": 184.0,
"penaltyMin": 16.0
},
"LA": 0,
"DAL": 0,
"avgPoints": 3.37,
"BUF": 0,
"STL": 1,
"salary": 6200.0,
"c": 0,
"ANA": 0,
"g": 0,
"lines": [
"EVEN STRENGTHFW#3",
"POWER PLAYFW#1"
],
"MON": 0,
"ARI": 0,
"gamesPlayed": 75.0,
"OTT": 0
},
{
"projPts": 4.1255886642491655,
"MIN": 0,
"NYR": 0,
"BOS": 0,
"pos": "LW",
"NAS": 1,
"NYI": 0,
"avgVal": 1.1298482611668135,
"COL": 0,
"NJ": 0,
"val": 0.6548553435316136,
"CGY": 0,
"lw": 1,
"CAR": 0,
"TAM": 0,
"WPG": 0,
"PIT": 0,
"relSal": 2570.714609484813,
"CLM": 0,
"VAN": 0,
"CHI": 0,
"name": "Filip Forsberg",
"PHI": 0,
"d": 0,
"EDM": 0,
"SJ": 0,
"team": "NAS",
"x": 2.4506804359985175,
"TOR": 0,
"WSH": 0,
"DET": 0,
"FLA": 0,
"relVal": 1.6048411788020136,
"rw": 0,
"stats": {
"plusMinus": 15.0,
"PPA": 13.0,
"PPG": 6.0,
"assists": 37.0,
"goals": 26.0,
"shots": 237.0,
"penaltyMin": 24.0
},
"LA": 0,
"DAL": 0,
"avgPoints": 3.38,
"BUF": 0,
"STL": 0,
"salary": 6300.0,
"c": 0,
"ANA": 0,
"g": 0,
"lines": [
"EVEN STRENGTHFW#1",
"POWER PLAYFW#1"
],
"MON": 0,
"ARI": 0,
"gamesPlayed": 82.0,
"OTT": 0
},
{
"projPts": 3.90490359566338,
"MIN": 0,
"NYR": 0,
"BOS": 0,
"pos": "LW",
"NAS": 0,
"NYI": 0,
"avgVal": 1.0802229786405606,
"COL": 0,
"NJ": 0,
"val": 0.6508172659438967,
"CGY": 0,
"lw": 1,
"CAR": 0,
"TAM": 1,
"WPG": 0,
"PIT": 0,
"relSal": 2586.664931629266,
"CLM": 0,
"VAN": 0,
"CHI": 0,
"name": "Ondrej Palat",
"PHI": 0,
"d": 0,
"EDM": 0,
"SJ": 0,
"team": "TAM",
"x": 2.319589184757986,
"TOR": 0,
"WSH": 0,
"DET": 0,
"FLA": 0,
"relVal": 1.5096286913372245,
"rw": 0,
"stats": {
"plusMinus": 31.0,
"PPA": 8.0,
"PPG": 3.0,
"assists": 47.0,
"goals": 16.0,
"shots": 139.0,
"penaltyMin": 24.0
},
"LA": 0,
"DAL": 0,
"avgPoints": 3.2,
"BUF": 0,
"STL": 0,
"salary": 6000.0,
"c": 0,
"ANA": 0,
"g": 0,
"MON": 0,
"ARI": 0,
"gamesPlayed": 75.0,
"OTT": 0
},
{
"projPts": 4.656008471410125,
"MIN": 0,
"NYR": 0,
"BOS": 0,
"pos": "LW",
"NAS": 0,
"NYI": 0,
"avgVal": 1.0562295979858043,
"COL": 0,
"NJ": 0,
"val": 0.5609648760735091,
"CGY": 0,
"lw": 1,
"CAR": 0,
"TAM": 0,
"WPG": 0,
"PIT": 0,
"relSal": 3000.983253174866,
"CLM": 0,
"VAN": 0,
"CHI": 0,
"name": "Jamie Benn",
"PHI": 0,
"d": 0,
"EDM": 0,
"SJ": 0,
"team": "DAL",
"x": 2.765760185838785,
"TOR": 0,
"WSH": 0,
"DET": 0,
"FLA": 0,
"relVal": 1.5514943198980995,
"rw": 0,
"stats": {
"plusMinus": 1.0,
"PPA": 13.0,
"PPG": 10.0,
"assists": 52.0,
"goals": 35.0,
"shots": 253.0,
"penaltyMin": 64.0
},
"LA": 0,
"DAL": 1,
"avgPoints": 4.13,
"BUF": 0,
"STL": 0,
"salary": 8300.0,
"c": 0,
"ANA": 0,
"g": 0,
"lines": [
"EVEN STRENGTHFW#2",
"EVEN STRENGTHDEF#3",
"POWER PLAYFW#1",
"POWER PLAYFW#4"
],
"MON": 0,
"ARI": 0,
"gamesPlayed": 82.0,
"OTT": 0
},
{
"projPts": 4.568109224389387,
"MIN": 1,
"NYR": 0,
"BOS": 0,
"pos": "LW",
"NAS": 0,
"NYI": 0,
"avgVal": 1.0471534051954419,
"COL": 0,
"NJ": 0,
"val": 0.5639641017764675,
"CGY": 0,
"lw": 1,
"CAR": 0,
"TAM": 0,
"WPG": 0,
"PIT": 0,
"relSal": 2985.0236804312854,
"CLM": 0,
"VAN": 0,
"CHI": 0,
"name": "Zach Parise",
"PHI": 0,
"d": 0,
"EDM": 0,
"SJ": 0,
"team": "MIN",
"x": 2.7135463122455654,
"TOR": 0,
"WSH": 0,
"DET": 0,
"FLA": 0,
"relVal": 1.5303427086144161,
"rw": 0,
"stats": {
"plusMinus": 21.0,
"PPA": 5.0,
"PPG": 11.0,
"assists": 29.0,
"goals": 33.0,
"shots": 259.0,
"penaltyMin": 41.0
},
"LA": 0,
"DAL": 0,
"avgPoints": 4.05,
"BUF": 0,
"STL": 0,
"salary": 8100.0,
"c": 0,
"ANA": 0,
"g": 0,
"lines": [
"EVEN STRENGTHFW#1",
"POWER PLAYFW#1"
],
"MON": 0,
"ARI": 0,
"gamesPlayed": 74.0,
"OTT": 0
},
{ "etc" : "etc...."}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment