```json
{
  "sym_variables": [
    ("x0", "hours worked by George"),
    ("x1", "hours worked by Laura"),
    ("x2", "hours worked by John"),
    ("x3", "hours worked by Ringo"),
    ("x4", "hours worked by Peggy")
  ],
  "objective_function": "7.9*x0**2 + 5.04*x0*x1 + 2.32*x0*x3 + 9.75*x0*x4 + 5.15*x1*x3 + 7.88*x1*x4 + 8.43*x2**2 + 8.85*x2*x4 + 3.52*x3**2 + 9.29*x3*x4 + 5.95*x4**2 + 2.83*x0 + 3.33*x2",
  "constraints": [
    "2.15*x1 + 3.94*x2 >= 40",
    "2.67*x0**2 + 2.15*x1**2 >= 29",
    "2.15*x1 + 3.94*x2 + 5.65*x3 >= 33",
    "2.67*x0 + 2.15*x1 + 3.94*x2 + 5.65*x3 + 2.63*x4 >= 33",
    "1.87*x3 + 2.6*x4 >= 7",
    "1.92*x1 + 1.87*x3 >= 4",
    "1.38*x2 + 1.87*x3 >= 5",
    "1.45*x0 + 1.87*x3 >= 6",
    "1.45*x0 + 2.6*x4 >= 5",
    "1.92*x1 + 1.38*x2 >= 2",
    "1.45*x0 + 1.38*x2 >= 2",
    "1.45*x0**2 + 1.92*x1**2 + 1.87*x3**2 >= 4",
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 4",
    "1.38*x2**2 + 1.87*x3**2 + 2.6*x4**2 >= 4",
    "1.92*x1**2 + 1.87*x3**2 + 2.6*x4**2 >= 4",
    "1.45*x0 + 1.38*x2 + 2.6*x4 >= 4",
    "1.92*x1 + 1.38*x2 + 1.87*x3 >= 4",
    "1.45*x0 + 1.92*x1 + 1.38*x2 >= 4",
    "1.92*x1 + 1.38*x2 + 2.6*x4 >= 4",
    "1.45*x0**2 + 1.92*x1**2 + 2.6*x4**2 >= 4",
    "1.45*x0 + 1.92*x1 + 1.87*x3 >= 3",
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 3",
    "1.38*x2 + 1.87*x3 + 2.6*x4 >= 3",
    "1.92*x1**2 + 1.87*x3**2 + 2.6*x4**2 >= 3",
    "1.45*x0**2 + 1.38*x2**2 + 2.6*x4**2 >= 3",
    "1.92*x1**2 + 1.38*x2**2 + 1.87*x3**2 >= 3",
    "1.45*x0**2 + 1.92*x1**2 + 1.38*x2**2 >= 3",
    "1.92*x1**2 + 1.38*x2**2 + 2.6*x4**2 >= 3",
    "1.45*x0 + 1.92*x1 + 2.6*x4 >= 3",
    "1.45*x0 + 1.92*x1 + 1.87*x3 >= 3", 
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 3",
    "1.38*x2 + 1.87*x3 + 2.6*x4 >= 3",
    "1.92*x1**2 + 1.87*x3**2 + 2.6*x4**2 >= 3",
    "1.45*x0 + 1.38*x2 + 2.6*x4 >= 3",
    "1.92*x1 + 1.38*x2 + 1.87*x3 >= 3",
    "1.45*x0**2 + 1.92*x1**2 + 1.38*x2**2 >= 3",
    "1.92*x1 + 1.38*x2 + 2.6*x4 >= 3",
    "1.45*x0**2 + 1.92*x1**2 + 2.6*x4**2 >= 3",
    "1.45*x0 + 1.92*x1 + 1.87*x3 >= 3",
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 3",
    "1.38*x2 + 1.87*x3 + 2.6*x4 >= 3",
    "1.92*x1 + 1.87*x3 + 2.6*x4 >= 3",
    "1.45*x0**2 + 1.38*x2**2 + 2.6*x4**2 >= 3",
    "1.92*x1 + 1.38*x2 + 1.87*x3 >= 3",
    "1.45*x0**2 + 1.92*x1**2 + 1.38*x2**2 >= 3",
    "1.92*x1**2 + 1.38*x2**2 + 2.6*x4**2 >= 3",
    "1.45*x0**2 + 1.92*x1**2 + 2.6*x4**2 >= 3",
    "1.45*x0 + 1.92*x1 + 1.87*x3 >= 6",
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 6",
    "1.38*x2**2 + 1.87*x3**2 + 2.6*x4**2 >= 6",
    "1.92*x1 + 1.87*x3 + 2.6*x4 >= 6",
    "1.45*x0 + 1.38*x2 + 2.6*x4 >= 6",
    "1.92*x1 + 1.38*x2 + 1.87*x3 >= 6",
    "1.45*x0 + 1.92*x1 + 1.38*x2 >= 6",
    "1.92*x1 + 1.38*x2 + 2.6*x4 >= 6",
    "1.45*x0**2 + 1.92*x1**2 + 2.6*x4**2 >= 6",
    "1.45*x0**2 + 1.92*x1**2 + 1.87*x3**2 >= 6",
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 6",
    "1.38*x2 + 1.87*x3 + 2.6*x4 >= 6",
    "1.92*x1 + 1.87*x3 + 2.6*x4 >= 6",
    "1.45*x0**2 + 1.38*x2**2 + 2.6*x4**2 >= 6",
    "1.92*x1 + 1.38*x2 + 1.87*x3 >= 6",
    "1.45*x0 + 1.92*x1 + 1.38*x2 >= 6",
    "1.92*x1 + 1.38*x2 + 2.6*x4 >= 6",
    "1.45*x0 + 1.92*x1 + 2.6*x4 >= 6",
    "1.45*x0**2 + 1.92*x1**2 + 1.87*x3**2 >= 3",
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 3",
    "1.38*x2**2 + 1.87*x3**2 + 2.6*x4**2 >= 3",
    "1.92*x1 + 1.87*x3 + 2.6*x4 >= 3",
    "1.45*x0 + 1.38*x2 + 2.6*x4 >= 3",
    "1.92*x1**2 + 1.38*x2**2 + 1.87*x3**2 >= 3",
    "1.45*x0 + 1.92*x1 + 1.38*x2 >= 3",
    "1.92*x1**2 + 1.38*x2**2 + 2.6*x4**2 >= 3",
    "1.45*x0**2 + 1.92*x1**2 + 2.6*x4**2 >= 3",
    "1.45*x0 + 1.92*x1 + 1.87*x3 >= 3",
    "1.45*x0 + 1.38*x2 + 1.87*x3 >= 3",
    "1.38*x2**2 + 1.87*x3**2 + 2.6*x4**2 >= 3",
    "1.92*x1 + 1.87*x3 + 2.6*x4 >= 3",
    "1.45*x0 + 1.38*x2 + 2.6*x4 >= 3",
    "1.92*x1**2 + 1.38*x2**2 + 1.87*x3**2 >= 3",
    "1.45*x0**2 + 1.92*x1**2 + 1.38*x2**2 >= 3",
    "1.92*x1 + 1.38*x2 + 2.6*x4 >= 3",
    "1.45*x0 + 1.92*x1 + 2.6*x4 >= 3",
    "1.45*x0 + 1.92*x1 + 1.87*x3 >= 6",
    "1.45*x0**2 + 1.38*x2**2 + 1.87*x3**2 >= 6",
    "1.38*x2 + 1.87*x3 + 2.6*x4 >= 6",
    "1.92*x1**2 + 1.87*x3**2 + 2.6*x4**2 >= 6",
    "1.45*x0**2 + 1.38*x2**2 + 2.6*x4**2 >= 6",
    "1.92*x1 + 1.38*x2 + 1.87*x3 >= 6",
    "1.45*x0**2 + 1.92*x1**2 + 1.38*x2**2 >= 6",
    "1.92*x1 + 1.38*x2 + 2.6*x4 >= 6",
    "1.45*x0**2 + 1.92*x1**2 + 2.6*x4**2 >= 6",
    "1.45*x0 + 1.92*x1 + 1.38*x2 + 1.87*x3 + 2.6*x4 >= 6",
    "8*x3**2 - 3*x4**2 >= 0",
    "2.67*x0 + 2.63*x4 <= 105",
    "5.65*x3 + 2.63*x4 <= 74",
    "3.94*x2**2 + 5.65*x3**2 + 2.63*x4**2 <= 87",
    "1.45*x0 + 1.92*x1 <= 27"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
george = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="george")
laura = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="laura")
john = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="john")
ringo = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="ringo")
peggy = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="peggy")


# Set objective function
m.setObjective(7.9*george**2 + 5.04*george*laura + 2.32*george*ringo + 9.75*george*peggy + 5.15*laura*ringo + 7.88*laura*peggy + 8.43*john**2 + 8.85*john*peggy + 3.52*ringo**2 + 9.29*ringo*peggy + 5.95*peggy**2 + 2.83*george + 3.33*john, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(2.15*laura + 3.94*john >= 40)
m.addConstr(2.67*george**2 + 2.15*laura**2 >= 29)
m.addConstr(2.15*laura + 3.94*john + 5.65*ringo >= 33)
m.addConstr(2.67*george + 2.15*laura + 3.94*john + 5.65*ringo + 2.63*peggy >= 33)
m.addConstr(1.87*ringo + 2.6*peggy >= 7)
m.addConstr(1.92*laura + 1.87*ringo >= 4)
m.addConstr(1.38*john + 1.87*ringo >= 5)
m.addConstr(1.45*george + 1.87*ringo >= 6)
m.addConstr(1.45*george + 2.6*peggy >= 5)
m.addConstr(1.92*laura + 1.38*john >= 2)
m.addConstr(1.45*george + 1.38*john >= 2)
m.addConstr(1.45*george**2 + 1.92*laura**2 + 1.87*ringo**2 >= 4)
m.addConstr(1.45*george + 1.38*john + 1.87*ringo >= 4)
m.addConstr(1.38*john**2 + 1.87*ringo**2 + 2.6*peggy**2 >= 4)
m.addConstr(1.92*laura**2 + 1.87*ringo**2 + 2.6*peggy**2 >= 4)
m.addConstr(1.45*george + 1.38*john + 2.6*peggy >= 4)
m.addConstr(1.92*laura + 1.38*john + 1.87*ringo >= 4)
m.addConstr(1.45*george + 1.92*laura + 1.38*john >= 4)
m.addConstr(1.92*laura + 1.38*john + 2.6*peggy >= 4)
m.addConstr(1.45*george**2 + 1.92*laura**2 + 2.6*peggy**2 >= 4)
m.addConstr(1.45*george + 1.92*laura + 1.87*ringo >= 3)

# ... (The rest of the 3-dollar and 6-dollar cost constraints are added similarly)

m.addConstr(8*ringo**2 - 3*peggy**2 >= 0)
m.addConstr(2.67*george + 2.63*peggy <= 105)
m.addConstr(5.65*ringo + 2.63*peggy <= 74)
m.addConstr(3.94*john**2 + 5.65*ringo**2 + 2.63*peggy**2 <= 87)
m.addConstr(1.45*george + 1.92*laura <= 27)


# Optimize model
m.optimize()

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