```json
{
  "sym_variables": [
    ("x0", "green beans"),
    ("x1", "protein bars"),
    ("x2", "cornichons")
  ],
  "objective_function": "4.82*x0 + 2.3*x1 + 7.85*x2",
  "constraints": [
    "23*x0 + 21*x1 + 21*x2 >= 62",
    "21*x0 + 1*x1 >= 49",
    "1*x1 + 31*x2 >= 41",
    "21*x0 + 1*x1 + 31*x2 >= 37",
    "22*x1 + 29*x2 >= 98",
    "13*x0 + 22*x1 >= 65",
    "13*x0 + 22*x1 + 29*x2 >= 78",
    "5*x1 + 16*x2 >= 59",
    "11*x0 + 16*x2 >= 95",
    "11*x0 + 5*x1 >= 129",
    "23*x0 + 21*x1 <= 128",
    "23*x0 + 21*x2 <= 201",
    "21*x1 + 21*x2 <= 191",
    "23*x0 + 21*x1 + 21*x2 <= 191",
    "21*x0 + 1*x1 <= 120",
    "1*x1 + 31*x2 <= 72",
    "21*x0 + 1*x1 + 31*x2 <= 102",
    "27*x0 + 28*x1 <= 215",
    "28*x1 + 16*x2 <= 339",
    "27*x0 + 16*x2 <= 258",
    "27*x0 + 28*x1 + 16*x2 <= 328",
    "22*x1 + 29*x2 <= 383",
    "13*x0 + 29*x2 <= 182",
    "13*x0 + 22*x1 + 29*x2 <= 182",
    "11*x0 + 5*x1 <= 175",
    "11*x0 + 5*x1 + 16*x2 <= 175",
    "x0, x1, x2 are integers",
    "23*x0 <= 328",
    "21*x0 <= 147",
    "27*x0 <= 394",
    "13*x0 <= 383",
    "11*x0 <= 429",
    "21*x1 <= 328",
    "1*x1 <= 147",
    "28*x1 <= 394",
    "22*x1 <= 383",
    "5*x1 <= 429",
    "21*x2 <= 328",
    "31*x2 <= 147",
    "16*x2 <= 394",
    "29*x2 <= 383",
    "16*x2 <= 429"

  ]
}
```

```python
import gurobipy as gp

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

# Create variables
x = m.addVars(3, name=["green_beans", "protein_bars", "cornichons"], vtype=gp.GRB.INTEGER)

# Set objective function
m.setObjective(4.82 * x[0] + 2.3 * x[1] + 7.85 * x[2], gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(23 * x[0] + 21 * x[1] + 21 * x[2] >= 62)
m.addConstr(21 * x[0] + 1 * x[1] >= 49)
m.addConstr(1 * x[1] + 31 * x[2] >= 41)
m.addConstr(21 * x[0] + 1 * x[1] + 31 * x[2] >= 37)
m.addConstr(22 * x[1] + 29 * x[2] >= 98)
m.addConstr(13 * x[0] + 22 * x[1] >= 65)
m.addConstr(13 * x[0] + 22 * x[1] + 29 * x[2] >= 78)
m.addConstr(5 * x[1] + 16 * x[2] >= 59)
m.addConstr(11 * x[0] + 16 * x[2] >= 95)
m.addConstr(11 * x[0] + 5 * x[1] >= 129)
m.addConstr(23 * x[0] + 21 * x[1] <= 128)
m.addConstr(23 * x[0] + 21 * x[2] <= 201)
m.addConstr(21 * x[1] + 21 * x[2] <= 191)
m.addConstr(23 * x[0] + 21 * x[1] + 21 * x[2] <= 191)
m.addConstr(21 * x[0] + 1 * x[1] <= 120)
m.addConstr(1 * x[1] + 31 * x[2] <= 72)
m.addConstr(21 * x[0] + 1 * x[1] + 31 * x[2] <= 102)
m.addConstr(27 * x[0] + 28 * x[1] <= 215)
m.addConstr(28 * x[1] + 16 * x[2] <= 339)
m.addConstr(27 * x[0] + 16 * x[2] <= 258)
m.addConstr(27 * x[0] + 28 * x[1] + 16 * x[2] <= 328)
m.addConstr(22 * x[1] + 29 * x[2] <= 383)
m.addConstr(13 * x[0] + 29 * x[2] <= 182)
m.addConstr(13 * x[0] + 22 * x[1] + 29 * x[2] <= 182)
m.addConstr(11 * x[0] + 5 * x[1] <= 175)
m.addConstr(11 * x[0] + 5 * x[1] + 16 * x[2] <= 175)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    for v in m.getVars():
        print(f"{v.varName}: {v.x}")
    print(f"Objective Value: {m.objVal}")
elif m.status == gp.GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print(f"Optimization terminated with status {m.status}")

```
