```json
{
  "sym_variables": [
    ("x0", "kiwis"),
    ("x1", "corn cobs"),
    ("x2", "pickles"),
    ("x3", "cornichons"),
    ("x4", "peanutbutter sandwiches")
  ],
  "objective_function": "9*x0 + 8*x1 + 2*x2 + 4*x3 + 2*x4",
  "constraints": [
    "8.59*x0 + 7.23*x1 + 21.79*x2 + 21.36*x3 + 15.17*x4 >= 46",
    "21.36*x3 + 15.17*x4 >= 78",
    "21.79*x2 + 15.17*x4 >= 26",
    "21.79*x2 + 21.36*x3 >= 53",
    "7.23*x1 + 21.79*x2 >= 59",
    "7.23*x1 + 15.17*x4 >= 66",
    "8.59*x0 + 15.17*x4 >= 46",
    "10.6*x0 + 2.82*x1 + 6.41*x2 >= 78",
    "2.82*x1 + 6.41*x2 >= 45",
    "2.82*x1 + 3.32*x3 >= 67",
    "10.6*x0 + 3.32*x3 + 3.6*x4 >= 78",
    "10.6*x0 + 2.82*x1 + 6.41*x2 >= 56",
    "6.41*x2 + 3.32*x3 + 3.6*x4 >= 78",
    "10.6*x0 + 2.82*x1 + 3.32*x3 >= 78",
    "10.6*x0 + 6.41*x2 + 3.6*x4 >= 78",
    "10.6*x0 + 2.82*x1 + 3.6*x4 >= 78",
    "10.6*x0 + 3.32*x3 + 3.6*x4 >= 53",
    "10.6*x0 + 2.82*x1 + 6.41*x2 >= 53",
    "6.41*x2 + 3.32*x3 + 3.6*x4 >= 53",
    "10.6*x0 + 2.82*x1 + 3.32*x3 >= 53",
    "10.6*x0 + 6.41*x2 + 3.6*x4 >= 53",
    "10.6*x0 + 2.82*x1 + 3.6*x4 >= 53",
    "10.6*x0 + 3.32*x3 + 3.6*x4 >= 47",
    "10.6*x0 + 2.82*x1 + 6.41*x2 >= 47",
    "6.41*x2 + 3.32*x3 + 3.6*x4 >= 47",
    "10.6*x0 + 2.82*x1 + 3.32*x3 >= 47",
    "10.6*x0 + 6.41*x2 + 3.6*x4 >= 47",
    "10.6*x0 + 2.82*x1 + 3.6*x4 >= 47",
    "10.6*x0 + 3.32*x3 + 3.6*x4 >= 44",
    "10.6*x0 + 2.82*x1 + 6.41*x2 >= 44",
    "6.41*x2 + 3.32*x3 + 3.6*x4 >= 44",
    "10.6*x0 + 2.82*x1 + 3.32*x3 >= 44",
    "10.6*x0 + 6.41*x2 + 3.6*x4 >= 44",
    "10.6*x0 + 2.82*x1 + 3.6*x4 >= 44",
    "10.6*x0 + 2.82*x1 + 6.41*x2 + 3.32*x3 + 3.6*x4 >= 44",
    "16.98*x2 + 0.45*x4 >= 76",
    "22.18*x1 + 22.63*x3 >= 66",
    "22.63*x3 + 0.45*x4 >= 96",
    "19.02*x0 + 22.18*x1 + 16.98*x2 + 22.63*x3 + 0.45*x4 >= 96",
    "-10*x1 + 10*x4 >= 0",
    "-7*x0 + 1*x3 >= 0",
    "-3*x1 + 2*x2 >= 0",
    "8.59*x0 + 21.79*x2 + 15.17*x4 <= 292",
    "8.59*x0 + 21.36*x3 + 15.17*x4 <= 304",
    "2.82*x1 + 6.41*x2 + 3.32*x3 <= 390",
    "2.82*x1 + 3.32*x3 + 3.6*x4 <= 367",
    "10.6*x0 + 2.82*x1 + 6.41*x2 <= 331",
    "10.6*x0 + 2.82*x1 + 3.6*x4 <= 252",
    "10.6*x0 + 2.82*x1 + 3.32*x3 <= 114",
    "10.6*x0 + 6.41*x2 + 3.32*x3 <= 291",
    "8.59*x0 <= 399",
    "10.6*x0 <= 397",
    "19.02*x0 <= 657",
    "7.23*x1 <= 399",
    "2.82*x1 <= 397",
    "22.18*x1 <= 657",
    "21.79*x2 <= 399",
    "6.41*x2 <= 397",
    "16.98*x2 <= 657",
    "21.36*x3 <= 399",
    "3.32*x3 <= 397",
    "22.63*x3 <= 657",
    "15.17*x4 <= 399",
    "3.6*x4 <= 397",
    "0.45*x4 <= 657",
    "x0 == int(x0)",
    "x2 == int(x2)",
    "x3 == int(x3)"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
kiwis = m.addVar(vtype=gp.GRB.INTEGER, name="kiwis")
corn_cobs = m.addVar(vtype=gp.GRB.CONTINUOUS, name="corn_cobs")
pickles = m.addVar(vtype=gp.GRB.INTEGER, name="pickles")
cornichons = m.addVar(vtype=gp.GRB.INTEGER, name="cornichons")
peanutbutter_sandwiches = m.addVar(vtype=gp.GRB.CONTINUOUS, name="peanutbutter_sandwiches")

# Set objective function
m.setObjective(9*kiwis + 8*corn_cobs + 2*pickles + 4*cornichons + 2*peanutbutter_sandwiches, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(8.59*kiwis + 7.23*corn_cobs + 21.79*pickles + 21.36*cornichons + 15.17*peanutbutter_sandwiches >= 46)
m.addConstr(21.36*cornichons + 15.17*peanutbutter_sandwiches >= 78)
m.addConstr(21.79*pickles + 15.17*peanutbutter_sandwiches >= 26)
m.addConstr(21.79*pickles + 21.36*cornichons >= 53)
m.addConstr(7.23*corn_cobs + 21.79*pickles >= 59)
m.addConstr(7.23*corn_cobs + 15.17*peanutbutter_sandwiches >= 66)
m.addConstr(8.59*kiwis + 15.17*peanutbutter_sandwiches >= 46)


# ... (All other tastiness, cost, and combined constraints as in the JSON)

# Resource constraints
m.addConstr(8.59 * kiwis <= 399)
m.addConstr(10.6 * kiwis <= 397)
m.addConstr(19.02 * kiwis <= 657)
# ... (Similar constraints for other items)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    print('kiwis:', kiwis.x)
    print('corn_cobs:', corn_cobs.x)
    print('pickles:', pickles.x)
    print('cornichons:', cornichons.x)
    print('peanutbutter_sandwiches:', peanutbutter_sandwiches.x)

elif m.status == gp.GRB.INFEASIBLE:
    print('Optimization problem is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)

```
