## Problem Description and Formulation

The food truck optimization problem can be formulated as a linear programming problem. Let's define the decision variables:

- \(x\): the number of beef burritos to sell
- \(y\): the number of pork burritos to sell

The objective is to maximize profit, given that the profit per beef burrito is $3.5 and per pork burrito is $2.1.

## Objective Function

The objective function to maximize profit (\(P\)) is:
\[ P = 3.5x + 2.1y \]

## Constraints

1. **Total Burritos Constraint**: The food truck can make at most 100 burritos.
\[ x + y \leq 100 \]

2. **Minimum Beef Burritos Constraint**: They must sell at least 20 beef burritos.
\[ x \geq 20 \]

3. **Minimum Pork Burritos Constraint**: They must sell at least 30 pork burritos.
\[ y \geq 30 \]

4. **Maximum Beef Burritos Constraint**: They can make at most 70 beef burritos.
\[ x \leq 70 \]

5. **Maximum Pork Burritos Constraint**: They can make at most 80 pork burritos.
\[ y \leq 80 \]

6. **Non-Negativity Constraints**: The number of burritos cannot be negative.
\[ x \geq 0, y \geq 0 \]
However, these are implicitly satisfied by the minimum constraints.

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x = model.addVar(lb=20, ub=70, name="beef_burritos")
    y = model.addVar(lb=30, ub=80, name="pork_burritos")

    # Objective function: maximize profit
    model.setObjective(3.5 * x + 2.1 * y, gurobi.GRB.MAXIMIZE)

    # Total burritos constraint
    model.addConstr(x + y <= 100, name="total_burritos")

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x = {x.varValue}, y = {y.varValue}")
        print(f"Maximum profit: {model.objVal}")
    else:
        print("The model is infeasible")

# Run the function
solve_burrito_problem()
```