```json
{
  "sym_variables": [
    ("x0", "bowls of pasta"),
    ("x1", "cantaloupes"),
    ("x2", "bowls of cereal"),
    ("x3", "apples"),
    ("x4", "kale salads")
  ],
  "objective_function": "4.53*x0**2 + 9.81*x0*x1 + 2.29*x0*x2 + 8.81*x0*x3 + 4.72*x0*x4 + 8.46*x1**2 + 7.24*x1*x2 + 6.79*x1*x3 + 1.09*x1*x4 + 1.84*x3**2 + 3.77*x3*x4 + 9.4*x4**2 + 9.68*x0 + 4.89*x1 + 7.66*x2 + 4.29*x3",
  "constraints": [
    "7*x0 + 14*x1 + 1*x2 + 10*x3 + 5*x4 <= 172",
    "7*x0 + 13*x1 + 9*x2 + 3*x3 + 5*x4 <= 86",
    "12*x0 + 6*x1 + 13*x2 + 7*x3 + 3*x4 <= 243",
    "7*x0**2 + 1*x2**2 >= 19",
    "7*x0 + 10*x3 >= 24",
    "14*x1 + 1*x2 >= 20",
    "14*x1 + 10*x3 >= 22",
    "14*x1 + 5*x4 >= 15",
    "7*x0 + 14*x1 >= 13",
    "1*x2**2 + 10*x3**2 + 5*x4**2 >= 30",
    "14*x1**2 + 10*x3**2 + 5*x4**2 >= 30",
    "7*x0**2 + 14*x1**2 + 1*x2**2 >= 30",
    "14*x1**2 + 1*x2**2 + 10*x3**2 >= 30",
    "14*x1 + 1*x2 + 5*x4 >= 30",
    "7*x0 + 1*x2 + 10*x3 >= 30",
    "1*x2 + 10*x3 + 5*x4 >= 22",
    "14*x1 + 10*x3 + 5*x4 >= 22",
    "7*x0 + 14*x1 + 1*x2 >= 22",
    "14*x1 + 1*x2 + 10*x3 >= 22",
    "14*x1**2 + 1*x2**2 + 5*x4**2 >= 22",
    "7*x0**2 + 1*x2**2 + 10*x3**2 >= 22",
    "1*x2 + 10*x3 + 5*x4 >= 20",
    "14*x1 + 10*x3 + 5*x4 >= 20",
    "7*x0 + 14*x1 + 1*x2 >= 20",
    "14*x1 + 1*x2 + 10*x3 >= 20",
    "14*x1 + 1*x2 + 5*x4 >= 20",
    "7*x0**2 + 1*x2**2 + 10*x3**2 >= 20",
    "1*x2 + 10*x3 + 5*x4 >= 29",
    "14*x1**2 + 10*x3**2 + 5*x4**2 >= 29",
    "7*x0**2 + 14*x1**2 + 1*x2**2 >= 29",
    "14*x1 + 1*x2 + 10*x3 >= 29",
    "14*x1 + 1*x2 + 5*x4 >= 29",
    "7*x0**2 + 1*x2**2 + 10*x3**2 >= 29",
    "1*x2 + 10*x3 + 5*x4 >= 27",
    "14*x1**2 + 10*x3**2 + 5*x4**2 >= 27",
    "7*x0 + 14*x1 + 1*x2 >= 27",
    "14*x1 + 1*x2 + 10*x3 >= 27",
    "14*x1**2 + 1*x2**2 + 5*x4**2 >= 27",
    "7*x0 + 1*x2 + 10*x3 >= 27",
    "1*x2 + 10*x3 + 5*x4 >= 27",
    "14*x1 + 10*x3 + 5*x4 >= 27",
    "7*x0 + 14*x1 + 1*x2 >= 27",
    "14*x1 + 1*x2 + 10*x3 >= 27",
    "14*x1 + 1*x2 + 5*x4 >= 27",
    "7*x0**2 + 1*x2**2 + 10*x3**2 >= 27",
    "9*x2 + 3*x3 + 5*x4 >= 15",
    "7*x0 + 9*x2 + 5*x4 >= 15",
    "7*x0 + 9*x2 + 3*x3 >= 15",
    "13*x1 + 3*x3 + 5*x4 >= 15",
    "9*x2 + 3*x3 + 5*x4 >= 14",
    "7*x0 + 9*x2 + 5*x4 >= 14",
    "7*x0 + 9*x2 + 3*x3 >= 14",
    "13*x1 + 3*x3 + 5*x4 >= 14",
    "9*x2 + 3*x3 + 5*x4 >= 8",
    "7*x0 + 9*x2 + 5*x4 >= 8",
    "7*x0**2 + 9*x2**2 + 3*x3**2 >= 8",
    "13*x1**2 + 3*x3**2 + 5*x4**2 >= 8",
    "9*x2 + 3*x3 + 5*x4 >= 13",
    "7*x0 + 9*x2 + 5*x4 >= 13",
    "7*x0**2 + 9*x2**2 + 3*x3**2 >= 13",
    "13*x1**2 + 3*x3**2 + 5*x4**2 >= 13",
    "10*x0 - 9*x2 + 10*x4 >= 0",
    "7*x0**2 + 5*x4**2 <= 51",
    "14*x1 + 5*x4 <= 138",
    "7*x0 + 10*x3 <= 109",
    "1*x2 + 5*x4 <= 99",
    "7*x0 + 14*x1 <= 110",
    "10*x3 + 5*x4 <= 53",
    "7*x0**2 + 1*x2**2 <= 114",
    "14*x1**2 + 1*x2**2 <= 157",
    "1*x2**2 + 10*x3**2 <= 89",
    "14*x1**2 + 10*x3**2 <= 168",
    "7*x0 + 14*x1 + 1*x2 <= 109",
    "14*x1 + 1*x2 + 5*x4 <= 58",
    "7*x0**2 + 14*x1**2 + 5*x4**2 <= 164",
    "7*x0 + 14*x1 + 1*x2 + 10*x3 + 5*x4 <= 164",
    "9*x2 + 3*x3 <= 84",
    "7*x0**2 + 13*x1**2 <= 54",
    "13*x1 + 9*x2 <= 40",
    "13*x1 + 3*x3 <= 26",
    "7*x0 + 13*x1 + 9*x2 + 3*x3 + 5*x4 <= 26",
    "12*x0 + 7*x3 <= 172",
    "6*x1**2 + 13*x2**2 <= 55",
    "12*x0**2 + 3*x4**2 <= 226",
    "13*x2 + 7*x3 <= 100",
    "6*x1**2 + 7*x3**2 <= 227",
    "6*x1**2 + 3*x4**2 <= 134",
    "12*x0**2 + 6*x1**2 <= 88",
    "12*x0 + 6*x1 + 3*x4 <= 65",
    "12*x0 + 6*x1 + 13*x2 + 7*x3 + 3*x4 <= 65",
    "x0 == int(x0)",
    "x3 == int(x3)",
    "x4 == int(x4)"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
pasta = m.addVar(vtype=gp.GRB.INTEGER, name="pasta")
cantaloupe = m.addVar(vtype=gp.GRB.CONTINUOUS, name="cantaloupe")
cereal = m.addVar(vtype=gp.GRB.CONTINUOUS, name="cereal")
apples = m.addVar(vtype=gp.GRB.INTEGER, name="apples")
kale = m.addVar(vtype=gp.GRB.INTEGER, name="kale")


# Set objective function
m.setObjective(4.53*pasta**2 + 9.81*pasta*cantaloupe + 2.29*pasta*cereal + 8.81*pasta*apples + 4.72*pasta*kale + 8.46*cantaloupe**2 + 7.24*cantaloupe*cereal + 6.79*cantaloupe*apples + 1.09*cantaloupe*kale + 1.84*apples**2 + 3.77*apples*kale + 9.4*kale**2 + 9.68*pasta + 4.89*cantaloupe + 7.66*cereal + 4.29*apples, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(7*pasta + 14*cantaloupe + 1*cereal + 10*apples + 5*kale <= 172, "r0")
m.addConstr(7*pasta + 13*cantaloupe + 9*cereal + 3*apples + 5*kale <= 86, "r1")
m.addConstr(12*pasta + 6*cantaloupe + 13*cereal + 7*apples + 3*kale <= 243, "r2")
# ... (rest of the constraints from the JSON "constraints" field)


# 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)

```