```json
{
  "sym_variables": [
    ("x0", "hours worked by Hank"),
    ("x1", "hours worked by Laura"),
    ("x2", "hours worked by John"),
    ("x3", "hours worked by Dale"),
    ("x4", "hours worked by Peggy")
  ],
  "objective_function": "2*x0 + 5*x1 + 8*x2 + 4*x3 + 8*x4",
  "constraints": [
    "11*x0 + 2*x1 + 10*x4 >= 18",
    "10*x2 + 5*x3 >= 11",
    "1*x0 + 11*x1 >= 30",
    "11*x1 + 5*x3 >= 26",
    "1*x0 + 10*x2 >= 17",
    "1*x0 + 5*x3 >= 12",
    "1*x0 + 11*x1 + 10*x2 >= 25",
    "10*x2 + 5*x3 + 3*x4 >= 25",
    "1*x0 + 10*x2 + 5*x3 >= 25",
    "11*x1 + 5*x3 + 3*x4 >= 25",
    "1*x0 + 11*x1 + 10*x2 >= 21",
    "10*x2 + 5*x3 + 3*x4 >= 21",
    "1*x0 + 10*x2 + 5*x3 >= 21",
    "11*x1 + 5*x3 + 3*x4 >= 21",
    "1*x0 + 11*x1 + 10*x2 >= 22",
    "10*x2 + 5*x3 + 3*x4 >= 22",
    "1*x0 + 10*x2 + 5*x3 >= 22",
    "11*x1 + 5*x3 + 3*x4 >= 22",
    "3*x3 + 10*x4 <= 76",
    "2*x1 + 3*x3 <= 87",
    "11*x0 + 2*x1 <= 72",
    "1*x2 + 3*x3 <= 92",
    "11*x0 + 3*x3 <= 69",
    "11*x0 + 3*x3 + 10*x4 <= 33",
    "11*x0 + 2*x1 + 10*x4 <= 129",
    "11*x0 + 2*x1 + 1*x2 + 3*x3 + 10*x4 <= 129",
    "1*x0 + 3*x4 <= 49",
    "11*x1 + 10*x2 <= 101",
    "11*x1 + 3*x4 <= 159",
    "1*x0 + 11*x1 + 5*x3 <= 132",
    "1*x0 + 5*x3 + 3*x4 <= 160",
    "1*x0 + 10*x2 + 5*x3 <= 109",
    "1*x0 + 11*x1 + 10*x2 <= 153",
    "11*x1 + 5*x3 + 3*x4 <= 113",
    "1*x0 + 10*x2 + 3*x4 <= 85",
    "10*x2 + 5*x3 + 3*x4 <= 85",
    "11*x1 + 10*x2 + 5*x3 <= 85",
    "1*x0 + 11*x1 + 10*x2 + 5*x3 + 3*x4 <= 85"
  ]
}
```

```python
import gurobipy as gp

try:
    # Create a new model
    m = gp.Model("optimization_model")

    # Create variables
    x = m.addVars(5, lb=0, vtype=gp.GRB.CONTINUOUS, name=["Hank", "Laura", "John", "Dale", "Peggy"])


    # Set objective function
    m.setObjective(2*x[0] + 5*x[1] + 8*x[2] + 4*x[3] + 8*x[4], gp.GRB.MAXIMIZE)

    # Add constraints
    m.addConstr(11*x[0] + 2*x[1] + 10*x[4] >= 18)
    m.addConstr(10*x[2] + 5*x[3] >= 11)
    m.addConstr(x[0] + 11*x[1] >= 30)
    m.addConstr(11*x[1] + 5*x[3] >= 26)
    m.addConstr(x[0] + 10*x[2] >= 17)
    m.addConstr(x[0] + 5*x[3] >= 12)
    m.addConstr(x[0] + 11*x[1] + 10*x[2] >= 25)
    m.addConstr(10*x[2] + 5*x[3] + 3*x[4] >= 25)
    m.addConstr(x[0] + 10*x[2] + 5*x[3] >= 25)
    m.addConstr(11*x[1] + 5*x[3] + 3*x[4] >= 25)
    m.addConstr(x[0] + 11*x[1] + 10*x[2] >= 21)
    m.addConstr(10*x[2] + 5*x[3] + 3*x[4] >= 21)
    m.addConstr(x[0] + 10*x[2] + 5*x[3] >= 21)
    m.addConstr(11*x[1] + 5*x[3] + 3*x[4] >= 21)
    m.addConstr(x[0] + 11*x[1] + 10*x[2] >= 22)
    m.addConstr(10*x[2] + 5*x[3] + 3*x[4] >= 22)
    m.addConstr(x[0] + 10*x[2] + 5*x[3] >= 22)
    m.addConstr(11*x[1] + 5*x[3] + 3*x[4] >= 22)

    m.addConstr(3*x[3] + 10*x[4] <= 76)
    m.addConstr(2*x[1] + 3*x[3] <= 87)
    m.addConstr(11*x[0] + 2*x[1] <= 72)
    m.addConstr(x[2] + 3*x[3] <= 92)
    m.addConstr(11*x[0] + 3*x[3] <= 69)
    m.addConstr(11*x[0] + 3*x[3] + 10*x[4] <= 33)
    m.addConstr(11*x[0] + 2*x[1] + 10*x[4] <= 129)
    m.addConstr(11*x[0] + 2*x[1] + x[2] + 3*x[3] + 10*x[4] <= 129)
    m.addConstr(x[0] + 3*x[4] <= 49)
    m.addConstr(11*x[1] + 10*x[2] <= 101)
    m.addConstr(11*x[1] + 3*x[4] <= 159)
    m.addConstr(x[0] + 11*x[1] + 5*x[3] <= 132)
    m.addConstr(x[0] + 5*x[3] + 3*x[4] <= 160)
    m.addConstr(x[0] + 10*x[2] + 5*x[3] <= 109)
    m.addConstr(x[0] + 11*x[1] + 10*x[2] <= 153)
    m.addConstr(11*x[1] + 5*x[3] + 3*x[4] <= 113)
    m.addConstr(x[0] + 10*x[2] + 3*x[4] <= 85)
    m.addConstr(10*x[2] + 5*x[3] + 3*x[4] <= 85)
    m.addConstr(11*x[1] + 10*x[2] + 5*x[3] <= 85)
    m.addConstr(x[0] + 11*x[1] + 10*x[2] + 5*x[3] + 3*x[4] <= 85)


    # Optimize model
    m.optimize()

    if m.status == gp.GRB.OPTIMAL:
        for v in m.getVars():
            print(f'{v.varName}: {v.x}')
        print(f'Obj: {m.objVal}')
    elif m.status == gp.GRB.INFEASIBLE:
        print("The model is infeasible.")
    else:
        print(f"Optimization ended with status {m.status}")


except gp.GurobiError as e:
    print(f'Error code {e.errno}: {e}')
except AttributeError:
    print('Encountered an attribute error')
```