#!/usr/bin/env python3

import gurobipy
from gurobipy import GRB

m = gurobipy.Model()

# variable_type = GRB.BINARY
variable_type = GRB.CONTINUOUS

u1 = m.addVar(vtype=variable_type)
u2 = m.addVar(vtype=variable_type)
u3 = m.addVar(vtype=variable_type)
u4 = m.addVar(vtype=variable_type)

m.setObjective(3*u1 + 4*u2 + 5*u3 + 0*u4, GRB.MINIMIZE)

m.addConstr(u4 >= 1)
m.addConstr(u1 + u2 >= 1)
m.addConstr(u1 + u3 >= 1)
m.addConstr(u2 + u3 >= 1)

m.optimize()

print("\n===========\n")
print(f"u1 = {u1.X}")
print(f"u2 = {u2.X}")
print(f"u3 = {u3.X}")
print(f"u4 = {u4.X}")
print(f"h = {m.ObjVal}")
