## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize profit by determining the number of bean burritos and beef burritos to make, given certain constraints.

### Decision Variables

- \(x\): The number of bean burritos to make.
- \(y\): The number of beef burritos to make.

### Objective Function

The profit per bean burrito is $6.5, and the profit per beef burrito is $9. The objective is to maximize the total profit:

\[ \text{Maximize:} \quad 6.5x + 9y \]

### Constraints

1. **Lettuce Constraint**: The food truck has 5000 grams of lettuce. Given that a bean burrito contains 25 grams of lettuce and a beef burrito contains 18 grams of lettuce:

\[ 25x + 18y \leq 5000 \]

2. **Beef Burrito to Bean Burrito Ratio**: At least four times the amount of beef burritos need to be made than the bean burritos:

\[ y \geq 4x \]

3. **Minimum Bean Burritos**: A minimum of 5 bean burritos need to be made:

\[ x \geq 5 \]

4. **Non-Negativity Constraint**: The number of burritos cannot be negative:

\[ x \geq 0, y \geq 0 \]

However, since \(x \geq 5\), the \(x \geq 0\) constraint is implicitly satisfied.

## Gurobi Code

```python
import gurobipy as gp

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

# Decision variables
x = model.addVar(name="bean_burritos", lb=5, vtype=gp.GRB.INTEGER)  # At least 5 bean burritos
y = model.addVar(name="beef_burritos", vtype=gp.GRB.INTEGER)  # No lower bound specified, but will be constrained

# Objective function: Maximize profit
model.setObjective(6.5 * x + 9 * y, gp.GRB.MAXIMIZE)

# Constraints
model.addConstr(25 * x + 18 * y <= 5000, name="lettuce_constraint")  # Lettuce constraint
model.addConstr(y >= 4 * x, name="beef_to_bean_ratio")  # Beef to bean burrito ratio

# Solve the model
model.optimize()

# Print solution
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal solution found: Bean Burritos = {x.varValue}, Beef Burritos = {y.varValue}")
    print(f"Max Profit: ${model.objVal:.2f}")
else:
    print("No optimal solution found.")
```

This code defines the optimization problem using Gurobi's Python interface, sets up the objective function and constraints, and then solves the model. If an optimal solution is found, it prints out the number of each type of burrito to make and the maximum profit achievable.