```json
{
  "sym_variables": [
    ("x0", "milligrams of vitamin A"),
    ("x1", "milligrams of vitamin K"),
    ("x2", "milligrams of vitamin C")
  ],
  "objective_function": "1.0 * x0 + 7.79 * x1 + 9.88 * x2",
  "constraints": [
    "9 * x0 + 1 * x1 >= 44",
    "9 * x0 + 10 * x2 >= 68",
    "9 * x0 + 1 * x1 + 10 * x2 >= 68",
    "16 * x0 + 11 * x2 >= 53",
    "15 * x1 + 11 * x2 >= 30",
    "16 * x0 + 15 * x1 + 11 * x2 >= 30",
    "6 * x0 + 6 * x2 >= 39",
    "15 * x1 + 6 * x2 >= 46",
    "6 * x0 + 15 * x1 + 6 * x2 >= 46",
    "5 * x1 + 14 * x2 >= 25",
    "14 * x0 + 5 * x1 >= 35",
    "14 * x0 + 14 * x2 >= 40",
    "14 * x0 + 5 * x1 + 14 * x2 >= 40",
    "15 * x0 + 15 * x1 >= 25",
    "15 * x0 + 8 * x2 >= 24",
    "15 * x0 + 15 * x1 + 8 * x2 >= 24",
    "-4 * x0 + 2 * x1 >= 0",
    "10 * x0 - 8 * x2 >= 0",
    "9 * x0 + 10 * x2 <= 211",
    "1 * x1 + 10 * x2 <= 140",
    "9 * x0 + 1 * x1 <= 213",
    "16 * x0 + 11 * x2 <= 172",
    "6 * x0 + 6 * x2 <= 89",
    "6 * x0 + 15 * x1 + 6 * x2 <= 147",
    "5 * x1 + 14 * x2 <= 170",
    "14 * x0 + 5 * x1 + 14 * x2 <= 172",
    "15 * x0 + 15 * x1 <= 49",
    "x0 >= 0",
    "x1 >= 0",
    "x2 >= 0"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
vitamin_a = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_a")
vitamin_k = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_k")
vitamin_c = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="vitamin_c")


# Set objective function
m.setObjective(1.0 * vitamin_a + 7.79 * vitamin_k + 9.88 * vitamin_c, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(9 * vitamin_a + 1 * vitamin_k >= 44)
m.addConstr(9 * vitamin_a + 10 * vitamin_c >= 68)
m.addConstr(9 * vitamin_a + 1 * vitamin_k + 10 * vitamin_c >= 68)
m.addConstr(16 * vitamin_a + 11 * vitamin_c >= 53)
m.addConstr(15 * vitamin_k + 11 * vitamin_c >= 30)
m.addConstr(16 * vitamin_a + 15 * vitamin_k + 11 * vitamin_c >= 30)
m.addConstr(6 * vitamin_a + 6 * vitamin_c >= 39)
m.addConstr(15 * vitamin_k + 6 * vitamin_c >= 46)
m.addConstr(6 * vitamin_a + 15 * vitamin_k + 6 * vitamin_c >= 46)
m.addConstr(5 * vitamin_k + 14 * vitamin_c >= 25)
m.addConstr(14 * vitamin_a + 5 * vitamin_k >= 35)
m.addConstr(14 * vitamin_a + 14 * vitamin_c >= 40)
m.addConstr(14 * vitamin_a + 5 * vitamin_k + 14 * vitamin_c >= 40)
m.addConstr(15 * vitamin_a + 15 * vitamin_k >= 25)
m.addConstr(15 * vitamin_a + 8 * vitamin_c >= 24)
m.addConstr(15 * vitamin_a + 15 * vitamin_k + 8 * vitamin_c >= 24)
m.addConstr(-4 * vitamin_a + 2 * vitamin_k >= 0)
m.addConstr(10 * vitamin_a - 8 * vitamin_c >= 0)
m.addConstr(9 * vitamin_a + 10 * vitamin_c <= 211)
m.addConstr(1 * vitamin_k + 10 * vitamin_c <= 140)
m.addConstr(9 * vitamin_a + 1 * vitamin_k <= 213)
m.addConstr(16 * vitamin_a + 11 * vitamin_c <= 172)
m.addConstr(6 * vitamin_a + 6 * vitamin_c <= 89)
m.addConstr(6 * vitamin_a + 15 * vitamin_k + 6 * vitamin_c <= 147)
m.addConstr(5 * vitamin_k + 14 * vitamin_c <= 170)
m.addConstr(14 * vitamin_a + 5 * vitamin_k + 14 * vitamin_c <= 172)
m.addConstr(15 * vitamin_a + 15 * vitamin_k <= 49)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    print('vitamin_a:', vitamin_a.x)
    print('vitamin_k:', vitamin_k.x)
    print('vitamin_c:', vitamin_c.x)
elif m.status == gp.GRB.INFEASIBLE:
    print('The model is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)

```