## Problem Description and Formulation

The problem is a linear programming optimization problem. David needs to meet his nutritional requirements for iron and calcium by consuming two types of liquid supplementation: regular and premium. The goal is to minimize the cost while meeting these requirements.

### Define the Variables

- Let \(R\) be the amount of regular supplementation in grams.
- Let \(P\) be the amount of premium supplementation in grams.

### Define the Objective Function

The objective is to minimize the total cost. The cost of regular supplementation is $0.04 per gram, and the cost of premium supplementation is $0.08 per gram. Therefore, the objective function is:

\[ \text{Minimize:} \quad 0.04R + 0.08P \]

### Define the Constraints

1. **Iron Requirement:** Regular supplementation consists of 20% iron, and premium supplementation consists of 25% iron. David needs a minimum of 30 grams of iron.
\[ 0.20R + 0.25P \geq 30 \]

2. **Calcium Requirement:** Regular supplementation consists of 30% calcium, and premium supplementation consists of 40% calcium. David needs a minimum of 50 grams of calcium.
\[ 0.30R + 0.40P \geq 50 \]

3. **Non-Negativity Constraints:** The amount of each supplementation cannot be negative.
\[ R \geq 0, P \geq 0 \]

## Gurobi Code

```python
import gurobi

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

    # Define the variables
    R = model.addVar(lb=0, name="Regular_Supplementation")
    P = model.addVar(lb=0, name="Premium_Supplementation")

    # Define the objective function
    model.setObjective(0.04 * R + 0.08 * P, gurobi.GRB.MINIMIZE)

    # Add the iron requirement constraint
    model.addConstr(0.20 * R + 0.25 * P >= 30, name="Iron_Requirement")

    # Add the calcium requirement constraint
    model.addConstr(0.30 * R + 0.40 * P >= 50, name="Calcium_Requirement")

    # Optimize the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Regular Supplementation: {R.varValue} grams")
        print(f"Premium Supplementation: {P.varValue} grams")
        print(f"Total Cost: ${model.objVal:.2f}")
    else:
        print("The model is infeasible.")

solve_supplementation_problem()
```