```json
{
  "sym_variables": [
    ("x0", "sashimi"),
    ("x1", "bowls of pasta"),
    ("x2", "bagged salads"),
    ("x3", "black beans"),
    ("x4", "ham sandwiches")
  ],
  "objective_function": "2.28*x0**2 + 8.55*x0*x1 + 9.3*x0*x4 + 1.3*x1**2 + 9.02*x1*x2 + 7.28*x1*x3 + 2.98*x1*x4 + 7.96*x2**2 + 5.67*x2*x3 + 9.76*x3*x4 + 9.68*x2",
  "constraints": [
    "11*x1**2 + 14*x3**2 >= 56",
    "11*x0 + 10*x1 >= 54",
    "10*x1 + 14*x2 + 8*x4 >= 51",
    "11*x0 + 14*x3 + 8*x4 >= 51",
    "10*x1 + 14*x2 + 8*x4 >= 62",
    "11*x0 + 14*x3 + 8*x4 >= 62",
    "13*x1**2 + 13*x3**2 >= 38",
    "4*x0 + 13*x1 >= 49",
    "13*x1**2 + 9*x4**2 >= 33",
    "4*x0**2 + 13*x3**2 >= 52",
    "4*x0 + 9*x4 >= 41",
    "13*x1 + 13*x3 + 9*x4 >= 66",
    "4*x0 + 13*x1 + 7*x2 >= 66",
    "7*x2 + 13*x3 + 9*x4 >= 66",
    "13*x1**2 + 13*x3**2 + 9*x4**2 >= 54",
    "4*x0**2 + 13*x1**2 + 7*x2**2 >= 54",
    "7*x2 + 13*x3 + 9*x4 >= 54",
    "13*x1 + 13*x3 + 9*x4 >= 69",
    "4*x0 + 13*x1 + 7*x2 >= 69",
    "7*x2**2 + 13*x3**2 + 9*x4**2 >= 69",
    "8*x0 + 11*x1 >= 13",
    "8*x0**2 + 5*x2**2 >= 7",
    "11*x1**2 + 2*x3**2 >= 11",
    "8*x0 + 2*x3 + 8*x4 >= 8",
    "8*x0 + 5*x2 + 8*x4 >= 8",
    "8*x0 + 11*x1 + 2*x3 >= 8",
    "8*x0 + 11*x1 + 8*x4 >= 8",
    "5*x2 + 2*x3 + 8*x4 >= 8",
    "8*x0 + 11*x1 + 5*x2 >= 8",
    "11*x1**2 + 2*x3**2 + 8*x4**2 >= 8",
    "8*x0 + 2*x3 + 8*x4 >= 11",
    "8*x0**2 + 5*x2**2 + 8*x4**2 >= 11",
    "8*x0 + 11*x1 + 2*x3 >= 11",
    "8*x0**2 + 11*x1**2 + 8*x4**2 >= 11",
    "5*x2 + 2*x3 + 8*x4 >= 11",
    "8*x0 + 11*x1 + 5*x2 >= 11",
    "11*x1 + 2*x3 + 8*x4 >= 11",
    "8*x0 + 2*x3 + 8*x4 >= 12",
    "8*x0 + 5*x2 + 8*x4 >= 12",
    "8*x0**2 + 11*x1**2 + 2*x3**2 >= 12",
    "8*x0 + 11*x1 + 8*x4 >= 12",
    "5*x2**2 + 2*x3**2 + 8*x4**2 >= 12",
    "8*x0 + 11*x1 + 5*x2 >= 12",
    "11*x1 + 2*x3 + 8*x4 >= 12",
    "8*x0 + 2*x3 + 8*x4 >= 10",
    "8*x0**2 + 5*x2**2 + 8*x4**2 >= 10",
    "8*x0**2 + 11*x1**2 + 2*x3**2 >= 10",
    "8*x0 + 11*x1 + 8*x4 >= 10",
    "5*x2**2 + 2*x3**2 + 8*x4**2 >= 10",
    "8*x0 + 11*x1 + 5*x2 >= 10",
    "11*x1 + 2*x3 + 8*x4 >= 10",
    "8*x0 + 2*x3 + 8*x4 >= 16",
    "8*x0**2 + 5*x2**2 + 8*x4**2 >= 16",
    "8*x0 + 11*x1 + 2*x3 >= 16",
    "8*x0 + 11*x1 + 8*x4 >= 16",
    "5*x2 + 2*x3 + 8*x4 >= 16",
    "8*x0 + 11*x1 + 5*x2 >= 16",
    "11*x1**2 + 2*x3**2 + 8*x4**2 >= 16",
    "8*x0 + 2*x3 + 8*x4 >= 12",
    "8*x0 + 5*x2 + 8*x4 >= 12",
    "8*x0 + 11*x1 + 2*x3 >= 12",
    "8*x0 + 11*x1 + 8*x4 >= 12",
    "5*x2 + 2*x3 + 8*x4 >= 12",
    "8*x0 + 11*x1 + 5*x2 >= 12",
    "11*x1**2 + 2*x3**2 + 8*x4**2 >= 12",
    "8*x0**2 + 2*x3**2 + 8*x4**2 >= 13",
    "8*x0 + 5*x2 + 8*x4 >= 13",
    "8*x0 + 11*x1 + 2*x3 >= 13",
    "8*x0 + 11*x1 + 8*x4 >= 13",
    "5*x2 + 2*x3 + 8*x4 >= 13",
    "8*x0 + 11*x1 + 5*x2 >= 13",
    "11*x1 + 2*x3 + 8*x4 >= 13",
    "14*x2 + 14*x3 <= 302",
    "14*x2 + 8*x4 <= 274",
    "10*x1**2 + 8*x4**2 <= 153",
    "11*x0 + 14*x2 <= 257",
    "10*x1 + 14*x3 <= 144",
    "10*x1 + 14*x2 <= 247",
    "10*x1 + 14*x3 + 8*x4 <= 219",
    "11*x0 + 10*x1 + 14*x3 <= 261",
    "10*x1 + 14*x2 + 8*x4 <= 304",
    "11*x0 + 10*x1 + 14*x2 + 14*x3 + 8*x4 <= 304",
    "4*x0 + 7*x2 <= 151",
    "4*x0 + 7*x2 + 13*x3 <= 114",
    "4*x0 + 13*x1 + 7*x2 <= 264",
    "4*x0**2 + 7*x2**2 + 9*x4**2 <= 74",
    "4*x0 + 13*x1 + 7*x2 + 13*x3 + 9*x4 <= 74",
    "8*x0 + 11*x1 <= 67",
    "11*x1 + 2*x3 <= 55",
    "5*x2 + 2*x3 <= 20",
    "8*x0**2 + 8*x4**2 <= 29",
    "8*x0 + 2*x3 <= 19",
    "8*x0**2 + 5*x2**2 <= 44",
    "11*x1**2 + 8*x4**2 <= 80",
    "2*x3 + 8*x4 <= 56",
    "8*x0 + 11*x1 + 5*x2 + 2*x3 + 8*x4 <= 56",
    "11*x0 <= 311",
    "4*x0 <= 348",
    "8*x0 <= 81"

  ]
}
```

```python
from gurobipy import *

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

# Create variables
sashimi = m.addVar(vtype=GRB.CONTINUOUS, name="sashimi")
pasta = m.addVar(vtype=GRB.INTEGER, name="bowls_of_pasta")
salad = m.addVar(vtype=GRB.INTEGER, name="bagged_salads")
beans = m.addVar(vtype=GRB.INTEGER, name="black_beans")
sandwich = m.addVar(vtype=GRB.INTEGER, name="ham_sandwiches")


# Set objective
m.setObjective(2.28*sashimi**2 + 8.55*sashimi*pasta + 9.3*sashimi*sandwich + 1.3*pasta**2 + 9.02*pasta*salad + 7.28*pasta*beans + 2.98*pasta*sandwich + 7.96*salad**2 + 5.67*salad*beans + 9.76*beans*sandwich + 9.68*salad, GRB.MAXIMIZE)

# Add constraints
m.addConstr(11*pasta**2 + 14*beans**2 >= 56)
m.addConstr(11*sashimi + 10*pasta >= 54)
m.addConstr(10*pasta + 14*salad + 8*sandwich >= 51)
m.addConstr(11*sashimi + 14*beans + 8*sandwich >= 51)
m.addConstr(10*pasta + 14*salad + 8*sandwich >= 62)
m.addConstr(11*sashimi + 14*beans + 8*sandwich >= 62)

# ... (All other constraints as defined in the JSON "constraints" section)

m.addConstr(11 * sashimi <= 311)
m.addConstr(4 * sashimi <= 348)
m.addConstr(8 * sashimi <= 81)


# Optimize model
m.optimize()

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('Optimization problem is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)

```
