```json
{
  "sym_variables": [
    ("x0", "hours worked by Paul"),
    ("x1", "hours worked by Bobby"),
    ("x2", "hours worked by Mary"),
    ("x3", "hours worked by George"),
    ("x4", "hours worked by Peggy"),
    ("x5", "hours worked by Ringo")
  ],
  "objective_function": "4.85*x0*x1 + 9.98*x0*x3 + 4.12*x0*x5 + 6.23*x1**2 + 1.98*x1*x2 + 3.64*x1*x3 + 8.64*x1*x5 + 8.33*x2*x3 + 9.28*x2*x4 + 8.28*x2*x5 + 4.19*x3**2 + 2.32*x3*x4 + 7.98*x4**2 + 5.46*x4*x5 + 7.15*x5**2 + 6.18*x0 + 5.24*x1 + 1.79*x2 + 1.0*x3 + 6.44*x4 + 4.89*x5",
  "constraints": [
    "4*x2 + 1*x5 >= 8",
    "2*x0 + 3*x1 >= 3",
    "2*x0 + 4*x2 >= 5",
    "3*x1**2 + 1*x4**2 >= 3",
    "1*x4**2 + 1*x5**2 >= 4",
    "3*x1 + 4*x2 >= 2",
    "3*x1**2 + 1*x3**2 >= 3",
    "1*x3**2 + 1*x5**2 >= 2",
    "2*x0 + 1*x4 >= 5",
    "3*x1 + 4*x2 + 1*x5 >= 4",
    "2*x0 + 4*x2 + 1*x4 >= 4",
    "2*x0 + 3*x1 + 1*x4 >= 4",
    "3*x1**2 + 1*x3**2 + 1*x4**2 >= 4",
    "2*x0**2 + 3*x1**2 + 1*x5**2 >= 4",
    "3*x1 + 4*x2 + 1*x5 >= 4",
    "2*x0**2 + 4*x2**2 + 1*x4**2 >= 4",
    "2*x0 + 3*x1 + 1*x4 >= 4",
    "3*x1 + 1*x3 + 1*x4 >= 4",
    "2*x0 + 3*x1 + 1*x5 >= 4",
    "3*x1 + 4*x2 + 1*x5 >= 4",
    "2*x0**2 + 4*x2**2 + 1*x4**2 >= 4",
    "2*x0 + 3*x1 + 1*x4 >= 4",
    "3*x1 + 1*x3 + 1*x4 >= 4",
    "2*x0 + 3*x1 + 1*x5 >= 4",
    "3*x1**2 + 4*x2**2 + 1*x5**2 >= 8",
    "2*x0 + 4*x2 + 1*x4 >= 8",
    "2*x0 + 3*x1 + 1*x4 >= 8",
    "3*x1**2 + 1*x3**2 + 1*x4**2 >= 8",
    "2*x0 + 3*x1 + 1*x5 >= 8",
    "3*x1**2 + 4*x2**2 + 1*x5**2 >= 6",
    "2*x0**2 + 4*x2**2 + 1*x4**2 >= 6",
    "2*x0 + 3*x1 + 1*x4 >= 6",
    "3*x1 + 1*x3 + 1*x4 >= 6",
    "2*x0**2 + 3*x1**2 + 1*x5**2 >= 6",
    "2*x1**2 - 5*x2**2 - 8*x5**2 >= 0",
    "4*x2**2 + 1*x5**2 <= 22",
    "1*x4 + 1*x5 <= 43",
    "3*x1**2 + 4*x2**2 <= 50",
    "3*x1**2 + 1*x3**2 <= 14",
    "2*x0 + 1*x5 <= 29",
    "3*x1 + 1*x5 <= 51",
    "4*x2 + 1*x4 <= 47",
    "3*x1 + 1*x4 <= 17",
    "1*x3 + 1*x5 <= 48",
    "2*x0 + 4*x2 <= 46",
    "2*x0 + 1*x3 <= 39",
    "4*x2 + 1*x3 <= 30",
    "3*x1 + 1*x3 + 1*x5 <= 27",
    "2*x0 + 4*x2 + 1*x4 <= 45",
    "4*x2**2 + 1*x3**2 + 1*x5**2 <= 38",
    "3*x1 + 4*x2 + 1*x3 <= 45",
    "3*x1 + 1*x3 + 1*x4 <= 37",
    "3*x1 + 4*x2 + 1*x4 <= 51",
    "2*x0 + 1*x3 + 1*x5 <= 32",
    "4*x2 + 1*x3 + 1*x4 <= 23",
    "2*x0 + 3*x1 + 4*x2 + 1*x3 + 1*x4 + 1*x5 <= 23"
  ]
}
```

```python
from gurobipy import *

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

# Create variables
paul = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Paul")
bobby = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Bobby")
mary = m.addVar(lb=0, vtype=GRB.INTEGER, name="Mary")
george = m.addVar(lb=0, vtype=GRB.INTEGER, name="George")
peggy = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Peggy")
ringo = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Ringo")


# Set objective
obj = 4.85*paul*bobby + 9.98*paul*george + 4.12*paul*ringo + 6.23*bobby**2 + 1.98*bobby*mary + 3.64*bobby*george + 8.64*bobby*ringo + 8.33*mary*george + 9.28*mary*peggy + 8.28*mary*ringo + 4.19*george**2 + 2.32*george*peggy + 7.98*peggy**2 + 5.46*peggy*ringo + 7.15*ringo**2 + 6.18*paul + 5.24*bobby + 1.79*mary + 1.0*george + 6.44*peggy + 4.89*ringo

m.setObjective(obj, GRB.MAXIMIZE)

# Add constraints
m.addConstr(4*mary + 1*ringo >= 8)
m.addConstr(2*paul + 3*bobby >= 3)
m.addConstr(2*paul + 4*mary >= 5)
m.addConstr(3*bobby**2 + 1*peggy**2 >= 3)
m.addConstr(1*peggy**2 + 1*ringo**2 >= 4)
m.addConstr(3*bobby + 4*mary >= 2)
m.addConstr(3*bobby**2 + 1*george**2 >= 3)
m.addConstr(1*george**2 + 1*ringo**2 >= 2)
m.addConstr(2*paul + 1*peggy >= 5)
m.addConstr(3*bobby + 4*mary + 1*ringo >= 4)
m.addConstr(2*paul + 4*mary + 1*peggy >= 4)
m.addConstr(2*paul + 3*bobby + 1*peggy >= 4)
m.addConstr(3*bobby**2 + 1*george**2 + 1*peggy**2 >= 4)
m.addConstr(2*paul**2 + 3*bobby**2 + 1*ringo**2 >= 4)
m.addConstr(3*bobby + 4*mary + 1*ringo >= 4)
m.addConstr(2*paul**2 + 4*mary**2 + 1*peggy**2 >= 4)
m.addConstr(2*paul + 3*bobby + 1*peggy >= 4)
m.addConstr(3*bobby + 1*george + 1*peggy >= 4)
m.addConstr(2*paul + 3*bobby + 1*ringo >= 4)
m.addConstr(3*bobby + 4*mary + 1*ringo >= 4)
m.addConstr(2*paul**2 + 4*mary**2 + 1*peggy**2 >= 4)
m.addConstr(2*paul + 3*bobby + 1*peggy >= 4)
m.addConstr(3*bobby + 1*george + 1*peggy >= 4)
m.addConstr(2*paul + 3*bobby + 1*ringo >= 4)
m.addConstr(3*bobby**2 + 4*mary**2 + 1*ringo**2 >= 8)
m.addConstr(2*paul + 4*mary + 1*peggy >= 8)
m.addConstr(2*paul + 3*bobby + 1*peggy >= 8)
m.addConstr(3*bobby**2 + 1*george**2 + 1*peggy**2 >= 8)
m.addConstr(2*paul + 3*bobby + 1*ringo >= 8)
m.addConstr(3*bobby**2 + 4*mary**2 + 1*ringo**2 >= 6)
m.addConstr(2*paul**2 + 4*mary**2 + 1*peggy**2 >= 6)
m.addConstr(2*paul + 3*bobby + 1*peggy >= 6)
m.addConstr(3*bobby + 1*george + 1*peggy >= 6)
m.addConstr(2*paul**2 + 3*bobby**2 + 1*ringo**2 >= 6)
m.addConstr(2*bobby**2 - 5*mary**2 - 8*ringo**2 >= 0)
m.addConstr(4*mary**2 + 1*ringo**2 <= 22)
m.addConstr(1*peggy + 1*ringo <= 43)
m.addConstr(3*bobby**2 + 4*mary**2 <= 50)
m.addConstr(3*bobby**2 + 1*george**2 <= 14)
m.addConstr(2*paul + 1*ringo <= 29)
m.addConstr(3*bobby + 1*ringo <= 51)
m.addConstr(4*mary + 1*peggy <= 47)
m.addConstr(3*bobby + 1*peggy <= 17)
m.addConstr(1*george + 1*ringo <= 48)
m.addConstr(2*paul + 4*mary <= 46)
m.addConstr(2*paul + 1*george <= 39)
m.addConstr(4*mary + 1*george <= 30)
m.addConstr(3*bobby + 1*george + 1*ringo <= 27)
m.addConstr(2*paul + 4*mary + 1*peggy <= 45)
m.addConstr(4*mary**2 + 1*george**2 + 1*ringo**2 <= 38)
m.addConstr(3*bobby + 4*mary + 1*george <= 45)
m.addConstr(3*bobby + 1*george + 1*peggy <= 37)
m.addConstr(3*bobby + 4*mary + 1*peggy <= 51)
m.addConstr(2*paul + 1*george + 1*ringo <= 32)
m.addConstr(4*mary + 1*george + 1*peggy <= 23)
m.addConstr(2*paul + 3*bobby + 4*mary + 1*george + 1*peggy + 1*ringo <= 23)


# Optimize model
m.optimize()

#print solution
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("The problem is infeasible.")
```