```json
{
  "sym_variables": [
    ("x0", "milligrams of vitamin E"),
    ("x1", "grams of protein"),
    ("x2", "grams of fat"),
    ("x3", "milligrams of vitamin B4"),
    ("x4", "milligrams of vitamin C"),
    ("x5", "milligrams of vitamin B1"),
    ("x6", "milligrams of vitamin K")
  ],
  "objective_function": "4*x0 + 7*x1 + 8*x2 + 5*x3 + 7*x4 + 9*x5 + 6*x6",
  "constraints": [
    "0.8*x0 + 0.66*x1 >= 17",
    "0.66*x1 + 3.11*x3 + 4.81*x4 >= 18",
    "1.75*x2 + 3.11*x3 + 4.81*x4 >= 18",
    "0.8*x0 + 3.11*x3 + 4.81*x4 >= 18",
    "0.66*x1 + 3.11*x3 + 2.92*x6 >= 18",
    "0.66*x1 + 3.11*x3 + 4.81*x4 >= 19",
    "1.75*x2 + 3.11*x3 + 4.81*x4 >= 19",
    "0.8*x0 + 3.11*x3 + 4.81*x4 >= 19",
    "0.66*x1 + 3.11*x3 + 2.92*x6 >= 19",
    "0.66*x1 + 3.11*x3 + 4.81*x4 >= 21",
    "1.75*x2 + 3.11*x3 + 4.81*x4 >= 21",
    "0.8*x0 + 3.11*x3 + 4.81*x4 >= 21",
    "0.66*x1 + 3.11*x3 + 2.92*x6 >= 21",
    "0.66*x1 + 3.11*x3 + 4.81*x4 >= 21",
    "1.75*x2 + 3.11*x3 + 4.81*x4 >= 21",
    "0.8*x0 + 3.11*x3 + 4.81*x4 >= 21",
    "0.66*x1 + 3.11*x3 + 2.92*x6 >= 21",
    "0.8*x0 + 0.66*x1 + 1.75*x2 + 3.11*x3 + 4.81*x4 + 3.47*x5 + 2.92*x6 >= 21",
    "3.27*x2 + 3.81*x5 >= 20",
    "0.02*x1 + 3.27*x2 >= 18",
    "3.81*x5 + 3.3*x6 >= 19",
    "2.56*x3 + 3.96*x4 >= 19",
    "2.71*x0 + 3.96*x4 >= 21",
    "3.27*x2 + 2.56*x3 >= 9",
    "2.71*x0 + 3.81*x5 >= 21",
    "3.27*x2 + 3.96*x4 >= 20",
    "2.71*x0 + 3.3*x6 >= 14",
    "0.02*x1 + 3.3*x6 >= 10",
    "2.71*x0 + 0.02*x1 + 3.27*x2 + 2.56*x3 + 3.96*x4 + 3.81*x5 + 3.3*x6 >= 10",
    "-x3 + 8*x5 >= 0",
    "5*x0 - 8*x5 - 2*x6 >= 0",
    "4.81*x4 + 2.92*x6 <= 76",
    "0.8*x0 + 3.11*x3 <= 80",
    "0.66*x1 + 1.75*x2 <= 73",
    "0.66*x1 + 3.11*x3 <= 127",
    "3.11*x3 + 4.81*x4 <= 130",
    "0.8*x0 + 4.81*x4 <= 122",
    "0.66*x1 + 4.81*x4 <= 74",
    "0.8*x0 + 3.47*x5 <= 31",
    "3.47*x5 + 2.92*x6 <= 155",
    "0.8*x0 + 2.92*x6 <= 48",
    "3.11*x3 + 3.47*x5 <= 32",
    "0.66*x1 + 3.47*x5 <= 129",
    "0.8*x0 + 1.75*x2 <= 39",
    "4.81*x4 + 3.47*x5 <= 81",
    "0.66*x1 + 2.92*x6 <= 84",
    "0.8*x0 + 4.81*x4 + 2.92*x6 <= 151",
    "0.66*x1 + 3.11*x3 + 4.81*x4 <= 57",
    "1.75*x2 + 4.81*x4 + 2.92*x6 <= 43",
    "0.66*x1 + 3.11*x3 + 2.92*x6 <= 116",
    "0.8*x0 + 3.11*x3 + 4.81*x4 <= 78",
    "2.71*x0 + 3.96*x4 <= 90",
    "3.27*x2 + 3.81*x5 <= 108",
    "3.27*x2 + 3.96*x4 + 3.81*x5 <= 130",
    "2.71*x0 + 3.96*x4 + 3.3*x6 <= 100",
    "2.71*x0 + 0.02*x1 + 3.27*x2 <= 128",
    "2.56*x3 + 3.96*x4 + 3.3*x6 <= 43",
    "0.02*x1 + 3.27*x2 + 2.56*x3 <= 105",
    "0.02*x1 + 3.96*x4 + 3.3*x6 <= 147",
    "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("nutrition_optimization")

# Create variables
vitamin_e = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_e")
protein = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="protein")
fat = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="fat")
vitamin_b4 = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_b4")
vitamin_c = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_c")
vitamin_b1 = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_b1")
vitamin_k = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_k")


# Set objective function
m.setObjective(4*vitamin_e + 7*protein + 8*fat + 5*vitamin_b4 + 7*vitamin_c + 9*vitamin_b1 + 6*vitamin_k, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(0.8*vitamin_e + 0.66*protein >= 17)
m.addConstr(0.66*protein + 3.11*vitamin_b4 + 4.81*vitamin_c >= 18)
m.addConstr(1.75*fat + 3.11*vitamin_b4 + 4.81*vitamin_c >= 18)
m.addConstr(0.8*vitamin_e + 3.11*vitamin_b4 + 4.81*vitamin_c >= 18)
m.addConstr(0.66*protein + 3.11*vitamin_b4 + 2.92*vitamin_k >= 18)
m.addConstr(0.66*protein + 3.11*vitamin_b4 + 4.81*vitamin_c >= 19)
m.addConstr(1.75*fat + 3.11*vitamin_b4 + 4.81*vitamin_c >= 19)
m.addConstr(0.8*vitamin_e + 3.11*vitamin_b4 + 4.81*vitamin_c >= 19)
m.addConstr(0.66*protein + 3.11*vitamin_b4 + 2.92*vitamin_k >= 19)
m.addConstr(0.66*protein + 3.11*vitamin_b4 + 4.81*vitamin_c >= 21)
m.addConstr(1.75*fat + 3.11*vitamin_b4 + 4.81*vitamin_c >= 21)
m.addConstr(0.8*vitamin_e + 3.11*vitamin_b4 + 4.81*vitamin_c >= 21)
m.addConstr(0.66*protein + 3.11*vitamin_b4 + 2.92*vitamin_k >= 21)
m.addConstr(0.8 * vitamin_e + 0.66 * protein + 1.75 * fat + 3.11 * vitamin_b4 + 4.81 * vitamin_c + 3.47 * vitamin_b1 + 2.92 * vitamin_k >= 21)
m.addConstr(3.27 * fat + 3.81 * vitamin_b1 >= 20)
m.addConstr(0.02 * protein + 3.27 * fat >= 18)
m.addConstr(3.81 * vitamin_b1 + 3.3 * vitamin_k >= 19)
m.addConstr(2.56 * vitamin_b4 + 3.96 * vitamin_c >= 19)
m.addConstr(2.71 * vitamin_e + 3.96 * vitamin_c >= 21)
m.addConstr(3.27 * fat + 2.56 * vitamin_b4 >= 9)
m.addConstr(2.71 * vitamin_e + 3.81 * vitamin_b1 >= 21)
m.addConstr(3.27 * fat + 3.96 * vitamin_c >= 20)
m.addConstr(2.71 * vitamin_e + 3.3 * vitamin_k >= 14)
m.addConstr(0.02 * protein + 3.3 * vitamin_k >= 10)

# ... (rest of the constraints from the JSON)

# Optimize model
m.optimize()

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

```