```json
{
  "sym_variables": [
    ("x0", "milligrams of vitamin D"),
    ("x1", "milligrams of vitamin B3"),
    ("x2", "milligrams of vitamin C"),
    ("x3", "milligrams of magnesium"),
    ("x4", "milligrams of vitamin B9")
  ],
  "objective_function": "6.79 * x0 + 5.12 * x1 + 7.51 * x2 + 3.45 * x3 + 8.09 * x4",
  "constraints": [
    "5 * x0 + 18 * x1 + 21 * x2 + 15 * x3 + 20 * x4 <= 884",
    "9 * x0 + 11 * x1 + 12 * x2 + 22 * x3 + 26 * x4 <= 638",
    "17 * x0 + 19 * x1 + 19 * x2 + 8 * x3 + 6 * x4 <= 181",
    "21 * x2 + 20 * x4 >= 157",
    "18 * x1 + 21 * x2 >= 82",
    "15 * x3 + 20 * x4 >= 155",
    "18 * x1 + 15 * x3 >= 117",
    "5 * x0 + 20 * x4 >= 92",
    "5 * x0 + 15 * x3 >= 103",
    "5 * x0 + 18 * x1 >= 60",
    "18 * x1 + 20 * x4 >= 161",
    "5 * x0 + 21 * x2 >= 107",
    "5 * x0 + 18 * x1 + 15 * x3 >= 170",
    "9 * x0 + 26 * x4 >= 104",
    "11 * x1 + 12 * x2 >= 91",
    "11 * x1 + 26 * x4 >= 90",
    "12 * x2 + 22 * x3 >= 67",
    "22 * x3 + 26 * x4 >= 102",
    "12 * x2 + 26 * x4 >= 62",
    "11 * x1 + 12 * x2 + 26 * x4 >= 85",
    "9 * x0 + 11 * x1 + 12 * x2 >= 85",
    "9 * x0 + 22 * x3 + 26 * x4 >= 85",
    "9 * x0 + 12 * x2 + 26 * x4 >= 85",
    "12 * x2 + 22 * x3 + 26 * x4 >= 85",
    "9 * x0 + 12 * x2 + 22 * x3 >= 85",
    "9 * x0 + 11 * x1 + 26 * x4 >= 85",
    "11 * x1 + 12 * x2 + 26 * x4 >= 92",  
    "9 * x0 + 11 * x1 + 12 * x2 >= 92",
    "9 * x0 + 22 * x3 + 26 * x4 >= 92",
    "9 * x0 + 12 * x2 + 26 * x4 >= 92",
    "12 * x2 + 22 * x3 + 26 * x4 >= 92",
    "9 * x0 + 12 * x2 + 22 * x3 >= 92",
    "9 * x0 + 11 * x1 + 26 * x4 >= 92",
    "11 * x1 + 12 * x2 + 26 * x4 >= 96",
    "9 * x0 + 11 * x1 + 12 * x2 >= 96",
    "9 * x0 + 22 * x3 + 26 * x4 >= 96",
    "9 * x0 + 12 * x2 + 26 * x4 >= 96",
    "12 * x2 + 22 * x3 + 26 * x4 >= 96",
    "9 * x0 + 12 * x2 + 22 * x3 >= 96",
    "9 * x0 + 11 * x1 + 26 * x4 >= 96",
    "19 * x1 + 8 * x3 >= 27",
    "8 * x3 + 6 * x4 >= 26",
    "17 * x0 + 8 * x3 >= 19",
    "19 * x2 + 8 * x3 >= 25",
    "19 * x1 + 19 * x2 <= 61",
    "18 * x1 + 21 * x2 <= 441",
    "18 * x1 + 15 * x3 <= 251",
    "18 * x1 + 20 * x4 <= 626",
    "x0 % 1 == 0",
    "x2 % 1 == 0",
    "x4 % 1 == 0"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
vitamin_d = model.addVar(vtype=gp.GRB.INTEGER, name="vitamin_d")
vitamin_b3 = model.addVar(vtype=gp.GRB.CONTINUOUS, name="vitamin_b3")
vitamin_c = model.addVar(vtype=gp.GRB.INTEGER, name="vitamin_c")
magnesium = model.addVar(vtype=gp.GRB.CONTINUOUS, name="magnesium")
vitamin_b9 = model.addVar(vtype=gp.GRB.INTEGER, name="vitamin_b9")


# Set objective function
model.setObjective(6.79 * vitamin_d + 5.12 * vitamin_b3 + 7.51 * vitamin_c + 3.45 * magnesium + 8.09 * vitamin_b9, gp.GRB.MAXIMIZE)

# Add constraints
model.addConstr(5 * vitamin_d + 18 * vitamin_b3 + 21 * vitamin_c + 15 * magnesium + 20 * vitamin_b9 <= 884, "r0")
model.addConstr(9 * vitamin_d + 11 * vitamin_b3 + 12 * vitamin_c + 22 * magnesium + 26 * vitamin_b9 <= 638, "r1")
model.addConstr(17 * vitamin_d + 19 * vitamin_b3 + 19 * vitamin_c + 8 * magnesium + 6 * vitamin_b9 <= 181, "r2")

model.addConstr(21 * vitamin_c + 20 * vitamin_b9 >= 157)
model.addConstr(18 * vitamin_b3 + 21 * vitamin_c >= 82)
model.addConstr(15 * magnesium + 20 * vitamin_b9 >= 155)
model.addConstr(18 * vitamin_b3 + 15 * magnesium >= 117)
model.addConstr(5 * vitamin_d + 20 * vitamin_b9 >= 92)
model.addConstr(5 * vitamin_d + 15 * magnesium >= 103)
model.addConstr(5 * vitamin_d + 18 * vitamin_b3 >= 60)
model.addConstr(18 * vitamin_b3 + 20 * vitamin_b9 >= 161)
model.addConstr(5 * vitamin_d + 21 * vitamin_c >= 107)
model.addConstr(5 * vitamin_d + 18 * vitamin_b3 + 15 * magnesium >= 170)

# ... (add all other constraints similarly)
model.addConstr(19 * vitamin_b3 + 19 * vitamin_c <= 61)
model.addConstr(18 * vitamin_b3 + 21 * vitamin_c <= 441)
model.addConstr(18 * vitamin_b3 + 15 * magnesium <= 251)
model.addConstr(18 * vitamin_b3 + 20 * vitamin_b9 <= 626)



# Optimize model
model.optimize()

# Print results
if model.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % model.objVal)
    for v in model.getVars():
        print('%s %g' % (v.varName, v.x))
elif model.status == gp.GRB.INFEASIBLE:
    print("Model is infeasible")
else:
    print("Model status:", model.status)

```