from pulp import *

# Definizione del problema
prob = LpProblem("Cuba_libre", LpMinimize)

# Creazione delle variabili
#xR = LpVariable("xR", 0.0, None, LpContinuous)
#xC = LpVariable("xC", 0.0, None, LpContinuous)
#xL = LpVariable("xL", 0.0, None, LpContinuous)
xR = LpVariable("xR", 0.0, 20, LpContinuous)
xC = LpVariable("xC", 0.0, 15, LpContinuous)
xL = LpVariable("xL", 0.0, 3, LpContinuous)


# Funzione obiettivo
prob+= 15*xR + 2*xC + 1.5*xL

# Vincoli
prob+= xR >= 0.25*(xR + xC + xL), "almeno il 25% di rum"
prob+= xC >= .5*(xR + xC + xL), "almeno il 50% di cola"
prob+= xL <= .1*(xR + xC + xL), "al più il 10% di limone"
prob+= xR + xC + xL >= 10, "almeno 10 l di cuba libre"
#prob+= xR <= 2, "disponibilità di rum"
#prob+= xR <= 20, "disponibilità di rum"
#prob+= xC <= 15, "disponibilità di cola"
#prob+= xL <= 3, "disponibilità di limone"

# Scrittura su un file lp
prob.writeLP("cuba_libre.lp")

# Risoluzione
prob.solve()

# Stato del solver
print("Stato:", LpStatus[prob.status])

# Stampa delle variabili
if LpStatus[prob.status] == "Optimal":
    for v in prob.variables():
        print(v.name, "=", v.varValue)
    print("Costo ottimale =", value(prob.objective))
