```json
{
  "sym_variables": [
    ("x0", "milligrams of vitamin B3"),
    ("x1", "milligrams of vitamin C"),
    ("x2", "milligrams of vitamin B9"),
    ("x3", "milligrams of vitamin B4"),
    ("x4", "milligrams of vitamin B7"),
    ("x5", "grams of protein")
  ],
  "objective_function": "3.07*x0 + 9.93*x1 + 7.71*x2 + 4.13*x3 + 7.76*x4 + 8.37*x5",
  "constraints": [
    "5.88*x0 + 4.37*x1 + 5.58*x2 + 3.89*x3 + 1.06*x4 + 4.31*x5 <= 180",
    "1.1*x0 + 1.91*x1 + 1.28*x2 + 4.39*x3 + 4.14*x4 + 4.81*x5 <= 327",
    "1.48*x0 + 0.24*x1 + 3.73*x2 + 2.68*x3 + 3.76*x4 + 3.99*x5 <= 722",
    "1.39*x0 + 1.99*x1 + 4.43*x2 + 5.19*x3 + 2.23*x4 + 2.18*x5 <= 490",
    "4.37*x1 + 4.31*x5 >= 21",
    "4.37*x1 + 5.58*x2 >= 13",
    "5.88*x0 + 4.37*x1 + 4.31*x5 >= 15",
    "1.28*x2 + 4.39*x3 >= 34",
    "1.1*x0 + 4.81*x5 >= 33",
    "1.91*x1 + 4.39*x3 >= 23",
    "1.1*x0 + 1.28*x2 >= 54",
    "1.1*x0 + 4.39*x3 >= 40",
    "1.28*x2 + 4.14*x4 >= 50",
    "4.39*x3 + 4.81*x5 >= 52",
    "1.91*x1 + 4.14*x4 >= 28",
    "1.91*x1 + 1.28*x2 >= 51",
    "1.1*x0 + 1.91*x1 >= 30",
    "1.28*x2 + 4.81*x5 >= 35",
    "1.1*x0 + 4.14*x4 >= 54",
    "4.39*x3 + 4.14*x4 + 4.81*x5 >= 36",
    "1.1*x0 + 1.91*x1 + 1.28*x2 >= 36",
    "4.39*x3 + 4.14*x4 + 4.81*x5 >= 54",
    "1.1*x0 + 1.91*x1 + 1.28*x2 >= 54",
    "0.24*x1 + 3.73*x2 + 3.76*x4 >= 77",
    "0.24*x1 + 2.68*x3 + 3.76*x4 >= 77",
    "0.24*x1 + 3.73*x2 + 2.68*x3 >= 77",
    "1.48*x0 + 2.68*x3 + 3.99*x5 >= 77",
    "1.48*x0 + 0.24*x1 + 3.99*x5 >= 77",
    "2.68*x3 + 3.76*x4 + 3.99*x5 >= 77",
    "1.48*x0 + 3.73*x2 + 3.76*x4 >= 77",
    "0.24*x1 + 2.68*x3 + 3.99*x5 >= 77",
    "0.24*x1 + 3.73*x2 + 3.76*x4 >= 90",
    "0.24*x1 + 2.68*x3 + 3.76*x4 >= 90",
    "0.24*x1 + 3.73*x2 + 2.68*x3 >= 90",
    "1.48*x0 + 2.68*x3 + 3.99*x5 >= 90",
    "1.48*x0 + 0.24*x1 + 3.99*x5 >= 90",
    "2.68*x3 + 3.76*x4 + 3.99*x5 >= 90",
    "1.48*x0 + 3.73*x2 + 3.76*x4 >= 90",
    "0.24*x1 + 2.68*x3 + 3.99*x5 >= 90",
    "0.24*x1 + 3.73*x2 + 3.76*x4 >= 116",
    "0.24*x1 + 2.68*x3 + 3.76*x4 >= 116",
    "0.24*x1 + 3.73*x2 + 2.68*x3 >= 116",
    "1.48*x0 + 2.68*x3 + 3.99*x5 >= 116",
    "1.48*x0 + 0.24*x1 + 3.99*x5 >= 116",
    "2.68*x3 + 3.76*x4 + 3.99*x5 >= 116",
    "1.48*x0 + 3.73*x2 + 3.76*x4 >= 116",
    "0.24*x1 + 2.68*x3 + 3.99*x5 >= 116",
    "1.39*x0 + 2.23*x4 >= 44",
    "1.39*x0 + 1.99*x1 >= 75",
    "1.99*x1 + 2.18*x5 >= 55",
    "5.19*x3 + 2.18*x5 >= 59",
    "1.39*x0 + 5.19*x3 >= 60",
    "2.23*x4 + 2.18*x5 >= 81",
    "4.43*x2 + 2.18*x5 >= 48",
    "1.99*x1 + 2.23*x4 >= 58",
    "1.99*x1 + 5.19*x3 >= 39",
    "1.39*x0 + 2.18*x5 >= 71",
    "3.89*x3 + 1.06*x4 <= 141",
    "5.88*x0 + 4.37*x1 <= 160",
    "4.37*x1 + 1.06*x4 <= 107",
    "4.14*x4 + 4.81*x5 <= 202",
    "1.1*x0 + 4.39*x3 <= 80",
    "1.1*x0 + 4.14*x4 <= 54",
    "1.91*x1 + 1.28*x2 <= 197",
    "1.1*x0 + 1.28*x2 <= 311",
    "4.39*x3 + 4.81*x5 <= 205",
    "x0 >= 0",
    "x1 >= 0",
    "x2 >= 0",
    "x3 >= 0",
    "x4 >= 0",
    "x5 >= 0"


  ]
}
```

```python
import gurobipy as gp

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

# Create variables
vitamin_b3 = m.addVar(vtype=gp.GRB.INTEGER, name="vitamin_b3")
vitamin_c = m.addVar(vtype=gp.GRB.INTEGER, name="vitamin_c")
vitamin_b9 = m.addVar(vtype=gp.GRB.INTEGER, name="vitamin_b9")
vitamin_b4 = m.addVar(vtype=gp.GRB.INTEGER, name="vitamin_b4")
vitamin_b7 = m.addVar(vtype=gp.GRB.CONTINUOUS, name="vitamin_b7")
protein = m.addVar(vtype=gp.GRB.CONTINUOUS, name="protein")


# Set objective function
m.setObjective(3.07 * vitamin_b3 + 9.93 * vitamin_c + 7.71 * vitamin_b9 + 4.13 * vitamin_b4 + 7.76 * vitamin_b7 + 8.37 * protein, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(5.88 * vitamin_b3 + 4.37 * vitamin_c + 5.58 * vitamin_b9 + 3.89 * vitamin_b4 + 1.06 * vitamin_b7 + 4.31 * protein <= 180, "r0")
m.addConstr(1.1 * vitamin_b3 + 1.91 * vitamin_c + 1.28 * vitamin_b9 + 4.39 * vitamin_b4 + 4.14 * vitamin_b7 + 4.81 * protein <= 327, "r1")
m.addConstr(1.48 * vitamin_b3 + 0.24 * vitamin_c + 3.73 * vitamin_b9 + 2.68 * vitamin_b4 + 3.76 * vitamin_b7 + 3.99 * protein <= 722, "r2")
m.addConstr(1.39 * vitamin_b3 + 1.99 * vitamin_c + 4.43 * vitamin_b9 + 5.19 * vitamin_b4 + 2.23 * vitamin_b7 + 2.18 * protein <= 490, "r3")
# ... (add all other constraints similarly)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    print('vitamin_b3:', vitamin_b3.x)
    print('vitamin_c:', vitamin_c.x)
    print('vitamin_b9:', vitamin_b9.x)
    print('vitamin_b4:', vitamin_b4.x)
    print('vitamin_b7:', vitamin_b7.x)
    print('protein:', protein.x)

elif m.status == gp.GRB.INFEASIBLE:
    print("Model is infeasible")
else:
    print("Optimization ended with status %d" % m.status)

```