```json
{
  "sym_variables": [
    ("x0", "kiwis"),
    ("x1", "hamburgers"),
    ("x2", "strips of bacon"),
    ("x3", "chicken breasts")
  ],
  "objective_function": "4.85 * x0 + 5.61 * x1 + 8.82 * x2 + 6.75 * x3",
  "constraints": [
    "8 * x1 + 5 * x3 >= 26",
    "8 * x0 + 9 * x2 >= 27",
    "8 * x1 + 9 * x2 >= 25",
    "8 * x0 + 8 * x1 >= 14",
    "5 * x2 + 1 * x3 >= 36",
    "7 * x1 + 5 * x2 >= 34",
    "2 * x0 + 5 * x2 + 1 * x3 >= 34",
    "7 * x1 + 5 * x2 + 1 * x3 >= 34",
    "2 * x0 + 7 * x1 + 5 * x2 >= 34",
    "2 * x0 + 5 * x2 + 1 * x3 >= 26",
    "7 * x1 + 5 * x2 + 1 * x3 >= 26",
    "2 * x0 + 7 * x1 + 5 * x2 >= 26",
    "2 * x0 + 5 * x2 + 1 * x3 >= 19",
    "7 * x1 + 5 * x2 + 1 * x3 >= 19",
    "2 * x0 + 7 * x1 + 5 * x2 >= 19",
    "8 * x0 + 9 * x2 <= 74",
    "8 * x0 + 5 * x3 <= 104",
    "8 * x1 + 9 * x2 + 5 * x3 <= 93",
    "8 * x0 + 8 * x1 + 9 * x2 + 5 * x3 <= 93",
    "7 * x1 + 5 * x2 <= 113",
    "2 * x0 + 7 * x1 + 1 * x3 <= 93",
    "2 * x0 + 5 * x2 + 1 * x3 <= 46",
    "2 * x0 + 7 * x1 + 5 * x2 + 1 * x3 <= 46",
    "8 * x0 + 8 * x1 + 9 * x2 + 5 * x3 <= 123",  // Resource constraint r0
    "2 * x0 + 7 * x1 + 5 * x2 + 1 * x3 <= 155"   // Resource constraint r1
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
kiwis = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="kiwis")
hamburgers = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="hamburgers")
bacon = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="bacon")
chicken = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="chicken")

# Set objective function
m.setObjective(4.85 * kiwis + 5.61 * hamburgers + 8.82 * bacon + 6.75 * chicken, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(8 * hamburgers + 5 * chicken >= 26)
m.addConstr(8 * kiwis + 9 * bacon >= 27)
m.addConstr(8 * hamburgers + 9 * bacon >= 25)
m.addConstr(8 * kiwis + 8 * hamburgers >= 14)
m.addConstr(5 * bacon + 1 * chicken >= 36)
m.addConstr(7 * hamburgers + 5 * bacon >= 34)
m.addConstr(2 * kiwis + 5 * bacon + 1 * chicken >= 34)
m.addConstr(7 * hamburgers + 5 * bacon + 1 * chicken >= 34)
m.addConstr(2 * kiwis + 7 * hamburgers + 5 * bacon >= 34)
m.addConstr(2 * kiwis + 5 * bacon + 1 * chicken >= 26)
m.addConstr(7 * hamburgers + 5 * bacon + 1 * chicken >= 26)
m.addConstr(2 * kiwis + 7 * hamburgers + 5 * bacon >= 26)
m.addConstr(2 * kiwis + 5 * bacon + 1 * chicken >= 19)
m.addConstr(7 * hamburgers + 5 * bacon + 1 * chicken >= 19)
m.addConstr(2 * kiwis + 7 * hamburgers + 5 * bacon >= 19)
m.addConstr(8 * kiwis + 9 * bacon <= 74)
m.addConstr(8 * kiwis + 5 * chicken <= 104)
m.addConstr(8 * hamburgers + 9 * bacon + 5 * chicken <= 93)
m.addConstr(8 * kiwis + 8 * hamburgers + 9 * bacon + 5 * chicken <= 93)
m.addConstr(7 * hamburgers + 5 * bacon <= 113)
m.addConstr(2 * kiwis + 7 * hamburgers + 1 * chicken <= 93)
m.addConstr(2 * kiwis + 5 * bacon + 1 * chicken <= 46)
m.addConstr(2 * kiwis + 7 * hamburgers + 5 * bacon + 1 * chicken <= 46)
m.addConstr(8 * kiwis + 8 * hamburgers + 9 * bacon + 5 * chicken <= 123)
m.addConstr(2 * kiwis + 7 * hamburgers + 5 * bacon + 1 * chicken <= 155)


# 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:", m.status)

```
