```json
{
  "sym_variables": [
    ("x0", "hours worked by Bobby"),
    ("x1", "hours worked by Dale"),
    ("x2", "hours worked by Bill"),
    ("x3", "hours worked by Mary"),
    ("x4", "hours worked by Ringo")
  ],
  "objective_function": "5.69*x0**2 + 8.61*x0*x1 + 9.3*x0*x4 + 5.78*x1**2 + 4.35*x1*x3 + 5.76*x2**2 + 1.98*x2*x4 + 3.62*x0 + 7.98*x1 + 5.22*x2 + 9.82*x4",
  "constraints": [
    "9*x0 + 20*x2 >= 21",
    "9*x0 + 20*x1 >= 17",
    "9*x0 + 14*x3 >= 36",
    "20*x1**2 + 20*x2**2 >= 36",
    "20*x1**2 + 7*x4**2 >= 25",
    "20*x2 + 14*x3 >= 16",
    "3*x3 + 18*x4 >= 14",
    "4*x0 + 3*x3 >= 20",
    "14*x1 + 2*x2 >= 14",
    "14*x1 + 18*x4 >= 23",
    "14*x1 + 2*x2 + 18*x4 >= 28",
    "4*x0 + 14*x1 + 3*x3 >= 28",
    "14*x1 + 3*x3 + 18*x4 >= 28",
    "14*x1 + 2*x2 + 18*x4 >= 17",
    "4*x0 + 14*x1 + 3*x3 >= 17",
    "14*x1 + 3*x3 + 18*x4 >= 17",
    "14*x1 + 2*x2 + 18*x4 >= 20",
    "4*x0**2 + 14*x1**2 + 3*x3**2 >= 20",
    "14*x1 + 3*x3 + 18*x4 >= 20",
    "5*x2 + 16*x3 >= 31",
    "9*x0**2 + 16*x3**2 >= 38",
    "9*x0 + 19*x1 >= 15",
    "9*x0 + 5*x2 >= 28",
    "9*x0 + 11*x4 >= 38",
    "19*x1 + 16*x3 + 11*x4 >= 20",
    "9*x0 + 19*x1 + 5*x2 >= 20",
    "5*x2**2 + 16*x3**2 + 11*x4**2 >= 20",
    "9*x0 + 5*x2 + 11*x4 >= 20",
    "19*x1 + 5*x2 + 16*x3 >= 20",
    "19*x1**2 + 16*x3**2 + 11*x4**2 >= 33",
    "9*x0 + 19*x1 + 5*x2 >= 33",
    "5*x2 + 16*x3 + 11*x4 >= 33",
    "9*x0 + 5*x2 + 11*x4 >= 33",
    "19*x1 + 5*x2 + 16*x3 >= 33",
    "19*x1 + 16*x3 + 11*x4 >= 25",
    "9*x0 + 19*x1 + 5*x2 >= 25",
    "5*x2 + 16*x3 + 11*x4 >= 25",
    "9*x0 + 5*x2 + 11*x4 >= 25",
    "19*x1**2 + 5*x2**2 + 16*x3**2 >= 25",
    "19*x1 + 16*x3 + 11*x4 >= 27",
    "9*x0 + 19*x1 + 5*x2 >= 27",
    "5*x2 + 16*x3 + 11*x4 >= 27",
    "9*x0**2 + 5*x2**2 + 11*x4**2 >= 27",
    "19*x1 + 5*x2 + 16*x3 >= 27",
    "19*x1 + 16*x3 + 11*x4 >= 26",
    "9*x0 + 19*x1 + 5*x2 >= 26",
    "5*x2 + 16*x3 + 11*x4 >= 26",
    "9*x0 + 5*x2 + 11*x4 >= 26",
    "19*x1 + 5*x2 + 16*x3 >= 26",
    "9*x0**2 + 14*x3**2 <= 168",
    "14*x3**2 + 7*x4**2 <= 99",
    "20*x1 + 20*x2 <= 75",
    "20*x2 + 7*x4 <= 174",
    "9*x0 + 20*x1 + 20*x2 + 14*x3 + 7*x4 <= 174",
    "14*x1 + 3*x3 <= 78",
    "2*x2 + 18*x4 <= 45",
    "4*x0**2 + 14*x1**2 + 3*x3**2 <= 69",
    "4*x0 + 2*x2 + 3*x3 <= 134",
    "4*x0 + 14*x1 + 18*x4 <= 163",
    "4*x0**2 + 3*x3**2 + 18*x4**2 <= 106",
    "4*x0 + 14*x1 + 2*x2 + 3*x3 + 18*x4 <= 106",
    "16*x3 + 11*x4 <= 50",
    "19*x1**2 + 16*x3**2 <= 77",
    "5*x2 + 16*x3 <= 191",
    "9*x0**2 + 11*x4**2 <= 44",
    "9*x0**2 + 5*x2**2 <= 202",
    "9*x0 + 19*x1 + 16*x3 <= 79",
    "9*x0 + 19*x1 + 5*x2 + 16*x3 + 11*x4 <= 79",
    "14*x1 + 8*x4 <= 181",
    "20*x0**2 + 14*x1**2 <= 133",
    "20*x2**2 + 19*x3**2 <= 142",
    "20*x2 + 8*x4 <= 139",
    "19*x3 + 8*x4 <= 73",
    "20*x0 + 8*x4 <= 79",
    "20*x0**2 + 19*x3**2 <= 116",
    "20*x0**2 + 20*x2**2 <= 135",
    "14*x1 + 20*x2 + 8*x4 <= 129",
    "14*x1**2 + 20*x2**2 + 19*x3**2 <= 103",
    "20*x0 + 14*x1 + 8*x4 <= 118",
    "20*x0 + 14*x1 + 20*x2 + 19*x3 + 8*x4 <= 118"
  ]
}
```

```python
import gurobipy as gp
from gurobipy import GRB

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

# Create variables
bobby = m.addVar(vtype=GRB.INTEGER, name="bobby")
dale = m.addVar(vtype=GRB.CONTINUOUS, name="dale")
bill = m.addVar(vtype=GRB.CONTINUOUS, name="bill")
mary = m.addVar(vtype=GRB.CONTINUOUS, name="mary")
ringo = m.addVar(vtype=GRB.INTEGER, name="ringo")


# Set objective function
m.setObjective(5.69*bobby**2 + 8.61*bobby*dale + 9.3*bobby*ringo + 5.78*dale**2 + 4.35*dale*mary + 5.76*bill**2 + 1.98*bill*ringo + 3.62*bobby + 7.98*dale + 5.22*bill + 9.82*ringo, GRB.MAXIMIZE)

# Add constraints
m.addConstr(9*bobby + 20*bill >= 21)
m.addConstr(9*bobby + 20*dale >= 17)
m.addConstr(9*bobby + 14*mary >= 36)
m.addConstr(20*dale**2 + 20*bill**2 >= 36)
m.addConstr(20*dale**2 + 7*ringo**2 >= 25)
m.addConstr(20*bill + 14*mary >= 16)
m.addConstr(3*mary + 18*ringo >= 14)
m.addConstr(4*bobby + 3*mary >= 20)
m.addConstr(14*dale + 2*bill >= 14)
m.addConstr(14*dale + 18*ringo >= 23)
m.addConstr(14*dale + 2*bill + 18*ringo >= 28)
m.addConstr(4*bobby + 14*dale + 3*mary >= 28)
m.addConstr(14*dale + 3*mary + 18*ringo >= 28)
m.addConstr(14*dale + 2*bill + 18*ringo >= 17)
m.addConstr(4*bobby + 14*dale + 3*mary >= 17)
m.addConstr(14*dale + 3*mary + 18*ringo >= 17)
m.addConstr(14*dale + 2*bill + 18*ringo >= 20)
m.addConstr(4*bobby**2 + 14*dale**2 + 3*mary**2 >= 20)
m.addConstr(14*dale + 3*mary + 18*ringo >= 20)
m.addConstr(5*bill + 16*mary >= 31)
m.addConstr(9*bobby**2 + 16*mary**2 >= 38)
m.addConstr(9*bobby + 19*dale >= 15)
m.addConstr(9*bobby + 5*bill >= 28)
m.addConstr(9*bobby + 11*ringo >= 38)
m.addConstr(19*dale + 16*mary + 11*ringo >= 20)
m.addConstr(9*bobby + 19*dale + 5*bill >= 20)
m.addConstr(5*bill**2 + 16*mary**2 + 11*ringo**2 >= 20)
m.addConstr(9*bobby + 5*bill + 11*ringo >= 20)
m.addConstr(19*dale + 5*bill + 16*mary >= 20)
m.addConstr(19*dale**2 + 16*mary**2 + 11*ringo**2 >= 33)
m.addConstr(9*bobby + 19*dale + 5*bill >= 33)
m.addConstr(5*bill + 16*mary + 11*ringo >= 33)
m.addConstr(9*bobby + 5*bill + 11*ringo >= 33)
m.addConstr(19*dale + 5*bill + 16*mary >= 33)
m.addConstr(19*dale + 16*mary + 11*ringo >= 25)
m.addConstr(9*bobby + 19*dale + 5*bill >= 25)
m.addConstr(5*bill + 16*mary + 11*ringo >= 25)
m.addConstr(9*bobby + 5*bill + 11*ringo >= 25)
m.addConstr(19*dale**2 + 5*bill**2 + 16*mary**2 >= 25)
m.addConstr(19*dale + 16*mary + 11*ringo >= 27)
m.addConstr(9*bobby + 19*dale + 5*bill >= 27)
m.addConstr(5*bill + 16*mary + 11*ringo >= 27)
m.addConstr(9*bobby**2 + 5*bill**2 + 11*ringo**2 >= 27)
m.addConstr(19*dale + 5*bill + 16*mary >= 27)
m.addConstr(19*dale + 16*mary + 11*ringo >= 26)
m.addConstr(9*bobby + 19*dale + 5*bill >= 26)
m.addConstr(5*bill + 16*mary + 11*ringo >= 26)
m.addConstr(9*bobby + 5*bill + 11*ringo >= 26)
m.addConstr(19*dale + 5*bill + 16*mary >= 26)


m.addConstr(9*bobby**2 + 14*mary**2 <= 168)
m.addConstr(14*mary**2 + 7*ringo**2 <= 99)
m.addConstr(20*dale + 20*bill <= 75)
m.addConstr(20*bill + 7*ringo <= 174)
m.addConstr(9*bobby + 20*dale + 20*bill + 14*mary + 7*ringo <= 174)
m.addConstr(14*dale + 3*mary <= 78)
m.addConstr(2*bill + 18*ringo <= 45)
m.addConstr(4*bobby**2 + 14*dale**2 + 3*mary**2 <= 69)
m.addConstr(4*bobby + 2*bill + 3*mary <= 134)
m.addConstr(4*bobby + 14*dale + 18*ringo <= 163)
m.addConstr(4*bobby**2 + 3*mary**2 + 18*ringo**2 <= 106)
m.addConstr(4*bobby + 14*dale + 2*bill + 3*mary + 18*ringo <= 106)
m.addConstr(16*mary + 11*ringo <= 50)
m.addConstr(19*dale**2 + 16*mary**2 <= 77)
m.addConstr(5*bill + 16*mary <= 191)
m.addConstr(9*bobby**2 + 11*ringo**2 <= 44)
m.addConstr(9*bobby**2 + 5*bill**2 <= 202)
m.addConstr(9*bobby + 19*dale + 16*mary <= 79)
m.addConstr(9*bobby + 19*dale + 5*bill + 16*mary + 11*ringo <= 79)
m.addConstr(14*dale + 8*ringo <= 181)
m.addConstr(20*bobby**2 + 14*dale**2 <= 133)
m.addConstr(20*bill**2 + 19*mary**2 <= 142)
m.addConstr(20*bill + 8*ringo <= 139)
m.addConstr(19*mary + 8*ringo <= 73)
m.addConstr(20*bobby + 8*ringo <= 79)
m.addConstr(20*bobby**2 + 19*mary**2 <= 116)
m.addConstr(20*bobby**2 + 20*bill**2 <= 135)
m.addConstr(14*dale + 20*bill + 8*ringo <= 129)
m.addConstr(14*dale**2 + 20*bill**2 + 19*mary**2 <= 103)
m.addConstr(20*bobby + 14*dale + 8*ringo <= 118)
m.addConstr(20*bobby + 14*dale + 20*bill + 19*mary + 8*ringo <= 118)



# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == GRB.INFEASIBLE:
    print('Optimization problem is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)
```