Hola, estoy intentando resolver un problema típico de "Blending Problem" con Pulp y no consigo poner bien las variables (concretamente el diccionario de variables)
Este es el diccionario que quiero crear: num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0, cat='Integer') pero me gustaría poner un límite superior para cada variable que tengo en un diccionario llamado poblacion. He intentado poner la restricción dentro de la definición del diccionario de variables así: num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0, upBound=poblacion[soldados], cat='Integer') y también he intentado ponerlo al agregar el resto de restricciones del problema: prob += (num_soldados[i] < poblacion[i] for i in soldados y en ambos me da error. ¿cómo puedo poner un límite superior a las variables? A continuación pongo el código completo que no me da error por si sirve de ayuda: from pulp import * # Declarar variables soldados = ['Feng', 'Liu', 'Zhao', 'Jian'] presupuesto = 10000 #Diccionario con los costes de cada tipo de soldado coste = {'Feng':13, 'Liu':21, 'Zhao':17, 'Jian':100} #Diccionario con la fuerza de cada tipo de soldado fuerza = {'Feng':6, 'Liu':10, 'Zhao':8, 'Jian':40} #Diccionario con la población máxima de cada tipo de soldado poblacion = {'Feng':1000, 'Liu':400, 'Zhao':500, 'Jian':150} #Crear la variable 'prob' que contiene los datos del problema prob = LpProblem ("A Blending Problem", LpMaximize) #Crear un diccionario llamado "num_soldados" donde se definen las variables num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0, cat='Integer') #Función objetivo prob += lpSum(fuerza[i]*num_soldados[i] for i in soldados), "Fuerza total del ejército" #Agregar las restricciones al 'prob' prob += lpSum(coste[i]*num_soldados[i] for i in soldados) <= presupuesto #Resolver el problema status = prob.solve() LpStatus[status] # imprimir resultados for v in prob.variables(): print(v.name, "=", v.varValue) print("La fuerza total del ejército es: ", value(prob.objective))
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es