## Problem Description and Formulation

The problem is an optimization problem with a linear objective function and linear constraints. The goal is to minimize the objective function subject to several constraints.

### Variables

* `magnesium`: milligrams of magnesium
* `carbohydrates`: grams of carbohydrates
* `vitamin_B4`: milligrams of vitamin B4
* `vitamin_A`: milligrams of vitamin A

### Objective Function

Minimize: `8.48 * magnesium + 5.91 * carbohydrates + 6.67 * vitamin_B4 + 5.11 * vitamin_A`

### Constraints

1. `magnesium` has an immune support index of 4.39
2. `carbohydrates` has an immune support index of 6.81
3. `vitamin_B4` has an immune support index of 0.77
4. `vitamin_A` has an immune support index of 3.47
5. `4.39 * magnesium + 6.81 * carbohydrates >= 50`
6. `4.39 * magnesium + 0.77 * vitamin_B4 >= 66`
7. `6.81 * carbohydrates + 3.47 * vitamin_A >= 73`
8. `4.39 * magnesium + 6.81 * carbohydrates + 0.77 * vitamin_B4 + 3.47 * vitamin_A >= 73`
9. `-2 * magnesium + carbohydrates >= 0`
10. `-10 * vitamin_B4 + 3 * vitamin_A >= 0`
11. `4.39 * magnesium + 3.47 * vitamin_A <= 366`
12. `4.39 * magnesium + 0.77 * vitamin_B4 + 3.47 * vitamin_A <= 431`
13. `4.39 * magnesium + 6.81 * carbohydrates + 0.77 * vitamin_B4 <= 435`

## Gurobi Code

```python
import gurobi

def solve_optimization_problem():
    # Create a new Gurobi model
    model = gurobi.Model()

    # Define variables
    magnesium = model.addVar(name="magnesium", lb=-gurobi.GRB.INFINITY)
    carbohydrates = model.addVar(name="carbohydrates", lb=-gurobi.GRB.INFINITY)
    vitamin_B4 = model.addVar(name="vitamin_B4", lb=-gurobi.GRB.INFINITY)
    vitamin_A = model.addVar(name="vitamin_A", lb=-gurobi.GRB.INFINITY)

    # Objective function
    model.setObjective(8.48 * magnesium + 5.91 * carbohydrates + 6.67 * vitamin_B4 + 5.11 * vitamin_A, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(4.39 * magnesium + 6.81 * carbohydrates >= 50)
    model.addConstr(4.39 * magnesium + 0.77 * vitamin_B4 >= 66)
    model.addConstr(6.81 * carbohydrates + 3.47 * vitamin_A >= 73)
    model.addConstr(4.39 * magnesium + 6.81 * carbohydrates + 0.77 * vitamin_B4 + 3.47 * vitamin_A >= 73)
    model.addConstr(-2 * magnesium + carbohydrates >= 0)
    model.addConstr(-10 * vitamin_B4 + 3 * vitamin_A >= 0)
    model.addConstr(4.39 * magnesium + 3.47 * vitamin_A <= 366)
    model.addConstr(4.39 * magnesium + 0.77 * vitamin_B4 + 3.47 * vitamin_A <= 431)
    model.addConstr(4.39 * magnesium + 6.81 * carbohydrates + 0.77 * vitamin_B4 <= 435)

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Magnesium: {magnesium.x}")
        print(f"Carbohydrates: {carbohydrates.x}")
        print(f"Vitamin B4: {vitamin_B4.x}")
        print(f"Vitamin A: {vitamin_A.x}")
        print(f"Objective function value: {model.objVal}")
    elif model.status == gurobi.GRB.INFEASIBLE:
        print("No feasible solution found.")
    else:
        print("Optimization failed.")

solve_optimization_problem()
```