```json
{
  "sym_variables": [
    ("x0", "cherry pies"),
    ("x1", "bagged salads"),
    ("x2", "green beans")
  ],
  "objective_function": "6.26 * x0 + 3.48 * x1 + 2.79 * x2",
  "constraints": [
    "21 * x1 + 23 * x2 >= 95",
    "1 * x0 + 23 * x2 >= 58",
    "1 * x0 + 21 * x1 >= 106",
    "1 * x0 + 21 * x1 + 23 * x2 >= 106",
    "22 * x1 + 2 * x2 >= 31",
    "3 * x0 + 22 * x1 >= 14",
    "3 * x0 + 22 * x1 + 2 * x2 >= 14",
    "16 * x1 + 6 * x2 >= 59",
    "19 * x0 + 16 * x1 + 6 * x2 >= 59",
    "15 * x0 + 1 * x1 >= 90",
    "15 * x0 + 1 * x1 + 3 * x2 >= 98",
    "15 * x0 + 1 * x1 + 3 * x2 >= 98",
    "5 * x1 + 10 * x2 >= 61",
    "10 * x0 + 5 * x1 >= 109",
    "10 * x0 + 5 * x1 + 10 * x2 >= 109",
    "1 * x1 + -10 * x2 >= 0",
    "1 * x0 + 21 * x1 <= 144",
    "3 * x0 + 22 * x1 <= 90",
    "3 * x0 + 2 * x2 <= 119",
    "16 * x1 + 6 * x2 <= 291",
    "19 * x0 + 6 * x2 <= 164",
    "15 * x0 + 1 * x1 + 3 * x2 <= 307",
    "1 * x0 + 21 * x1 + 23 * x2 <= 318", 
    "3 * x0 + 22 * x1 + 2 * x2 <= 125",
    "19 * x0 + 16 * x1 + 6 * x2 <= 292",
    "15 * x0 + 1 * x1 + 3 * x2 <= 329",
    "10 * x0 + 5 * x1 + 10 * x2 <= 382"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
cherry_pies = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="cherry_pies")
bagged_salads = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="bagged_salads")
green_beans = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="green_beans")


# Set objective function
m.setObjective(6.26 * cherry_pies + 3.48 * bagged_salads + 2.79 * green_beans, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(21 * bagged_salads + 23 * green_beans >= 95)
m.addConstr(1 * cherry_pies + 23 * green_beans >= 58)
m.addConstr(1 * cherry_pies + 21 * bagged_salads >= 106)
m.addConstr(1 * cherry_pies + 21 * bagged_salads + 23 * green_beans >= 106)
m.addConstr(22 * bagged_salads + 2 * green_beans >= 31)
m.addConstr(3 * cherry_pies + 22 * bagged_salads >= 14)
m.addConstr(3 * cherry_pies + 22 * bagged_salads + 2 * green_beans >= 14)
m.addConstr(16 * bagged_salads + 6 * green_beans >= 59)
m.addConstr(19 * cherry_pies + 16 * bagged_salads + 6 * green_beans >= 59)
m.addConstr(15 * cherry_pies + 1 * bagged_salads >= 90)
m.addConstr(15 * cherry_pies + 1 * bagged_salads + 3 * green_beans >= 98)
m.addConstr(15 * cherry_pies + 1 * bagged_salads + 3 * green_beans >= 98)
m.addConstr(5 * bagged_salads + 10 * green_beans >= 61)
m.addConstr(10 * cherry_pies + 5 * bagged_salads >= 109)
m.addConstr(10 * cherry_pies + 5 * bagged_salads + 10 * green_beans >= 109)
m.addConstr(1 * bagged_salads - 10 * green_beans >= 0)
m.addConstr(1 * cherry_pies + 21 * bagged_salads <= 144)
m.addConstr(3 * cherry_pies + 22 * bagged_salads <= 90)
m.addConstr(3 * cherry_pies + 2 * green_beans <= 119)
m.addConstr(16 * bagged_salads + 6 * green_beans <= 291)
m.addConstr(19 * cherry_pies + 6 * green_beans <= 164)
m.addConstr(15 * cherry_pies + 1 * bagged_salads + 3 * green_beans <= 307)

# Resource Constraints
m.addConstr(1 * cherry_pies + 21 * bagged_salads + 23 * green_beans <= 318)
m.addConstr(3 * cherry_pies + 22 * bagged_salads + 2 * green_beans <= 125)
m.addConstr(19 * cherry_pies + 16 * bagged_salads + 6 * green_beans <= 292)
m.addConstr(15 * cherry_pies + 1 * bagged_salads + 3 * green_beans <= 329)
m.addConstr(10 * cherry_pies + 5 * bagged_salads + 10 * green_beans <= 382)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    print('cherry_pies:', cherry_pies.x)
    print('bagged_salads:', bagged_salads.x)
    print('green_beans:', green_beans.x)
elif m.status == gp.GRB.INFEASIBLE:
    print('The model is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)

```