```json
{
  "sym_variables": [
    ("x0", "milligrams of vitamin K"),
    ("x1", "milligrams of iron"),
    ("x2", "milligrams of vitamin B1"),
    ("x3", "milligrams of vitamin B9"),
    ("x4", "milligrams of vitamin D")
  ],
  "objective_function": "5.7*x0*x1 + 1.45*x0*x3 + 2.73*x0*x4 + 8.05*x1*x2 + 1.02*x1*x4 + 3.24*x2*x3 + 2.84*x3**2 + 9.27*x3*x4 + 1.9*x4**2 + 9.23*x0 + 1.89*x2 + 2.58*x3 + 2.86*x4",
  "constraints": [
    "3*x0 + 8*x1 + 7*x2 + 8*x3 + 8*x4 <= 229",
    "6*x0 + 7*x1 + 9*x2 + 5*x3 + 1*x4 <= 257",
    "7*x2 + 8*x3 >= 21",
    "8*x1**2 + 8*x3**2 >= 44",
    "3*x0 + 8*x3 >= 44",
    "8*x1**2 + 8*x4**2 >= 29",
    "3*x0 + 8*x1 >= 17",
    "3*x0**2 + 7*x2**2 >= 39",
    "7*x2 + 8*x4 >= 44",
    "8*x1 + 7*x2 >= 17",
    "3*x0 + 8*x1 + 7*x2 >= 29",
    "3*x0 + 8*x3 + 8*x4 >= 29",
    "3*x0 + 8*x1 + 7*x2 >= 42",
    "3*x0 + 8*x3 + 8*x4 >= 42",
    "9*x2**2 + 5*x3**2 >= 49",
    "6*x0**2 + 1*x4**2 >= 31",
    "6*x0 + 5*x3 >= 44",
    "6*x0 + 7*x1 + 1*x4 >= 39",
    "6*x0 + 9*x2 + 5*x3 >= 39",
    "7*x1 + 9*x2 + 5*x3 >= 39",
    "7*x1 + 9*x2 + 1*x4 >= 39",
    "6*x0 + 9*x2 + 1*x4 >= 39",
    "6*x0 + 7*x1 + 1*x4 >= 46",
    "6*x0**2 + 9*x2**2 + 5*x3**2 >= 46",
    "7*x1**2 + 9*x2**2 + 5*x3**2 >= 46",
    "7*x1**2 + 9*x2**2 + 1*x4**2 >= 46",
    "6*x0**2 + 9*x2**2 + 1*x4**2 >= 46",
    "6*x0 + 7*x1 + 1*x4 >= 49",
    "6*x0 + 9*x2 + 5*x3 >= 49",
    "7*x1 + 9*x2 + 5*x3 >= 49",
    "7*x1 + 9*x2 + 1*x4 >= 49",
    "6*x0 + 9*x2 + 1*x4 >= 49",
    "6*x0 + 7*x1 + 1*x4 >= 31",
    "6*x0 + 9*x2 + 5*x3 >= 31",
    "7*x1 + 9*x2 + 5*x3 >= 31",
    "7*x1 + 9*x2 + 1*x4 >= 31",
    "6*x0**2 + 9*x2**2 + 1*x4**2 >= 31",
    "6*x0**2 + 7*x1**2 + 1*x4**2 >= 26",
    "6*x0**2 + 9*x2**2 + 5*x3**2 >= 26",
    "7*x1**2 + 9*x2**2 + 5*x3**2 >= 26",
    "7*x1 + 9*x2 + 1*x4 >= 26",
    "6*x0**2 + 9*x2**2 + 1*x4**2 >= 26",
    "3*x0**2 + 8*x3**2 <= 48",
    "7*x2 + 8*x4 <= 97",
    "3*x0 + 8*x1 <= 218",
    "8*x1 + 7*x2 <= 160",
    "8*x1 + 8*x3 <= 213",
    "7*x2 + 8*x3 <= 209",
    "8*x3 + 8*x4 <= 148",
    "3*x0 + 8*x3 + 8*x4 <= 95",
    "3*x0 + 7*x2 + 8*x3 <= 89",
    "8*x1 + 8*x3 + 8*x4 <= 45",
    "8*x1 + 7*x2 + 8*x4 <= 221",
    "3*x0 + 8*x1 + 7*x2 <= 206",
    "8*x1 + 7*x2 + 8*x3 <= 118",
    "3*x0 + 8*x1 + 7*x2 + 8*x3 + 8*x4 <= 118",
    "6*x0 + 5*x3 <= 197",
    "6*x0**2 + 1*x4**2 <= 195",
    "7*x1 + 9*x2 <= 137",
    "9*x2 + 5*x3 <= 116",
    "6*x0**2 + 9*x2**2 <= 254",
    "6*x0 + 7*x1 + 1*x4 <= 241",
    "6*x0 + 7*x1 + 9*x2 + 5*x3 + 1*x4 <= 241"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
vitamin_k = m.addVar(lb=0, name="vitamin_k")
iron = m.addVar(lb=0, name="iron")
vitamin_b1 = m.addVar(lb=0, name="vitamin_b1")
vitamin_b9 = m.addVar(lb=0, name="vitamin_b9")
vitamin_d = m.addVar(lb=0, name="vitamin_d")


# Set objective function
m.setObjective(5.7*vitamin_k*iron + 1.45*vitamin_k*vitamin_b9 + 2.73*vitamin_k*vitamin_d + 8.05*iron*vitamin_b1 + 1.02*iron*vitamin_d + 3.24*vitamin_b1*vitamin_b9 + 2.84*vitamin_b9**2 + 9.27*vitamin_b9*vitamin_d + 1.9*vitamin_d**2 + 9.23*vitamin_k + 1.89*vitamin_b1 + 2.58*vitamin_b9 + 2.86*vitamin_d, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(3*vitamin_k + 8*iron + 7*vitamin_b1 + 8*vitamin_b9 + 8*vitamin_d <= 229)
m.addConstr(6*vitamin_k + 7*iron + 9*vitamin_b1 + 5*vitamin_b9 + 1*vitamin_d <= 257)
m.addConstr(7*vitamin_b1 + 8*vitamin_b9 >= 21)
m.addConstr(8*iron**2 + 8*vitamin_b9**2 >= 44)
m.addConstr(3*vitamin_k + 8*vitamin_b9 >= 44)
m.addConstr(8*iron**2 + 8*vitamin_d**2 >= 29)
m.addConstr(3*vitamin_k + 8*iron >= 17)
m.addConstr(3*vitamin_k**2 + 7*vitamin_b1**2 >= 39)
m.addConstr(7*vitamin_b1 + 8*vitamin_d >= 44)
m.addConstr(8*iron + 7*vitamin_b1 >= 17)
m.addConstr(3*vitamin_k + 8*iron + 7*vitamin_b1 >= 29)
m.addConstr(3*vitamin_k + 8*vitamin_b9 + 8*vitamin_d >= 29)
m.addConstr(3*vitamin_k + 8*iron + 7*vitamin_b1 >= 42)
m.addConstr(3*vitamin_k + 8*vitamin_b9 + 8*vitamin_d >= 42)
# ... (rest of the constraints)


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

```