```json
{
  "sym_variables": [
    ("x0", "lemons"),
    ("x1", "chicken thighs"),
    ("x2", "corn cobs"),
    ("x3", "cheeseburgers")
  ],
  "objective_function": "4.27*x0 + 7.35*x1 + 1.78*x2 + 6.68*x3",
  "constraints": [
    "8.84*x1 + 9.92*x2 + 7.71*x3 >= 32",
    "4.64*x0 + 8.84*x1 + 9.92*x2 >= 32",
    "4.64*x0 + 8.84*x1 + 7.71*x3 >= 32",
    "8.84*x1 + 9.92*x2 + 7.71*x3 >= 52",
    "4.64*x0 + 8.84*x1 + 9.92*x2 >= 52",
    "4.64*x0 + 8.84*x1 + 7.71*x3 >= 52",
    "8.84*x1 + 9.92*x2 + 7.71*x3 >= 47",
    "4.64*x0 + 8.84*x1 + 9.92*x2 >= 47",
    "4.64*x0 + 8.84*x1 + 7.71*x3 >= 47",
    "6.51*x1 + 5.58*x2 >= 49",
    "4.0*x0 + 6.51*x1 + 1.41*x3 >= 43",
    "6.51*x1 + 5.58*x2 + 1.41*x3 >= 43",
    "4.0*x0 + 6.51*x1 + 1.41*x3 >= 47",
    "6.51*x1 + 5.58*x2 + 1.41*x3 >= 47",
    "9.92*x2 + 7.71*x3 <= 196",
    "4.64*x0 + 7.71*x3 <= 190",
    "4.64*x0 + 8.84*x1 + 7.71*x3 <= 236",
    "4.64*x0 + 8.84*x1 + 9.92*x2 <= 204",
    "4.64*x0 + 8.84*x1 + 9.92*x2 + 7.71*x3 <= 204",
    "4.0*x0 + 5.58*x2 <= 60",
    "4.0*x0 + 6.51*x1 <= 69",
    "4.0*x0 + 1.41*x3 <= 163",
    "4.0*x0 + 6.51*x1 + 5.58*x2 <= 94",
    "4.0*x0 + 5.58*x2 + 1.41*x3 <= 136",
    "6.51*x1 + 5.58*x2 + 1.41*x3 <= 169",
    "4.0*x0 + 6.51*x1 + 1.41*x3 <= 211",
    "4.0*x0 + 6.51*x1 + 5.58*x2 + 1.41*x3 <= 211",
    "x0 == int(x0)",
    "x1 == int(x1)"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
lemons = m.addVar(vtype=gp.GRB.INTEGER, name="lemons")
chicken_thighs = m.addVar(vtype=gp.GRB.INTEGER, name="chicken_thighs")
corn_cobs = m.addVar(vtype=gp.GRB.CONTINUOUS, name="corn_cobs")
cheeseburgers = m.addVar(vtype=gp.GRB.CONTINUOUS, name="cheeseburgers")

# Set objective function
m.setObjective(4.27 * lemons + 7.35 * chicken_thighs + 1.78 * corn_cobs + 6.68 * cheeseburgers, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(8.84 * chicken_thighs + 9.92 * corn_cobs + 7.71 * cheeseburgers >= 32)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 9.92 * corn_cobs >= 32)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 7.71 * cheeseburgers >= 32)
m.addConstr(8.84 * chicken_thighs + 9.92 * corn_cobs + 7.71 * cheeseburgers >= 52)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 9.92 * corn_cobs >= 52)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 7.71 * cheeseburgers >= 52)
m.addConstr(8.84 * chicken_thighs + 9.92 * corn_cobs + 7.71 * cheeseburgers >= 47)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 9.92 * corn_cobs >= 47)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 7.71 * cheeseburgers >= 47)
m.addConstr(6.51 * chicken_thighs + 5.58 * corn_cobs >= 49)
m.addConstr(4.0 * lemons + 6.51 * chicken_thighs + 1.41 * cheeseburgers >= 43)
m.addConstr(6.51 * chicken_thighs + 5.58 * corn_cobs + 1.41 * cheeseburgers >= 43)
m.addConstr(4.0 * lemons + 6.51 * chicken_thighs + 1.41 * cheeseburgers >= 47)
m.addConstr(6.51 * chicken_thighs + 5.58 * corn_cobs + 1.41 * cheeseburgers >= 47)
m.addConstr(9.92 * corn_cobs + 7.71 * cheeseburgers <= 196)
m.addConstr(4.64 * lemons + 7.71 * cheeseburgers <= 190)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 7.71 * cheeseburgers <= 236)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 9.92 * corn_cobs <= 204)
m.addConstr(4.64 * lemons + 8.84 * chicken_thighs + 9.92 * corn_cobs + 7.71 * cheeseburgers <= 204)
m.addConstr(4.0 * lemons + 5.58 * corn_cobs <= 60)
m.addConstr(4.0 * lemons + 6.51 * chicken_thighs <= 69)
m.addConstr(4.0 * lemons + 1.41 * cheeseburgers <= 163)
m.addConstr(4.0 * lemons + 6.51 * chicken_thighs + 5.58 * corn_cobs <= 94)
m.addConstr(4.0 * lemons + 5.58 * corn_cobs + 1.41 * cheeseburgers <= 136)
m.addConstr(6.51 * chicken_thighs + 5.58 * corn_cobs + 1.41 * cheeseburgers <= 169)
m.addConstr(4.0 * lemons + 6.51 * chicken_thighs + 1.41 * cheeseburgers <= 211)
m.addConstr(4.0 * lemons + 6.51 * chicken_thighs + 5.58 * corn_cobs + 1.41 * cheeseburgers <= 211)


# 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("The model is infeasible.")
else:
    print("Optimization ended with status %d" % m.status)

```