## Problem Description and Formulation

Adrian needs to gain weight and has decided to eat only bagels and burgers. His requirements are:
- A minimum of 2500 calories per day
- At least 500 grams of fat per day

The costs and nutritional contents of each food item are as follows:
- Bagel: $4.5, 250 calories, 15 grams of fat
- Burger: $12, 800 calories, 23.5 grams of fat

The goal is to minimize the cost while meeting the nutritional requirements.

## Mathematical Formulation

Let's denote:
- \(B\) as the number of bagels
- \(R\) as the number of burgers

The objective function to minimize is the total cost:
\[ \text{Minimize:} \quad 4.5B + 12R \]

Subject to the constraints:
1. **Calories constraint:** \( 250B + 800R \geq 2500 \)
2. **Fat constraint:** \( 15B + 23.5R \geq 500 \)
3. **Non-negativity constraint:** \( B \geq 0, R \geq 0 \)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    B = model.addVar(name="bagels", lb=0, vtype=gurobi.GRB.CONTINUOUS)
    R = model.addVar(name="burgers", lb=0, vtype=gurobi.GRB.CONTINUOUS)

    # Objective function: minimize cost
    model.setObjective(4.5 * B + 12 * R, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(250 * B + 800 * R >= 2500, name="calories")
    model.addConstr(15 * B + 23.5 * R >= 500, name="fat")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal cost: ${model.objVal:.2f}")
        print(f"Bagels: {B.varValue:.2f}")
        print(f"Burgers: {R.varValue:.2f}")
    else:
        print("No optimal solution found.")

if __name__ == "__main__":
    solve_adrian_diet_problem()
```