```json
{
  "sym_variables": [
    ("x0", "cherry pies"),
    ("x1", "tomatoes"),
    ("x2", "ravioli"),
    ("x3", "rotisserie chickens")
  ],
  "objective_function": "6.18 * x0 + 1.21 * x1 + 2.81 * x2 + 6.74 * x3",
  "constraints": [
    "5 * x0 + 2 * x1 + 8 * x2 + 2 * x3 <= 82",
    "8 * x0 + 8 * x1 + 2 * x2 + 2 * x3 <= 60",
    "2 * x1 + 2 * x3 >= 7",
    "5 * x0 + 2 * x3 >= 10",
    "5 * x0 + 8 * x2 >= 18",
    "5 * x0 + 2 * x1 >= 6",
    "8 * x0 + 2 * x2 + 2 * x3 >= 10",
    "8 * x0 + 8 * x1 + 2 * x3 >= 10",
    "8 * x1 + 2 * x2 + 2 * x3 >= 10",
    "8 * x0 + 2 * x2 + 2 * x3 >= 15",
    "8 * x0 + 8 * x1 + 2 * x3 >= 15",
    "8 * x1 + 2 * x2 + 2 * x3 >= 15",
    "8 * x0 + 2 * x2 + 2 * x3 >= 15",
    "8 * x0 + 8 * x1 + 2 * x3 >= 15",
    "8 * x1 + 2 * x2 + 2 * x3 >= 15",
    "5 * x0 + 2 * x1 <= 27",
    "5 * x0 + 2 * x3 <= 51",
    "5 * x0 + 8 * x2 <= 42",
    "5 * x0 + 2 * x1 + 8 * x2 + 2 * x3 <= 42",
    "8 * x0 + 2 * x2 <= 34",
    "2 * x2 + 2 * x3 <= 56",
    "8 * x0 + 8 * x1 + 2 * x2 + 2 * x3 <= 56"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
cherry_pies = m.addVar(lb=0, name="cherry_pies")
tomatoes = m.addVar(lb=0, name="tomatoes")
ravioli = m.addVar(lb=0, name="ravioli")
rotisserie_chickens = m.addVar(lb=0, name="rotisserie_chickens")


# Set objective function
m.setObjective(6.18 * cherry_pies + 1.21 * tomatoes + 2.81 * ravioli + 6.74 * rotisserie_chickens, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(5 * cherry_pies + 2 * tomatoes + 8 * ravioli + 2 * rotisserie_chickens <= 82, "dollar_cost")
m.addConstr(8 * cherry_pies + 8 * tomatoes + 2 * ravioli + 2 * rotisserie_chickens <= 60, "carbohydrates")
m.addConstr(2 * tomatoes + 2 * rotisserie_chickens >= 7, "tomatoes_rotisserie_chickens_cost")
m.addConstr(5 * cherry_pies + 2 * rotisserie_chickens >= 10, "cherry_pies_rotisserie_chickens_cost")
m.addConstr(5 * cherry_pies + 8 * ravioli >= 18, "cherry_pies_ravioli_cost")
m.addConstr(5 * cherry_pies + 2 * tomatoes >= 6, "cherry_pies_tomatoes_cost")

m.addConstr(8 * cherry_pies + 2 * ravioli + 2 * rotisserie_chickens >= 10, "carbs1")
m.addConstr(8 * cherry_pies + 8 * tomatoes + 2 * rotisserie_chickens >= 10, "carbs2")
m.addConstr(8 * tomatoes + 2 * ravioli + 2 * rotisserie_chickens >= 10, "carbs3")
m.addConstr(8 * cherry_pies + 2 * ravioli + 2 * rotisserie_chickens >= 15, "carbs4")
m.addConstr(8 * cherry_pies + 8 * tomatoes + 2 * rotisserie_chickens >= 15, "carbs5")
m.addConstr(8 * tomatoes + 2 * ravioli + 2 * rotisserie_chickens >= 15, "carbs6")
m.addConstr(8 * cherry_pies + 2 * ravioli + 2 * rotisserie_chickens >= 15, "carbs7")
m.addConstr(8 * cherry_pies + 8 * tomatoes + 2 * rotisserie_chickens >= 15, "carbs8")
m.addConstr(8 * tomatoes + 2 * ravioli + 2 * rotisserie_chickens >= 15, "carbs9")


m.addConstr(5 * cherry_pies + 2 * tomatoes <= 27, "cherry_pies_tomatoes_cost_ub")
m.addConstr(5 * cherry_pies + 2 * rotisserie_chickens <= 51, "cherry_pies_rotisserie_chickens_cost_ub")
m.addConstr(5 * cherry_pies + 8 * ravioli <= 42, "cherry_pies_ravioli_cost_ub")
m.addConstr(5 * cherry_pies + 2 * tomatoes + 8 * ravioli + 2 * rotisserie_chickens <= 42, "total_cost_ub")
m.addConstr(8 * cherry_pies + 2 * ravioli <= 34, "cherry_pies_ravioli_carbs_ub")
m.addConstr(2 * ravioli + 2 * rotisserie_chickens <= 56, "ravioli_rotisserie_chickens_carbs_ub")
m.addConstr(8 * cherry_pies + 8 * tomatoes + 2 * ravioli + 2 * rotisserie_chickens <= 56, "total_carbs_ub")



# 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 problem is infeasible.")
else:
    print("The problem could not be solved to optimality.")

```