```json
{
  "sym_variables": [
    ("x0", "grams of fiber"),
    ("x1", "milligrams of vitamin B4"),
    ("x2", "grams of fat"),
    ("x3", "milligrams of vitamin A"),
    ("x4", "milligrams of vitamin B9"),
    ("x5", "milligrams of zinc")
  ],
  "objective_function": "5.81*x0 + 5.03*x1 + 5.98*x2 + 5.46*x3 + 7.33*x4 + 4.03*x5",
  "constraints": [
    "5*x1 + 10*x4 >= 25",
    "9*x0 + 5*x1 >= 24",
    "10*x4 + 2*x5 >= 13",
    "5*x1 + 14*x3 + 2*x5 >= 35",
    "9*x0 + 14*x3 + 2*x5 >= 35",
    "9*x0 + 5*x1 + 8*x2 >= 35",
    "9*x0 + 8*x2 + 2*x5 >= 35",
    "5*x1 + 14*x3 + 2*x5 >= 26",
    "9*x0 + 14*x3 + 2*x5 >= 26",
    "9*x0 + 5*x1 + 8*x2 >= 26",
    "9*x0 + 8*x2 + 2*x5 >= 26",
    "5*x1 + 14*x3 + 2*x5 >= 25",
    "9*x0 + 14*x3 + 2*x5 >= 25",
    "9*x0 + 5*x1 + 8*x2 >= 25",
    "9*x0 + 8*x2 + 2*x5 >= 25",
    "5*x1 + 14*x3 + 2*x5 >= 30",
    "9*x0 + 14*x3 + 2*x5 >= 30",
    "9*x0 + 5*x1 + 8*x2 >= 30",
    "9*x0 + 8*x2 + 2*x5 >= 30",
    "9*x0 + 5*x1 + 8*x2 + 14*x3 + 10*x4 + 2*x5 >= 30",
    "-8*x2 + 3*x5 >= 0",
    "10*x2 - 5*x4 >= 0",
    "7*x1 - x5 >= 0",
    "-7*x0 + 5*x5 >= 0",
    "-9*x0 + x1 >= 0",
    "-6*x1 - 6*x4 + 6*x5 >= 0",
    "9*x0 + 5*x1 + 2*x5 <= 167",
    "9*x0 + 5*x1 + 8*x2 + 14*x3 + 10*x4 + 2*x5 <= 230" 
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
fiber = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="fiber")
vitamin_b4 = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_b4")
fat = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="fat")
vitamin_a = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_a")
vitamin_b9 = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_b9")
zinc = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="zinc")


# Set objective function
m.setObjective(5.81 * fiber + 5.03 * vitamin_b4 + 5.98 * fat + 5.46 * vitamin_a + 7.33 * vitamin_b9 + 4.03 * zinc, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(5 * vitamin_b4 + 10 * vitamin_b9 >= 25)
m.addConstr(9 * fiber + 5 * vitamin_b4 >= 24)
m.addConstr(10 * vitamin_b9 + 2 * zinc >= 13)
m.addConstr(5 * vitamin_b4 + 14 * vitamin_a + 2 * zinc >= 35)
m.addConstr(9 * fiber + 14 * vitamin_a + 2 * zinc >= 35)
m.addConstr(9 * fiber + 5 * vitamin_b4 + 8 * fat >= 35)
m.addConstr(9 * fiber + 8 * fat + 2 * zinc >= 35)
m.addConstr(5 * vitamin_b4 + 14 * vitamin_a + 2 * zinc >= 26)
m.addConstr(9 * fiber + 14 * vitamin_a + 2 * zinc >= 26)
m.addConstr(9 * fiber + 5 * vitamin_b4 + 8 * fat >= 26)
m.addConstr(9 * fiber + 8 * fat + 2 * zinc >= 26)
m.addConstr(5 * vitamin_b4 + 14 * vitamin_a + 2 * zinc >= 25)
m.addConstr(9 * fiber + 14 * vitamin_a + 2 * zinc >= 25)
m.addConstr(9 * fiber + 5 * vitamin_b4 + 8 * fat >= 25)
m.addConstr(9 * fiber + 8 * fat + 2 * zinc >= 25)
m.addConstr(5 * vitamin_b4 + 14 * vitamin_a + 2 * zinc >= 30)
m.addConstr(9 * fiber + 14 * vitamin_a + 2 * zinc >= 30)
m.addConstr(9 * fiber + 5 * vitamin_b4 + 8 * fat >= 30)
m.addConstr(9 * fiber + 8 * fat + 2 * zinc >= 30)
m.addConstr(9 * fiber + 5 * vitamin_b4 + 8 * fat + 14 * vitamin_a + 10 * vitamin_b9 + 2 * zinc >= 30)
m.addConstr(-8 * fat + 3 * zinc >= 0)
m.addConstr(10 * fat - 5 * vitamin_b9 >= 0)
m.addConstr(7 * vitamin_b4 - zinc >= 0)
m.addConstr(-7 * fiber + 5 * zinc >= 0)
m.addConstr(-9 * fiber + vitamin_b4 >= 0)
m.addConstr(-6 * vitamin_b4 - 6 * vitamin_b9 + 6 * zinc >= 0)
m.addConstr(9 * fiber + 5 * vitamin_b4 + 2 * zinc <= 167)
m.addConstr(9 * fiber + 5 * vitamin_b4 + 8 * fat + 14 * vitamin_a + 10 * vitamin_b9 + 2 * zinc <= 230)


# 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)

```
