```json
{
  "sym_variables": [
    ("x0", "cheeseburgers"),
    ("x1", "cornichons"),
    ("x2", "milkshakes"),
    ("x3", "bowls of instant ramen"),
    ("x4", "blueberry pies")
  ],
  "objective_function": "5*x0 + 6*x1 + 8*x2 + 7*x3 + 8*x4",
  "constraints": [
    "3.44*x0 + 2.96*x1 >= 16",
    "2.96*x1 + 1.88*x3 + 6.79*x4 >= 31",
    "2.96*x1 + 0.23*x2 + 1.88*x3 >= 31",
    "0.23*x2 + 1.88*x3 + 6.79*x4 >= 31",
    "3.44*x0 + 1.88*x3 + 6.79*x4 >= 31",
    "2.96*x1 + 1.88*x3 + 6.79*x4 >= 23",
    "2.96*x1 + 0.23*x2 + 1.88*x3 >= 23",
    "0.23*x2 + 1.88*x3 + 6.79*x4 >= 23",
    "3.44*x0 + 1.88*x3 + 6.79*x4 >= 23",
    "2.96*x1 + 1.88*x3 + 6.79*x4 >= 39",
    "2.96*x1 + 0.23*x2 + 1.88*x3 >= 39",
    "0.23*x2 + 1.88*x3 + 6.79*x4 >= 39",
    "3.44*x0 + 1.88*x3 + 6.79*x4 >= 39",
    "2.96*x1 + 1.88*x3 + 6.79*x4 >= 36",
    "2.96*x1 + 0.23*x2 + 1.88*x3 >= 36",
    "0.23*x2 + 1.88*x3 + 6.79*x4 >= 36",
    "3.44*x0 + 1.88*x3 + 6.79*x4 >= 36",
    "3.44*x0 + 2.96*x1 + 0.23*x2 + 1.88*x3 + 6.79*x4 >= 36",
    "1.59*x1 + 5.85*x2 >= 15",
    "1.59*x1 + 4.71*x4 >= 19",
    "0.38*x0 + 3.98*x3 >= 35",
    "0.38*x0 + 4.71*x4 >= 33",
    "3.98*x3 + 4.71*x4 >= 15",
    "5.85*x2 + 4.71*x4 >= 43",
    "0.38*x0 + 1.59*x1 >= 40",
    "0.38*x0 + 1.59*x1 + 3.98*x3 >= 46",
    "1.59*x1 + 5.85*x2 + 4.71*x4 >= 46",
    "1.59*x1 + 3.98*x3 + 4.71*x4 >= 46",
    "1.59*x1 + 5.85*x2 + 3.98*x3 >= 46",
    "0.38*x0 + 1.59*x1 + 3.98*x3 >= 31",
    "1.59*x1 + 5.85*x2 + 4.71*x4 >= 31",
    "1.59*x1 + 3.98*x3 + 4.71*x4 >= 31",
    "1.59*x1 + 5.85*x2 + 3.98*x3 >= 31",
    "0.38*x0 + 1.59*x1 + 3.98*x3 >= 28",
    "1.59*x1 + 5.85*x2 + 4.71*x4 >= 28",
    "1.59*x1 + 3.98*x3 + 4.71*x4 >= 28",
    "1.59*x1 + 5.85*x2 + 3.98*x3 >= 28",
    "0.38*x0 + 1.59*x1 + 3.98*x3 >= 44",
    "1.59*x1 + 5.85*x2 + 4.71*x4 >= 44",
    "1.59*x1 + 3.98*x3 + 4.71*x4 >= 44",
    "1.59*x1 + 5.85*x2 + 3.98*x3 >= 44",
    "0.38*x0 + 1.59*x1 + 5.85*x2 + 3.98*x3 + 4.71*x4 >= 44",
    "-8*x3 + 5*x4 >= 0",
    "2.96*x1 + 0.23*x2 <= 122",
    "0.23*x2 + 1.88*x3 <= 64",
    "3.44*x0 + 6.79*x4 <= 116",
    "2.96*x1 + 6.79*x4 <= 139",
    "2.96*x1 + 0.23*x2 + 6.79*x4 <= 181",
    "5.85*x2 + 3.98*x3 <= 209",
    "0.38*x0 + 5.85*x2 <= 204",
    "1.59*x1 + 3.98*x3 <= 109",
    "0.38*x0 + 3.98*x3 <= 152",
    "5.85*x2 + 4.71*x4 <= 195",
    "0.38*x0 + 4.71*x4 <= 151",
    "0.38*x0 + 1.59*x1 + 5.85*x2 <= 205",
    "0.38*x0 + 1.59*x1 + 3.98*x3 <= 130",
    "0.38*x0 + 1.59*x1 + 4.71*x4 <= 162"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
cheeseburgers = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="cheeseburgers")
cornichons = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="cornichons")
milkshakes = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="milkshakes")
ramen = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="bowls_of_instant_ramen")
pies = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="blueberry_pies")

# Set objective function
m.setObjective(5*cheeseburgers + 6*cornichons + 8*milkshakes + 7*ramen + 8*pies, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(3.44*cheeseburgers + 2.96*cornichons >= 16)
m.addConstr(2.96*cornichons + 1.88*ramen + 6.79*pies >= 31)
m.addConstr(2.96*cornichons + 0.23*milkshakes + 1.88*ramen >= 31)
m.addConstr(0.23*milkshakes + 1.88*ramen + 6.79*pies >= 31)
m.addConstr(3.44*cheeseburgers + 1.88*ramen + 6.79*pies >= 31)
m.addConstr(2.96*cornichons + 1.88*ramen + 6.79*pies >= 23)
m.addConstr(2.96*cornichons + 0.23*milkshakes + 1.88*ramen >= 23)
m.addConstr(0.23*milkshakes + 1.88*ramen + 6.79*pies >= 23)
m.addConstr(3.44*cheeseburgers + 1.88*ramen + 6.79*pies >= 23)
m.addConstr(2.96*cornichons + 1.88*ramen + 6.79*pies >= 39)
m.addConstr(2.96*cornichons + 0.23*milkshakes + 1.88*ramen >= 39)
m.addConstr(0.23*milkshakes + 1.88*ramen + 6.79*pies >= 39)
m.addConstr(3.44*cheeseburgers + 1.88*ramen + 6.79*pies >= 39)
m.addConstr(2.96*cornichons + 1.88*ramen + 6.79*pies >= 36)
m.addConstr(2.96*cornichons + 0.23*milkshakes + 1.88*ramen >= 36)
m.addConstr(0.23*milkshakes + 1.88*ramen + 6.79*pies >= 36)
m.addConstr(3.44*cheeseburgers + 1.88*ramen + 6.79*pies >= 36)
m.addConstr(3.44*cheeseburgers + 2.96*cornichons + 0.23*milkshakes + 1.88*ramen + 6.79*pies >= 36)
# ... (rest of the constraints)


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

```