from pulp import *

# Dichiarazione del problema
prob = LpProblem("esercitazione_finale", LpMinimize)

# Creazione delle variabili con un lower bound pari a 0
x1 = LpVariable("x1", 0, None, LpContinuous)
x2 = LpVariable("x2", 0, None, LpContinuous)
x3 = LpVariable("x3", 0, None, LpContinuous)

# Funzione obiettivo
prob+= 5*x1 + x2 - 0.5*x3

# Vincoli
prob+= x1 + 5*x2 - 2*x3 == 15
prob+= x1 - x2 + x3 == 3


# Scrittura su un file lp
prob.writeLP("esercitazione_finale.lp")

# Risoluzione
prob.solve()

# Stato del solver
# The status of the solution is printed to the screen
print("Stato:", LpStatus[prob.status])

if LpStatus[prob.status] == "Optimal":
    for v in prob.variables():
        print(v.name, " = ", v.varValue)
    print("Costo ottimale = ", value(prob.objective))
