## Problem Description and Formulation

The problem is a linear programming (LP) optimization problem. Julia wants to minimize the cost of her diet while meeting certain nutritional requirements. The decision variables are the number of servings of vanilla protein bars and organic meal replacement shakes.

Let's denote:
- \(x\) as the number of servings of vanilla protein bars
- \(y\) as the number of servings of organic meal replacement shakes

The objective is to minimize the total cost:
\[ \text{Minimize:} \quad 10x + 15y \]

Subject to the following constraints:
1. Protein requirement: \( 30x + 10y \geq 155 \)
2. Carbs requirement: \( 50x + 20y \geq 140 \)
3. Fat limit: \( 2x + 5y \leq 55 \)
4. Non-negativity: \( x \geq 0, y \geq 0 \)

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x = model.addVar(name="vanilla_protein_bars", lb=0, ub=gurobi.GRB.INFINITY)
    y = model.addVar(name="organic_meal_replacement_shakes", lb=0, ub=gurobi.GRB.INFINITY)

    # Define the objective function
    model.setObjective(10*x + 15*y, gurobi.GRB.MINIMIZE)

    # Add constraints
    model.addConstr(30*x + 10*y >= 155, name="protein_requirement")
    model.addConstr(50*x + 20*y >= 140, name="carbs_requirement")
    model.addConstr(2*x + 5*y <= 55, name="fat_limit")

    # Optimize the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Vanilla protein bars: {x.varValue}")
        print(f"Organic meal replacement shakes: {y.varValue}")
        print(f"Total cost: {model.objVal}")
    elif model.status == gurobi.GRB.INFEASIBLE:
        print("The model is infeasible.")
    else:
        print("The model has a non-optimal status.")

solve_diet_problem()
```