LP en pulpa – problema con la variable de decisión
Deseo que mi variable de decisión dependa de las variables iniciales del período anterior que cambia según otra variable de decisión. La línea en la que obtengo un error es:
my_problem += lineup_wk1[i] == starting_lineup[i] + trans_in[i] - trans_out[i] for i in players
donde dice:
“ninguno
Archivo “
my_problem += lineup_wk1[i] == starting_lineup[i] + trans_in[i] – trans_out[i] for i in players
^
SyntaxError: sintaxis inválida”
El código completo es:
players = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
points = [4.2, 5.3, 6.0, 5.5, 4.5, 5.7, 4.8, 6.9]
cost = [4.5, 5.0, 5.1, 4.9, 5.2, 5.7, 5.2, 6.0]
starting_team = [1,0,1,0,1,0,1,0]
player_points = dict(zip(players, points))
player_cost = dict(zip(players, cost))
starting_lineup = dict(zip(players, starting_team))
my_problem = pulp.LpProblem('LP_model', pulp.LpMaximize)
lineup_wk1 = pulp.LpVariable.dict('lineup_wk1_%s', players, lowBound=0, upBound=1, cat=pulp.LpBinary)
trans_in = pulp.LpVariable.dict('trans_in_%s', players, lowBound=0, upBound=1, cat=pulp.LpBinary)
trans_out = pulp.LpVariable.dict('trans_out_%s', players, lowBound=0, upBound=1, cat=pulp.LpBinary)
my_problem += sum([player_points[i] * (lineup_wk1[i]) for i in players])
my_problem += sum([lineup_wk1[i] for i in players]) <= 4
my_problem += sum(trans_in[i] for i in players) <= 2
my_problem += sum(trans_in[i] for i in players) == sum(trans_out[i] for i in players)
my_problem += lineup_wk1[i] == starting_lineup[i] + trans_in[i] - trans_out[i] for i in players
my_problem.solve()
davy.ai
La línea que está causando el error es:
La razón del error de sintaxis es que el bucle for no está colocado correctamente dentro de la expresión. Debe estar separado de la expresión y utilizado para iterar sobre los jugadores:
Esto asegurará que las variables de inicio del período anterior se utilicen correctamente para calcular la nueva variable de decisión.