EA-FC-24-Automated-SBC-Solving
EA-FC-24-Automated-SBC-Solving copied to clipboard
UNKNOWN: Simple Input
Hey!
Thanks so much for making this. It looks awesome. Im simply trying to create a config for an 86 squad with at least 1 prem player. How can I do this. I keep getting unknown. Thanks @Regista6 !
I only have these two uncommented.
`model = create_league_constraint(df, model, player, map_idx, players_grouped, num_cnts)`
`model = create_league_constraint(df, model, player, map_idx, players_grouped, num_cnts)`
My config:
`FORMATION = "4-3-2-1"
USE_PREFERRED_POSITION = False
USE_ALTERNATE_POSITIONS = True
NUM_PLAYERS = 11
FIX_PLAYERS = 1
LEAGUE = [["Premier League"]]
NUM_LEAGUE = [1]
SQUAD_RATING = 86
# Comment out other constraints
CLUB = []
NUM_CLUB = []
COUNTRY = []
NUM_COUNTRY = []
RARITY_1 = []
NUM_RARITY_1 = []
RARITY_2 = []
NUM_RARITY_2 = []
MIN_OVERALL = []
NUM_MIN_OVERALL = []
MAX_NUM_CLUB = 0
MIN_NUM_CLUB = 0
NUM_UNIQUE_CLUB = [0, "Exactly"]
MAX_NUM_LEAGUE = 0
MIN_NUM_LEAGUE = 0
NUM_UNIQUE_LEAGUE = [0, "Exactly"]
MAX_NUM_COUNTRY = 0
MIN_NUM_COUNTRY = 0
NUM_UNIQUE_COUNTRY = [0, "Exactly"]
CHEMISTRY = 0
CHEM_PER_PLAYER = 0
'''INPUTS'''
formation_dict = {
"3-4-1-2": ["GK", "CB", "CB", "CB", "LM", "CM", "CM", "RM", "CAM", "ST", "ST"],
"3-4-2-1": ["GK", "CB", "CB", "CB", "LM", "CM", "CM", "RM", "CF", "ST", "CF"],
"3-1-4-2": ["GK", "CB", "CB", "CB", "LM", "CM", "CDM", "CM", "RM", "ST", "ST"],
"3-4-3": ["GK", "CB", "CB", "CB", "LM", "CM", "CM", "RM", "CAM", "ST", "ST"],
"3-5-2": ["GK", "CB", "CB", "CB", "CDM", "CDM", "LM", "CAM", "RM", "ST", "ST"],
"3-4-3": ["GK", "CB", "CB", "CB", "LM", "CM", "CM", "RM", "LW", "ST", "RW"],
"4-1-2-1-2": ["GK", "LB", "CB", "CB", "RB", "CDM", "LM", "CAM", "RM", "ST", "ST"],
"4-1-2-1-2[2]": ["GK", "LB", "CB", "CB", "RB", "CDM", "CM", "CAM", "CM", "ST", "ST"],
"4-1-4-1": ["GK", "LB", "CB", "CB", "RB", "CDM", "LM", "CM", "CM", "RM", "ST"],
"4-2-1-3": ["GK", "LB", "CB", "CB", "RB", "CDM", "CDM", "CAM", "LW", "ST", "RW"],
"4-2-3-1": ["GK", "LB", "CB", "CB", "RB", "CDM", "CDM", "CAM", "CAM", "CAM", "ST"],
"4-2-3-1[2]": ["GK", "LB", "CB", "CB", "RB", "CDM", "CDM", "CAM", "LM", "ST", "RM"],
"4-2-2-2": ["GK", "LB", "CB", "CB", "RB", "CDM", "CDM", "CAM", "CAM", "ST", "ST"],
"4-2-4": ["GK", "LB", "CB", "CB", "RB", "CM", "CM", "LW", "ST", "ST", "RW"],
"4-3-1-2": ["GK", "CB", "CB", "LB", "RB", "CM", "CM", "CM", "CAM", "ST", "ST"],
"4-1-3-2": ["GK", "LB", "CB", "CB", "RB", "CDM", "LM", "CM", "RM", "ST", "ST"],
"4-3-2-1": ["GK", "LB", "CB", "CB", "RB", "CM", "CM", "CM", "CF", "ST", "CF"],
"4-3-3": ["GK", "LB", "CB", "CB", "RB", "CM", "CM", "CM", "LW", "ST", "RW"],
"4-3-3[2]": ["GK", "LB", "CB", "CB", "RB", "CM", "CDM", "CM", "LW", "ST", "RW"],
"4-3-3[3]": ["GK", "LB", "CB", "CB", "RB", "CDM", "CDM", "CM", "LW", "ST", "RW"],
"4-3-3[4]": ["GK", "LB", "CB", "CB", "RB", "CM", "CM", "CAM", "LW", "ST", "RW"],
"4-3-3[5]": ["GK", "LB", "CB", "CB", "RB", "CDM", "CM", "CM", "LW", "CF", "RW"],
"4-4-1-1": ["GK", "LB", "CB", "CB", "RB", "CM", "CM", "LM", "CF", "RM", "ST"],
"4-4-1-1[2]": ["GK", "LB", "CB", "CB", "RB", "CM", "CM", "LM", "CAM", "RM", "ST"],
"4-4-2": ["GK", "LB", "CB", "CB", "RB", "LM", "CM", "CM", "RM", "ST", "ST"],
"4-4-2[2]": ["GK", "LB", "CB", "CB", "RB", "LM", "CDM", "CDM", "RM", "ST", "ST"],
"4-5-1": ["GK", "CB", "CB", "LB", "RB", "CM", "LM", "CAM", "CAM", "RM", "ST"],
"4-5-1[2]": ["GK", "CB", "CB", "LB", "RB", "CM", "LM", "CM", "CM", "RM", "ST"],
"5-2-1-2":["GK", "LWB", "CB", "CB", "CB", "RWB", "CM", "CM", "CAM", "ST", "ST"],
"5-2-2-1": ["GK", "LWB", "CB", "CB", "CB", "RWB", "CM", "CM", "LW", "ST", "RW"],
"5-3-2": ["GK", "LWB", "CB", "CB", "CB", "RWB", "CM", "CDM", "CM", "ST", "ST"],
"5-4-1": ["GK", "LWB", "CB", "CB", "CB", "RWB", "CM", "CM", "LM", "RM", "ST"]
}
status_dict = {
0: "UNKNOWN: The status of the model is still unknown. A search limit has been reached before any of the statuses below could be determined.",
1: "MODEL_INVALID: The given CpModelProto didn't pass the validation step.",
2: "FEASIBLE: A feasible solution has been found. But the search was stopped before we could prove optimality.",
3: "INFEASIBLE: The problem has been proven infeasible.",
4: "OPTIMAL: An optimal feasible solution has been found."
}
def calc_squad_rating(rating):
'''https://www.reddit.com/r/EASportsFC/comments/5osq7k/new_overall_rating_figured_out'''
rat_sum = sum(rating)
avg_rat = rat_sum / NUM_PLAYERS
excess = sum(max(rat - avg_rat, 0) for rat in rating)
return round(rat_sum + excess) // NUM_PLAYERS
LOG_RUNTIME = True
`