```json
{
  "sym_variables": [
    ("x0", "hours worked by Ringo"),
    ("x1", "hours worked by Laura"),
    ("x2", "hours worked by George"),
    ("x3", "hours worked by Hank"),
    ("x4", "hours worked by Bill"),
    ("x5", "hours worked by Bobby")
  ],
  "objective_function": "4.95*x0**2 + 7.37*x0*x1 + 9.41*x0*x2 + 9.38*x0*x3 + 7.29*x0*x5 + 2.03*x1**2 + 4.48*x1*x2 + 3.43*x1*x3 + 5.16*x1*x4 + 5.25*x1*x5 + 9.99*x2*x3 + 7.32*x2*x4 + 1.82*x2*x5 + 5.33*x3**2 + 7.18*x4**2 + 4.59*x4*x5 + 9.6*x5**2 + 1.04*x0 + 1.83*x1 + 4.82*x2 + 2.5*x3 + 8.75*x4",
  "constraints": [
    "4*x0 + 24*x1 + 10*x2 + 27*x3 + 7*x4 + 28*x5 <= 434",
    "24*x1 + 27*x3 + 28*x5 >= 57",
    "24*x1 + 27*x3 + 7*x4 >= 57",
    "24*x1 + 10*x2 + 27*x3 >= 57",
    "27*x3 + 7*x4 + 28*x5 >= 57",
    "4*x0 + 27*x3 + 28*x5 >= 57",
    "10*x2 + 7*x4 + 28*x5 >= 57",
    "24*x1 + 10*x2 + 28*x5 >= 57",
    "4*x0 + 24*x1 + 7*x4 >= 57",
    "24*x1 + 10*x2 + 7*x4 >= 57",
    "4*x0**2 + 7*x4**2 + 28*x5**2 >= 57",
    "4*x0**2 + 10*x2**2 + 27*x3**2 >= 57",
    "10*x2 + 27*x3 + 7*x4 >= 57",
    "10*x2**2 + 27*x3**2 + 28*x5**2 >= 57",
    "24*x1**2 + 27*x3**2 + 28*x5**2 >= 53",
    "24*x1 + 27*x3 + 7*x4 >= 53",
    "24*x1**2 + 10*x2**2 + 27*x3**2 >= 53",
    "27*x3 + 7*x4 + 28*x5 >= 53",
    "4*x0 + 27*x3 + 28*x5 >= 53",
    "10*x2 + 7*x4 + 28*x5 >= 53",
    "24*x1 + 10*x2 + 28*x5 >= 53",
    "4*x0**2 + 24*x1**2 + 7*x4**2 >= 53",
    "24*x1**2 + 10*x2**2 + 7*x4**2 >= 53",
    "4*x0**2 + 7*x4**2 + 28*x5**2 >= 53",
    "4*x0 + 10*x2 + 27*x3 >= 53",
    "10*x2**2 + 27*x3**2 + 7*x4**2 >= 53",
    "10*x2 + 27*x3 + 28*x5 >= 53",
    "24*x1**2 + 27*x3**2 + 28*x5**2 >= 65",
    "24*x1**2 + 27*x3**2 + 7*x4**2 >= 65",
    "24*x1 + 10*x2 + 27*x3 >= 65",
    "27*x3 + 7*x4 + 28*x5 >= 65",
    "4*x0**2 + 27*x3**2 + 28*x5**2 >= 65",
    "10*x2**2 + 7*x4**2 + 28*x5**2 >= 65",
    "24*x1**2 + 10*x2**2 + 28*x5**2 >= 65",
    "4*x0 + 24*x1 + 7*x4 >= 65",
    "24*x1**2 + 10*x2**2 + 7*x4**2 >= 65",
    "4*x0 + 7*x4 + 28*x5 >= 65",
    "4*x0**2 + 10*x2**2 + 27*x3**2 >= 65",
    "10*x2 + 27*x3 + 7*x4 >= 65",
    "10*x2**2 + 27*x3**2 + 28*x5**2 >= 65",
    "-10*x0 + 10*x1 >= 0",
    "24*x1**2 + 28*x5**2 <= 81",
    "27*x3 + 28*x5 <= 427",
    "4*x0 + 24*x1 <= 81",
    "4*x0**2 + 27*x3**2 <= 342",
    "24*x1**2 + 7*x4**2 + 28*x5**2 <= 149",
    "4*x0 + 10*x2 + 7*x4 <= 137",
    "4*x0 + 24*x1 + 10*x2 <= 397",
    "4*x0 + 10*x2 + 27*x3 <= 152", 
    "24*x1 + 27*x3 + 7*x4 <= 159",
    "24*x1 + 10*x2 + 27*x3 <= 340",
    "24*x1 + 10*x2 + 7*x4 <= 339",
    "4*x0 + 24*x1 + 27*x3 <= 176",
    "10*x2**2 + 7*x4**2 + 28*x5**2 <= 344",
    "24*x1**2 + 10*x2**2 + 28*x5**2 <= 168",
    "4*x0**2 + 24*x1**2 + 7*x4**2 <= 242",
    "4*x0 + 7*x4 + 28*x5 <= 191",
    "4*x0 + 24*x1 + 10*x2 + 27*x3 + 7*x4 + 28*x5 <= 191"
    
  ]
}
```

```python
from gurobipy import *

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

# Create variables
ringo = m.addVar(vtype=GRB.INTEGER, name="ringo")
laura = m.addVar(vtype=GRB.INTEGER, name="laura")
george = m.addVar(vtype=GRB.INTEGER, name="george")
hank = m.addVar(vtype=GRB.INTEGER, name="hank")
bill = m.addVar(vtype=GRB.INTEGER, name="bill")
bobby = m.addVar(vtype=GRB.INTEGER, name="bobby")


# Set objective
obj = 4.95*ringo**2 + 7.37*ringo*laura + 9.41*ringo*george + 9.38*ringo*hank + 7.29*ringo*bobby + 2.03*laura**2 + 4.48*laura*george + 3.43*laura*hank + 5.16*laura*bill + 5.25*laura*bobby + 9.99*george*hank + 7.32*george*bill + 1.82*george*bobby + 5.33*hank**2 + 7.18*bill**2 + 4.59*bill*bobby + 9.6*bobby**2 + 1.04*ringo + 1.83*laura + 4.82*george + 2.5*hank + 8.75*bill

m.setObjective(obj, GRB.MAXIMIZE)

# Add constraints

# Resource constraint
m.addConstr(4*ringo + 24*laura + 10*george + 27*hank + 7*bill + 28*bobby <= 434, "r0")


# Competence rating constraints (simplified and combined where possible)
m.addConstr(24*laura + 27*hank + 28*bobby >= 37, "c1")
m.addConstr(24*laura + 27*hank + 7*bill >= 37, "c2")
m.addConstr(24*laura + 10*george + 27*hank >= 37, "c3")
m.addConstr(27*hank + 7*bill + 28*bobby >= 37, "c4")
m.addConstr(4*ringo + 27*hank + 28*bobby >= 37, "c5")
m.addConstr(10*george + 7*bill + 28*bobby >= 37, "c6")
m.addConstr(24*laura + 10*george + 28*bobby >= 37, "c7")
m.addConstr(4*ringo + 24*laura + 7*bill >= 37, "c8")
m.addConstr(24*laura + 10*george + 7*bill >= 37, "c9")
m.addConstr(10*george + 27*hank + 7*bill >= 37, "c10")
m.addConstr(10*george + 27*hank + 28*bobby >= 37, "c11")

# Additional constraints
m.addConstr(-10*ringo + 10*laura >= 0, "c12")
m.addConstr(24*laura**2 + 28*bobby**2 <= 81, "c13")
m.addConstr(27*hank + 28*bobby <= 427, "c14")
m.addConstr(4*ringo + 24*laura <= 81, "c15")
m.addConstr(4*ringo**2 + 27*hank**2 <= 342, "c16")
m.addConstr(24*laura**2 + 7*bill**2 + 28*bobby**2 <= 149, "c17")
m.addConstr(4*ringo + 10*george + 7*bill <= 137, "c18")
m.addConstr(4*ringo + 24*laura + 10*george <= 397, "c19")
m.addConstr(4*ringo + 10*george + 27*hank <= 152, "c20")
m.addConstr(24*laura + 27*hank + 7*bill <= 159, "c21")
m.addConstr(24*laura + 10*george + 27*hank <= 340, "c22")
m.addConstr(24*laura + 10*george + 7*bill <= 339, "c23")
m.addConstr(4*ringo + 24*laura + 27*hank <= 176, "c24")
m.addConstr(10*george**2 + 7*bill**2 + 28*bobby**2 <= 344, "c25")
m.addConstr(24*laura**2 + 10*george**2 + 28*bobby**2 <= 168, "c26")
m.addConstr(4*ringo**2 + 24*laura**2 + 7*bill**2 <= 242, "c27")
m.addConstr(4*ringo + 7*bill + 28*bobby <= 191, "c28")
m.addConstr(4*ringo + 24*laura + 10*george + 27*hank + 7*bill + 28*bobby <= 191, "c29")



# 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 model is infeasible.")
else:
    print("Optimization ended with status:", m.status)

```