```json
{
  "sym_variables": [
    ("x0", "hours worked by Peggy"),
    ("x1", "hours worked by Laura"),
    ("x2", "hours worked by Mary"),
    ("x3", "hours worked by Paul"),
    ("x4", "hours worked by John")
  ],
  "objective_function": "6*x0 + 7*x1 + 5*x2 + 6*x3 + 3*x4",
  "constraints": [
    "9.62*x0 + 1.47*x2 + 4.47*x4 >= 28",
    "9.62*x0 + 13.34*x1 + 1.47*x2 >= 28",
    "13.34*x1 + 2.35*x3 + 4.47*x4 >= 28",
    "1.47*x2 + 2.35*x3 + 4.47*x4 >= 28",
    "9.62*x0 + 1.47*x2 + 4.47*x4 >= 32",
    "9.62*x0 + 13.34*x1 + 1.47*x2 >= 32",
    "13.34*x1 + 2.35*x3 + 4.47*x4 >= 32",
    "1.47*x2 + 2.35*x3 + 4.47*x4 >= 32",
    "9.62*x0 + 1.47*x2 + 4.47*x4 >= 34",
    "9.62*x0 + 13.34*x1 + 1.47*x2 >= 34",
    "13.34*x1 + 2.35*x3 + 4.47*x4 >= 34",
    "1.47*x2 + 2.35*x3 + 4.47*x4 >= 34",
    "9.62*x0 + 1.47*x2 + 4.47*x4 >= 34",
    "9.62*x0 + 13.34*x1 + 1.47*x2 >= 34",
    "13.34*x1 + 2.35*x3 + 4.47*x4 >= 34",
    "1.47*x2 + 2.35*x3 + 4.47*x4 >= 34",
    "8.9*x0 + 5.03*x4 >= 36",
    "12.81*x2 + 5.12*x3 >= 36",
    "1.15*x1 + 12.81*x2 >= 14",
    "8.9*x0 + 12.81*x2 >= 37",
    "8.9*x0 + 5.12*x3 + 5.03*x4 >= 30",
    "12.81*x2 + 5.12*x3 + 5.03*x4 >= 30",
    "8.9*x0 + 1.15*x1 + 5.03*x4 >= 30",
    "8.9*x0 + 1.15*x1 + 5.12*x3 >= 30",
    "8.9*x0 + 1.15*x1 + 12.81*x2 >= 30",
    "1.15*x1 + 12.81*x2 + 5.12*x3 >= 30",
    "8.9*x0 + 12.81*x2 + 5.03*x4 >= 30",
    "8.9*x0 + 5.12*x3 + 5.03*x4 >= 35",
    "12.81*x2 + 5.12*x3 + 5.03*x4 >= 35",
    "8.9*x0 + 1.15*x1 + 5.03*x4 >= 35",
    "8.9*x0 + 1.15*x1 + 5.12*x3 >= 35",
    "8.9*x0 + 1.15*x1 + 12.81*x2 >= 35",
    "1.15*x1 + 12.81*x2 + 5.12*x3 >= 35",
    "8.9*x0 + 12.81*x2 + 5.03*x4 >= 35",
    "8.9*x0 + 5.12*x3 + 5.03*x4 >= 26",
    "12.81*x2 + 5.12*x3 + 5.03*x4 >= 26",
    "8.9*x0 + 1.15*x1 + 5.03*x4 >= 26",
    "8.9*x0 + 1.15*x1 + 5.12*x3 >= 26",
    "8.9*x0 + 1.15*x1 + 12.81*x2 >= 26",
    "1.15*x1 + 12.81*x2 + 5.12*x3 >= 26",
    "8.9*x0 + 12.81*x2 + 5.03*x4 >= 26",
    "8.9*x0 + 5.12*x3 + 5.03*x4 >= 24",
    "12.81*x2 + 5.12*x3 + 5.03*x4 >= 24",
    "8.9*x0 + 1.15*x1 + 5.03*x4 >= 24",
    "8.9*x0 + 1.15*x1 + 5.12*x3 >= 24",
    "8.9*x0 + 1.15*x1 + 12.81*x2 >= 24",
    "1.15*x1 + 12.81*x2 + 5.12*x3 >= 24",
    "8.9*x0 + 12.81*x2 + 5.03*x4 >= 24",
    "8.9*x0 + 5.12*x3 + 5.03*x4 >= 32",
    "12.81*x2 + 5.12*x3 + 5.03*x4 >= 32",
    "8.9*x0 + 1.15*x1 + 5.03*x4 >= 32",
    "8.9*x0 + 1.15*x1 + 5.12*x3 >= 32",
    "8.9*x0 + 1.15*x1 + 12.81*x2 >= 32",
    "1.15*x1 + 12.81*x2 + 5.12*x3 >= 32",
    "8.9*x0 + 12.81*x2 + 5.03*x4 >= 32",
    "8.9*x0 + 5.12*x3 + 5.03*x4 >= 29",
    "12.81*x2 + 5.12*x3 + 5.03*x4 >= 29",
    "8.9*x0 + 1.15*x1 + 5.03*x4 >= 29",
    "8.9*x0 + 1.15*x1 + 5.12*x3 >= 29",
    "8.9*x0 + 1.15*x1 + 12.81*x2 >= 29",
    "1.15*x1 + 12.81*x2 + 5.12*x3 >= 29",
    "8.9*x0 + 12.81*x2 + 5.03*x4 >= 29",
    "8.9*x0 + 5.12*x3 + 5.03*x4 >= 22",
    "12.81*x2 + 5.12*x3 + 5.03*x4 >= 22",
    "8.9*x0 + 1.15*x1 + 5.03*x4 >= 22",
    "8.9*x0 + 1.15*x1 + 5.12*x3 >= 22",
    "8.9*x0 + 1.15*x1 + 12.81*x2 >= 22",
    "1.15*x1 + 12.81*x2 + 5.12*x3 >= 22",
    "8.9*x0 + 12.81*x2 + 5.03*x4 >= 22",
    "-x0 - 5*x1 + 8*x3 >= 0",
    "9.62*x0 + 1.47*x2 <= 76",
    "9.62*x0 + 13.34*x1 <= 58",
    "13.34*x1 + 4.47*x4 <= 180",
    "13.34*x1 + 2.35*x3 <= 187",
    "9.62*x0 + 4.47*x4 <= 181",
    "1.47*x2 + 2.35*x3 + 4.47*x4 <= 150",
    "9.62*x0 + 1.47*x2 + 2.35*x3 <= 63",
    "9.62*x0 + 13.34*x1 + 4.47*x4 <= 116",
    "13.34*x1 + 1.47*x2 + 4.47*x4 <= 171",
    "9.62*x0 + 13.34*x1 + 1.47*x2 + 2.35*x3 + 4.47*x4 <= 171",
    "8.9*x0 + 12.81*x2 <= 198",
    "1.15*x1 + 5.12*x3 <= 170",
    "1.15*x1 + 5.03*x4 <= 177",
    "12.81*x2 + 5.12*x3 <= 65",
    "5.12*x3 + 5.03*x4 <= 92",
    "8.9*x0 + 1.15*x1 + 12.81*x2 <= 89",
    "8.9*x0 + 12.81*x2 + 5.12*x3 <= 150",
    "8.9*x0 + 5.12*x3 + 5.03*x4 <= 124",
    "8.9*x0 + 12.81*x2 + 5.03*x4 <= 145",
    "8.9*x0 + 1.15*x1 + 12.81*x2 + 5.12*x3 + 5.03*x4 <= 145"
  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("optimization_problem")

# Create variables
x = m.addVars(5, lb=0, name=["Peggy", "Laura", "Mary", "Paul", "John"])

# Set integer constraints
x[0].vtype = gp.GRB.INTEGER
x[2].vtype = gp.GRB.INTEGER


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

# Add constraints
m.addConstr(9.62*x[0] + 1.47*x[2] + 4.47*x[4] >= 28)
m.addConstr(9.62*x[0] + 13.34*x[1] + 1.47*x[2] >= 28)
m.addConstr(13.34*x[1] + 2.35*x[3] + 4.47*x[4] >= 28)
m.addConstr(1.47*x[2] + 2.35*x[3] + 4.47*x[4] >= 28)
m.addConstr(9.62*x[0] + 1.47*x[2] + 4.47*x[4] >= 32)
m.addConstr(9.62*x[0] + 13.34*x[1] + 1.47*x[2] >= 32)
m.addConstr(13.34*x[1] + 2.35*x[3] + 4.47*x[4] >= 32)
m.addConstr(1.47*x[2] + 2.35*x[3] + 4.47*x[4] >= 32)
m.addConstr(9.62*x[0] + 1.47*x[2] + 4.47*x[4] >= 34)
m.addConstr(9.62*x[0] + 13.34*x[1] + 1.47*x[2] >= 34)
m.addConstr(13.34*x[1] + 2.35*x[3] + 4.47*x[4] >= 34)
m.addConstr(1.47*x[2] + 2.35*x[3] + 4.47*x[4] >= 34)
m.addConstr(9.62*x[0] + 1.47*x[2] + 4.47*x[4] >= 34)
m.addConstr(9.62*x[0] + 13.34*x[1] + 1.47*x[2] >= 34)
m.addConstr(13.34*x[1] + 2.35*x[3] + 4.47*x[4] >= 34)
m.addConstr(1.47*x[2] + 2.35*x[3] + 4.47*x[4] >= 34)
m.addConstr(8.9*x[0] + 5.03*x[4] >= 36)
m.addConstr(12.81*x[2] + 5.12*x[3] >= 36)
m.addConstr(1.15*x[1] + 12.81*x[2] >= 14)
m.addConstr(8.9*x[0] + 12.81*x[2] >= 37)
m.addConstr(8.9*x[0] + 5.12*x[3] + 5.03*x[4] >= 30)
m.addConstr(12.81*x[2] + 5.12*x[3] + 5.03*x[4] >= 30)
m.addConstr(8.9*x[0] + 1.15*x[1] + 5.03*x[4] >= 30)
m.addConstr(8.9*x[0] + 1.15*x[1] + 5.12*x[3] >= 30)
m.addConstr(8.9*x[0] + 1.15*x[1] + 12.81*x[2] >= 30)
m.addConstr(1.15*x[1] + 12.81*x[2] + 5.12*x[3] >= 30)
m.addConstr(8.9*x[0] + 12.81*x[2] + 5.03*x[4] >= 30)


# ... (rest of the constraints)


# Optimize model
m.optimize()

# Print results
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}")

```