```json
{
  "sym_variables": [
    ("x0", "chicken breasts"),
    ("x1", "rotisserie chickens"),
    ("x2", "corn cobs"),
    ("x3", "lemons"),
    ("x4", "protein bars"),
    ("x5", "apples"),
    ("x6", "peanutbutter sandwiches")
  ],
  "objective_function": "7*x0 + 9*x1 + 4*x2 + 2*x3 + 9*x4 + 6*x5 + 9*x6",
  "constraints": [
    "3.09*x2 + 5.87*x3 >= 41",
    "3.09*x0 + 5.04*x1 >= 54",
    "5.87*x3 + 6.4*x6 >= 60",
    "5.04*x1 + 6.4*x6 >= 67",
    "3.09*x0 + 6.4*x6 >= 82",
    "5.46*x2 + 5.96*x4 >= 69",
    "3.09*x0 + 5.87*x3 >= 36",
    "5.96*x4 + 4.79*x5 >= 76",
    "3.09*x0 + 5.96*x4 >= 54",
    "5.87*x3 + 5.96*x4 >= 73",
    "5.96*x4 + 6.4*x6 >= 63",
    "5.87*x3 + 4.79*x5 >= 75",
    "4.79*x5 + 6.4*x6 >= 42",
    "3.09*x0 + 5.04*x1 + 5.96*x4 >= 58",
    "5.04*x1 + 5.87*x3 + 6.4*x6 >= 58",
    "3.09*x0 + 5.04*x1 + 5.96*x4 >= 49",
    "5.04*x1 + 5.87*x3 + 6.4*x6 >= 49",
    "3.09*x0 + 5.04*x1 + 5.46*x2 + 5.87*x3 + 5.96*x4 + 4.79*x5 + 6.4*x6 >= 49",
    "0.14*x5 + 4.73*x6 >= 15",
    "0.38*x0 + 0.14*x5 >= 12",
    "4.32*x2 + 4.73*x6 >= 27",
    "2.2*x1 + 4.73*x6 >= 10",
    "0.38*x0 + 4.73*x6 >= 14",
    "0.38*x0 + 3.91*x4 >= 30",
    "0.38*x0 + 2.2*x1 >= 32",
    "2.2*x1 + 5.88*x3 >= 30",
    "2.2*x1 + 3.91*x4 >= 27",
    "0.38*x0 + 4.32*x2 >= 13",
    "3.91*x4 + 0.14*x5 >= 21",
    "4.32*x2 + 5.88*x3 >= 28",
    "3.91*x4 + 4.73*x6 >= 14",
    "2.2*x1 + 4.32*x2 >= 21",
    "2.2*x1 + 3.91*x4 + 4.73*x6 >= 23",
    "2.2*x1 + 5.88*x3 + 0.14*x5 >= 23",
    "2.2*x1 + 3.91*x4 + 4.73*x6 >= 30",
    "2.2*x1 + 5.88*x3 + 0.14*x5 >= 30",
    "0.38*x0 + 2.2*x1 + 4.32*x2 + 5.88*x3 + 3.91*x4 + 0.14*x5 + 4.73*x6 >= 30",
    "4.47*x0 + 2.52*x6 >= 13",
    "0.9*x2 + 2.15*x4 >= 18",
    "4.47*x0 + 4.6*x1 >= 24",
    "1.52*x3 + 2.15*x4 >= 10",
    "4.6*x1 + 2.52*x6 >= 18",
    "4.47*x0 + 0.16*x5 >= 15",
    "0.9*x2 + 1.52*x3 >= 8",
    "0.9*x2 + 0.16*x5 >= 13",
    "4.6*x1 + 0.16*x5 >= 16",
    "4.47*x0 + 0.9*x2 >= 8",
    "4.47*x0 + 1.52*x3 >= 22",
    "1.52*x3 + 0.16*x5 >= 13",
    "4.47*x0 + 2.15*x4 >= 16",
    "0.16*x5 + 2.52*x6 >= 11",
    "3.09*x0 + 5.46*x2 + 6.4*x6 <= 525",
    "3.09*x0 + 5.04*x1 + 5.96*x4 <= 291",
    "3.91*x4 + 0.14*x5 <= 219",
    "4.32*x2 + 5.88*x3 <= 165",
    "0.14*x5 + 4.73*x6 <= 118",
    "-5*x1 + 4*x5 >= 0",
    "x0 >= 0",
    "x1 >= 0",
    "x2 >= 0",
    "x3 >= 0",
    "x4 >= 0",
    "x5 >= 0",
    "x6 >= 0"

    
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
x = m.addVars(7, lb=0, vtype=gp.GRB.CONTINUOUS, name=["chicken breasts", "rotisserie chickens", "corn cobs", "lemons", "protein bars", "apples", "peanutbutter sandwiches"])


# Set objective function
m.setObjective(7*x[0] + 9*x[1] + 4*x[2] + 2*x[3] + 9*x[4] + 6*x[5] + 9*x[6], gp.GRB.MINIMIZE)

# Set resource constraints
tastiness = {0: 3.09, 1: 5.04, 2: 5.46, 3: 5.87, 4: 5.96, 5: 4.79, 6: 6.4}
iron = {0: 0.38, 1: 2.2, 2: 4.32, 3: 5.88, 4: 3.91, 5: 0.14, 6: 4.73}
healthiness = {0: 4.47, 1: 4.6, 2: 0.9, 3: 1.52, 4: 2.15, 5: 0.16, 6: 2.52}
sourness = {0: 1.11, 1: 3.26, 2: 5.38, 3: 0.56, 4: 2.93, 5: 5.81, 6: 5.93}


m.addConstr(tastiness[2]*x[2] + tastiness[3]*x[3] >= 41)
m.addConstr(tastiness[0]*x[0] + tastiness[1]*x[1] >= 54)
# ... (add all other constraints similarly)


# 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("Model is infeasible")
else:
    print("Optimization ended with status %d" % m.status)

```