```json
{
  "sym_variables": [
    ("x0", "bowls of pasta"),
    ("x1", "sashimi"),
    ("x2", "granola bars"),
    ("x3", "rotisserie chickens"),
    ("x4", "cantaloupes"),
    ("x5", "peanutbutter sandwiches"),
    ("x6", "apple pies")
  ],
  "objective_function": "9.77*x0**2 + 1.62*x0*x1 + 9.38*x0*x2 + 1.35*x0*x3 + 2.09*x0*x4 + 3.17*x0*x6 + 3.78*x1**2 + 5.98*x1*x2 + 4.17*x1*x3 + 2.03*x1*x4 + 4.39*x1*x5 + 3.65*x1*x6 + 6.06*x2*x3 + 3.89*x2*x4 + 9.25*x2*x5 + 3.25*x2*x6 + 4.38*x3*x4 + 4.37*x3*x5 + 8.32*x3*x6 + 6.97*x4*x5 + 6.11*x4*x6 + 6.67*x5**2 + 5.59*x5*x6 + 9.35*x6**2 + 9.92*x0 + 9.61*x1 + 6.44*x2 + 2.78*x3 + 6.04*x4 + 5.71*x5 + 2.2*x6",
  "constraints": [
    "1.58*x1 + 3.1*x3 >= 32",
    "1.83*x0 + 2.24*x4 >= 27",
    "1.83*x0 + 1.85*x2 >= 29",
    "1.83*x0 + 1.58*x1 + 1.85*x2 + 3.1*x3 + 2.24*x4 + 1.85*x5 + 0.44*x6 >= 29",
    "2.3*x2**2 + 2.77*x4**2 >= 21",
    "3.26*x1**2 + 2.3*x2**2 >= 23",
    "2.77*x4 + 0.06*x5 >= 26",
    "2.77*x4 + 3.31*x6 >= 37",
    "1.46*x0**2 + 3.33*x3**2 >= 32",
    "1.46*x0 + 0.06*x5 >= 28",
    "3.26*x1 + 0.06*x5 >= 41",
    "3.33*x3 + 3.31*x6 >= 35",
    "3.26*x1 + 3.31*x6 >= 27",
    "1.46*x0 + 3.26*x1 + 2.3*x2 + 3.33*x3 + 2.77*x4 + 0.06*x5 + 3.31*x6 >= 27",
    "9*x0 - 2*x1 >= 0",
    "-8*x0 + 7*x2 >= 0",
    "6*x5 - 4*x6 >= 0",
    "1.85*x2**2 + 3.1*x3**2 + 2.24*x4**2 <= 204",
    "1.83*x0 + 1.58*x1 + 3.1*x3 <= 118",
    "1.83*x0**2 + 2.24*x4**2 + 0.44*x6**2 <= 256",
    "1.58*x1 + 3.1*x3 + 0.44*x6 <= 175",
    "1.58*x1**2 + 3.1*x3**2 + 2.24*x4**2 <= 240",
    "1.83*x0 + 1.58*x1 + 1.85*x5 <= 96",
    "1.83*x0 + 1.58*x1 + 2.24*x4 <= 92",
    "1.85*x2 + 1.85*x5 + 0.44*x6 <= 267",
    "1.85*x2 + 3.1*x3 + 1.85*x5 <= 127",
    "1.58*x1 + 1.85*x5 + 0.44*x6 <= 193",
    "1.83*x0 + 1.85*x5 + 0.44*x6 <= 144",
    "1.83*x0**2 + 3.1*x3**2 + 2.24*x4**2 <= 164",
    "3.26*x1**2 + 2.77*x4**2 <= 170",
    "1.46*x0 + 2.3*x2 + 0.06*x5 <= 275",
    "3.26*x1**2 + 2.3*x2**2 + 2.77*x4**2 <= 230",
    "1.46*x0 + 0.06*x5 + 3.31*x6 <= 71",
    "1.46*x0**2 + 3.26*x1**2 + 0.06*x5**2 <= 91",
    "3.26*x1 + 2.3*x2 + 3.33*x3 <= 236",
    "r0 <= 328",
    "r1 <= 329"

  ]
}
```

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

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

# Create variables
x = m.addVars(7, lb=0.0, name=["x0", "x1", "x2", "x3", "x4", "x5", "x6"])

# Set integer constraints
x[1].vtype = GRB.INTEGER
x[2].vtype = GRB.INTEGER


# Set objective function
m.setObjective(9.77*x[0]**2 + 1.62*x[0]*x[1] + 9.38*x[0]*x[2] + 1.35*x[0]*x[3] + 2.09*x[0]*x[4] + 3.17*x[0]*x[6] + 3.78*x[1]**2 + 5.98*x[1]*x[2] + 4.17*x[1]*x[3] + 2.03*x[1]*x[4] + 4.39*x[1]*x[5] + 3.65*x[1]*x[6] + 6.06*x[2]*x[3] + 3.89*x[2]*x[4] + 9.25*x[2]*x[5] + 3.25*x[2]*x[6] + 4.38*x[3]*x[4] + 4.37*x[3]*x[5] + 8.32*x[3]*x[6] + 6.97*x[4]*x[5] + 6.11*x[4]*x[6] + 6.67*x[5]**2 + 5.59*x[5]*x[6] + 9.35*x[6]**2 + 9.92*x[0] + 9.61*x[1] + 6.44*x[2] + 2.78*x[3] + 6.04*x[4] + 5.71*x[5] + 2.2*x[6], GRB.MINIMIZE)


# Add constraints
m.addConstr(1.58*x[1] + 3.1*x[3] >= 32)
m.addConstr(1.83*x[0] + 2.24*x[4] >= 27)
m.addConstr(1.83*x[0] + 1.85*x[2] >= 29)
m.addConstr(1.83*x[0] + 1.58*x[1] + 1.85*x[2] + 3.1*x[3] + 2.24*x[4] + 1.85*x[5] + 0.44*x[6] >= 29)
m.addConstr(2.3*x[2]**2 + 2.77*x[4]**2 >= 21)
m.addConstr(3.26*x[1]**2 + 2.3*x[2]**2 >= 23)
m.addConstr(2.77*x[4] + 0.06*x[5] >= 26)
m.addConstr(2.77*x[4] + 3.31*x[6] >= 37)
m.addConstr(1.46*x[0]**2 + 3.33*x[3]**2 >= 32)
m.addConstr(1.46*x[0] + 0.06*x[5] >= 28)
m.addConstr(3.26*x[1] + 0.06*x[5] >= 41)
m.addConstr(3.33*x[3] + 3.31*x[6] >= 35)
m.addConstr(3.26*x[1] + 3.31*x[6] >= 27)
m.addConstr(1.46*x[0] + 3.26*x[1] + 2.3*x[2] + 3.33*x[3] + 2.77*x[4] + 0.06*x[5] + 3.31*x[6] >= 27)
m.addConstr(9*x[0] - 2*x[1] >= 0)
m.addConstr(-8*x[0] + 7*x[2] >= 0)
m.addConstr(6*x[5] - 4*x[6] >= 0)
m.addConstr(1.85*x[2]**2 + 3.1*x[3]**2 + 2.24*x[4]**2 <= 204)
m.addConstr(1.83*x[0] + 1.58*x[1] + 3.1*x[3] <= 118)
m.addConstr(1.83*x[0]**2 + 2.24*x[4]**2 + 0.44*x[6]**2 <= 256)
m.addConstr(1.58*x[1] + 3.1*x[3] + 0.44*x[6] <= 175)
m.addConstr(1.58*x[1]**2 + 3.1*x[3]**2 + 2.24*x[4]**2 <= 240)
m.addConstr(1.83*x[0] + 1.58*x[1] + 1.85*x[5] <= 96)
m.addConstr(1.83*x[0] + 1.58*x[1] + 2.24*x[4] <= 92)
m.addConstr(1.85*x[2] + 1.85*x[5] + 0.44*x[6] <= 267)
m.addConstr(1.85*x[2] + 3.1*x[3] + 1.85*x[5] <= 127)
m.addConstr(1.58*x[1] + 1.85*x[5] + 0.44*x[6] <= 193)
m.addConstr(1.83*x[0] + 1.85*x[5] + 0.44*x[6] <= 144)
m.addConstr(1.83*x[0]**2 + 3.1*x[3]**2 + 2.24*x[4]**2 <= 164)
m.addConstr(3.26*x[1]**2 + 2.77*x[4]**2 <= 170)
m.addConstr(1.46*x[0] + 2.3*x[2] + 0.06*x[5] <= 275)
m.addConstr(3.26*x[1]**2 + 2.3*x[2]**2 + 2.77*x[4]**2 <= 230)
m.addConstr(1.46*x[0] + 0.06*x[5] + 3.31*x[6] <= 71)
m.addConstr(1.46*x[0]**2 + 3.26*x[1]**2 + 0.06*x[5]**2 <= 91)
m.addConstr(3.26*x[1] + 2.3*x[2] + 3.33*x[3] <= 236)


r0 = 1.83*x[0] + 1.58*x[1] + 1.85*x[2] + 3.1*x[3] + 2.24*x[4] + 1.85*x[5] + 0.44*x[6] 
r1 = 1.46*x[0] + 3.26*x[1] + 2.3*x[2] + 3.33*x[3] + 2.77*x[4] + 0.06*x[5] + 3.31*x[6]

m.addConstr(r0 <= 328)
m.addConstr(r1 <= 329)


# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
    print('Obj: %g' % m.objVal)
elif m.status == GRB.INFEASIBLE:
    print("The problem is infeasible.")
else:
    print("The problem could not be solved to optimality.")

```