```json
{
  "sym_variables": [
    ("x0", "apples"),
    ("x1", "black beans"),
    ("x2", "steaks"),
    ("x3", "protein bars"),
    ("x4", "strips of bacon"),
    ("x5", "fruit salads")
  ],
  "objective_function": "9*x0**2 + 6*x0*x1 + 3*x0*x2 + 7*x0*x3 + 8*x0*x4 + 7*x0*x5 + 7*x1**2 + 6*x1*x2 + 2*x1*x3 + 8*x1*x4 + 3*x1*x5 + 8*x2**2 + 8*x2*x3 + 1*x2*x4 + 2*x2*x5 + 4*x3**2 + 1*x3*x4 + 9*x3*x5 + 4*x4**2 + 8*x4*x5 + 9*x5**2 + 9*x0 + 7*x1 + 4*x2 + 3*x3 + 8*x4 + 3*x5",
  "constraints": [
    "5*x2**2 + 1*x4**2 >= 11",
    "2*x1 + 7*x2 >= 16",
    "5*x0 + 2*x1 >= 8",
    "2*x1**2 + 11*x3**2 >= 26",
    "7*x2 + 11*x3 >= 18",
    "5*x0**2 + 1*x4**2 >= 10",
    "7*x2 + 5*x5 >= 23",
    "2*x1 + 7*x2 + 11*x3 >= 25",
    "5*x0**2 + 2*x1**2 + 11*x3**2 >= 25",
    "2*x1 + 7*x2 + 11*x3 >= 23",
    "5*x0 + 2*x1 + 11*x3 >= 23",
    "5*x0 + 2*x1 + 7*x2 + 11*x3 + 1*x4 + 5*x5 >= 23",
    "10*x1 + 3*x3 >= 38",
    "10*x1 + 7*x4 >= 36",
    "7*x4 + 3*x5 >= 30",
    "3*x3**2 + 3*x5**2 >= 47",
    "5*x0 + 10*x1 + 9*x2 + 3*x3 + 7*x4 + 3*x5 >= 47",
    "-6*x1 + 7*x5 >= 0",
    "5*x0**2 + 11*x3**2 <= 155",
    "10*x1 + 3*x3 + 7*x4 <= 368",
    "5*x0 + 9*x2 + 3*x5 <= 92",
    "10*x1**2 + 3*x3**2 + 3*x5**2 <= 249",
    "5*x0 + 7*x4 + 3*x5 <= 117",
    "10*x1 + 9*x2 + 3*x3 <= 298",
    "5*x0**2 + 3*x3**2 + 7*x4**2 <= 298",
    "5*x0 + 10*x1 + 3*x5 <= 315",
    "5*x0 + 10*x1 + 9*x2 <= 135",
    "5*x0 + 2*x1 + 7*x2 + 11*x3 + 1*x4 + 5*x5 <= 157",
    "5*x0 + 10*x1 + 9*x2 + 3*x3 + 7*x4 + 3*x5 <= 384"
  ]
}
```

```python
from gurobipy import Model, GRB, quicksum

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

# Create variables
apples = m.addVar(vtype=GRB.INTEGER, name="apples")
black_beans = m.addVar(vtype=GRB.INTEGER, name="black_beans")
steaks = m.addVar(vtype=GRB.INTEGER, name="steaks")
protein_bars = m.addVar(vtype=GRB.INTEGER, name="protein_bars")
strips_of_bacon = m.addVar(vtype=GRB.INTEGER, name="strips_of_bacon")
fruit_salads = m.addVar(vtype=GRB.INTEGER, name="fruit_salads")


# Set objective function
m.setObjective(9*apples**2 + 6*apples*black_beans + 3*apples*steaks + 7*apples*protein_bars + 8*apples*strips_of_bacon + 7*apples*fruit_salads + 7*black_beans**2 + 6*black_beans*steaks + 2*black_beans*protein_bars + 8*black_beans*strips_of_bacon + 3*black_beans*fruit_salads + 8*steaks**2 + 8*steaks*protein_bars + 1*steaks*strips_of_bacon + 2*steaks*fruit_salads + 4*protein_bars**2 + 1*protein_bars*strips_of_bacon + 9*protein_bars*fruit_salads + 4*strips_of_bacon**2 + 8*strips_of_bacon*fruit_salads + 9*fruit_salads**2 + 9*apples + 7*black_beans + 4*steaks + 3*protein_bars + 8*strips_of_bacon + 3*fruit_salads, GRB.MINIMIZE)

# Add constraints
m.addConstr(5*steaks**2 + 1*strips_of_bacon**2 >= 11)
m.addConstr(2*black_beans + 7*steaks >= 16)
m.addConstr(5*apples + 2*black_beans >= 8)
m.addConstr(2*black_beans**2 + 11*protein_bars**2 >= 26)
m.addConstr(7*steaks + 11*protein_bars >= 18)
m.addConstr(5*apples**2 + 1*strips_of_bacon**2 >= 10)
m.addConstr(7*steaks + 5*fruit_salads >= 23)
m.addConstr(2*black_beans + 7*steaks + 11*protein_bars >= 25)
m.addConstr(5*apples**2 + 2*black_beans**2 + 11*protein_bars**2 >= 25)
m.addConstr(2*black_beans + 7*steaks + 11*protein_bars >= 23)
m.addConstr(5*apples + 2*black_beans + 11*protein_bars >= 23)
m.addConstr(5*apples + 2*black_beans + 7*steaks + 11*protein_bars + 1*strips_of_bacon + 5*fruit_salads >= 23)
m.addConstr(10*black_beans + 3*protein_bars >= 38)
m.addConstr(10*black_beans + 7*strips_of_bacon >= 36)
m.addConstr(7*strips_of_bacon + 3*fruit_salads >= 30)
m.addConstr(3*protein_bars**2 + 3*fruit_salads**2 >= 47)
m.addConstr(5*apples + 10*black_beans + 9*steaks + 3*protein_bars + 7*strips_of_bacon + 3*fruit_salads >= 47)
m.addConstr(-6*black_beans + 7*fruit_salads >= 0)
m.addConstr(5*apples**2 + 11*protein_bars**2 <= 155)
m.addConstr(10*black_beans + 3*protein_bars + 7*strips_of_bacon <= 368)
m.addConstr(5*apples + 9*steaks + 3*fruit_salads <= 92)
m.addConstr(10*black_beans**2 + 3*protein_bars**2 + 3*fruit_salads**2 <= 249)
m.addConstr(5*apples + 7*strips_of_bacon + 3*fruit_salads <= 117)
m.addConstr(10*black_beans + 9*steaks + 3*protein_bars <= 298)
m.addConstr(5*apples**2 + 3*protein_bars**2 + 7*strips_of_bacon**2 <= 298)
m.addConstr(5*apples + 10*black_beans + 3*fruit_salads <= 315)
m.addConstr(5*apples + 10*black_beans + 9*steaks <= 135)

m.addConstr(5*apples + 2*black_beans + 7*steaks + 11*protein_bars + 1*strips_of_bacon + 5*fruit_salads <= 157)
m.addConstr(5*apples + 10*black_beans + 9*steaks + 3*protein_bars + 7*strips_of_bacon + 3*fruit_salads <= 384)


# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print('\nCost: %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.")
else:
    print("Optimization ended with status:", m.status)

```
