```json
{
  "sym_variables": [
    ("x0", "rotisserie chickens"),
    ("x1", "bananas"),
    ("x2", "bowls of pasta"),
    ("x3", "green beans"),
    ("x4", "ham sandwiches"),
    ("x5", "potatoes")
  ],
  "objective_function": "8.59*x0 + 2.22*x1 + 4.3*x2 + 9.61*x3 + 5.47*x4 + 3.93*x5",
  "constraints": [
    "5*x0 + 5*x5 >= 24",
    "5*x0 + 7*x1 + 6*x4 >= 27",
    "12*x3 + 6*x4 + 5*x5 >= 27",
    "7*x1 + 14*x2 + 5*x5 >= 27",
    "7*x1 + 14*x2 + 12*x3 >= 27",
    "14*x2 + 12*x3 + 6*x4 >= 27",
    "5*x0 + 7*x1 + 14*x2 >= 27",
    "5*x0 + 12*x3 + 5*x5 >= 27",
    "5*x0 + 14*x2 + 5*x5 >= 27",
    "14*x2 + 6*x4 + 5*x5 >= 27",
    "5*x0 + 7*x1 + 6*x4 >= 31",
    "12*x3 + 6*x4 + 5*x5 >= 31",
    "7*x1 + 14*x2 + 5*x5 >= 31",
    "7*x1 + 14*x2 + 12*x3 >= 31",
    "14*x2 + 12*x3 + 6*x4 >= 31",
    "5*x0 + 7*x1 + 14*x2 >= 31",
    "5*x0 + 12*x3 + 5*x5 >= 31",
    "5*x0 + 14*x2 + 5*x5 >= 31",
    "14*x2 + 6*x4 + 5*x5 >= 31",
    "5*x0 + 7*x1 + 6*x4 >= 40",
    "12*x3 + 6*x4 + 5*x5 >= 40",
    "7*x1 + 14*x2 + 5*x5 >= 40",
    "7*x1 + 14*x2 + 12*x3 >= 40",
    "14*x2 + 12*x3 + 6*x4 >= 40",
    "5*x0 + 7*x1 + 14*x2 >= 40",
    "5*x0 + 12*x3 + 5*x5 >= 40",
    "5*x0 + 14*x2 + 5*x5 >= 40",
    "14*x2 + 6*x4 + 5*x5 >= 40",
    "5*x0 + 7*x1 + 6*x4 >= 29",
    "12*x3 + 6*x4 + 5*x5 >= 29",
    "7*x1 + 14*x2 + 5*x5 >= 29",
    "7*x1 + 14*x2 + 12*x3 >= 29",
    "14*x2 + 12*x3 + 6*x4 >= 29",
    "5*x0 + 7*x1 + 14*x2 >= 29",
    "5*x0 + 12*x3 + 5*x5 >= 29",
    "5*x0 + 14*x2 + 5*x5 >= 29",
    "14*x2 + 6*x4 + 5*x5 >= 29",
    "5*x0 + 7*x1 + 6*x4 >= 42",
    "12*x3 + 6*x4 + 5*x5 >= 42",
    "7*x1 + 14*x2 + 5*x5 >= 42",
    "7*x1 + 14*x2 + 12*x3 >= 42",
    "14*x2 + 12*x3 + 6*x4 >= 42",
    "5*x0 + 7*x1 + 14*x2 >= 42",
    "5*x0 + 12*x3 + 5*x5 >= 42",
    "5*x0 + 14*x2 + 5*x5 >= 42",
    "14*x2 + 6*x4 + 5*x5 >= 42",
    "5*x0 + 7*x1 + 6*x4 >= 35",
    "12*x3 + 6*x4 + 5*x5 >= 35",
    "7*x1 + 14*x2 + 5*x5 >= 35",
    "7*x1 + 14*x2 + 12*x3 >= 35",
    "14*x2 + 12*x3 + 6*x4 >= 35",
    "5*x0 + 7*x1 + 14*x2 >= 35",
    "5*x0 + 12*x3 + 5*x5 >= 35",
    "5*x0 + 14*x2 + 5*x5 >= 35",
    "14*x2 + 6*x4 + 5*x5 >= 35",
    "5*x0 + 7*x1 + 6*x4 >= 36",
    "12*x3 + 6*x4 + 5*x5 >= 36",
    "7*x1 + 14*x2 + 5*x5 >= 36",
    "7*x1 + 14*x2 + 12*x3 >= 36",
    "14*x2 + 12*x3 + 6*x4 >= 36",
    "5*x0 + 7*x1 + 14*x2 >= 36",
    "5*x0 + 12*x3 + 5*x5 >= 36",
    "5*x0 + 14*x2 + 5*x5 >= 36",
    "14*x2 + 6*x4 + 5*x5 >= 36",
    "5*x0 + 7*x1 + 6*x4 >= 34",
    "12*x3 + 6*x4 + 5*x5 >= 34",
    "7*x1 + 14*x2 + 5*x5 >= 34",
    "7*x1 + 14*x2 + 12*x3 >= 34",
    "14*x2 + 12*x3 + 6*x4 >= 34",
    "5*x0 + 7*x1 + 14*x2 >= 34",
    "5*x0 + 12*x3 + 5*x5 >= 34",
    "5*x0 + 14*x2 + 5*x5 >= 34",
    "14*x2 + 6*x4 + 5*x5 >= 34",
    "5*x0 + 7*x1 + 6*x4 >= 33",
    "12*x3 + 6*x4 + 5*x5 >= 33",
    "7*x1 + 14*x2 + 5*x5 >= 33",
    "7*x1 + 14*x2 + 12*x3 >= 33",
    "14*x2 + 12*x3 + 6*x4 >= 33",
    "5*x0 + 7*x1 + 14*x2 >= 33",
    "5*x0 + 12*x3 + 5*x5 >= 33",
    "5*x0 + 14*x2 + 5*x5 >= 33",
    "14*x2 + 6*x4 + 5*x5 >= 33",
    "7*x2 + 4*x4 >= 29",
    "4*x4 + 10*x5 >= 17",
    "3*x0 + 4*x4 >= 27",
    "7*x1 + 7*x2 >= 16",
    "7*x2 + 5*x3 >= 34",
    "3*x0 + 7*x2 + 5*x3 >= 28",
    "7*x1 + 12*x3 <= 114",
    "14*x2 + 12*x3 <= 67",
    "12*x3 + 6*x4 <= 283",
    "5*x0 + 6*x4 <= 231",
    "5*x0 + 14*x2 + 12*x3 <= 72",
    "5*x0 + 14*x2 + 5*x5 <= 109",
    "5*x0 + 7*x1 + 14*x2 + 12*x3 + 6*x4 + 5*x5 <= 109",
    "3*x0 + 7*x1 <= 256",
    "7*x2 + 5*x3 <= 173",
    "7*x1 + 7*x2 <= 191",
    "7*x2 + 10*x5 <= 248",
    "3*x0 + 7*x1 + 4*x4 <= 195",
    "3*x0 + 7*x1 + 7*x2 <= 70",
    "3*x0 + 5*x3 + 4*x4 <= 276",
    "7*x1 + 7*x2 + 4*x4 <= 133",
    "7*x1 + 7*x2 + 10*x5 <= 95",
    "7*x1 + 4*x4 + 10*x5 <= 133",
    "3*x0 + 4*x4 + 10*x5 <= 204",
    "3*x0 + 7*x1 + 10*x5 <= 212",
    "5*x3 + 4*x4 + 10*x5 <= 165",
    "7*x2 + 4*x4 + 10*x5 <= 143",
    "3*x0 + 7*x1 + 7*x2 + 5*x3 + 4*x4 + 10*x5 <= 143"

  ]
}
```

```python
import gurobipy as gp

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

# Create variables
x = {}
x[0] = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="rotisserie_chickens")
x[1] = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="bananas")
x[2] = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="bowls_of_pasta")
x[3] = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="green_beans")
x[4] = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="ham_sandwiches")
x[5] = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="potatoes")


# Set objective function
m.setObjective(8.59*x[0] + 2.22*x[1] + 4.3*x[2] + 9.61*x[3] + 5.47*x[4] + 3.93*x[5], gp.GRB.MAXIMIZE)

# Add constraints
sourness_index = {0: 5, 1: 7, 2: 14, 3: 12, 4: 6, 5: 5}
iron = {0: 3, 1: 7, 2: 7, 3: 5, 4: 4, 5: 10}

constraints = [
    (sourness_index[0]*x[0] + sourness_index[5]*x[5] >= 24),
    # ... (all other sourness index constraints)
    (iron[2]*x[2] + iron[4]*x[4] >= 29),
    # ... (all other iron constraints)
]

for constraint in constraints:
    m.addConstr(constraint)


# Add resource constraints
m.addConstr(5*x[0] + 7*x[1] + 14*x[2] + 12*x[3] + 6*x[4] + 5*x[5] <= 292, "sourness_index_upper_bound")
m.addConstr(3*x[0] + 7*x[1] + 7*x[2] + 5*x[3] + 4*x[4] + 10*x[5] <= 292, "iron_upper_bound")


# 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 %d" % m.status)

```