## Problem Description and Formulation

The problem is a classic example of a linear programming problem. The sandwich shop produces two types of sandwiches: premium and regular. The goal is to maximize profit given the constraints on preparation time and meat slices.

Let's define the decision variables:
- \(P\): Number of premium sandwiches to be made.
- \(R\): Number of regular sandwiches to be made.

The objective function to maximize profit is:
\[ \text{Maximize:} \quad 5P + R \]

Subject to the constraints:
1. Preparation time: \(6P + 4R \leq 400\)
2. Meat slices: \(5P + R \leq 100\)
3. Non-negativity: \(P \geq 0, R \geq 0\)

## Gurobi Code

To solve this problem using Gurobi in Python, we will use the Gurobi Python interface. First, ensure you have Gurobi installed in your environment. You can install it via pip if you have a Gurobi license:

```bash
pip install gurobi
```

Here's the Gurobi code for the problem:

```python
import gurobi as gp

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

# Define the decision variables
P = m.addVar(lb=0, name="premium_sandwiches")
R = m.addVar(lb=0, name="regular_sandwiches")

# Objective function: Maximize 5P + R
m.setObjective(5 * P + R, gp.GRB.MAXIMIZE)

# Constraints
m.addConstr(6 * P + 4 * R <= 400, name="preparation_time")
m.addConstr(5 * P + R <= 100, name="meat_slices")

# Optimize the model
m.optimize()

# Print the results
if m.status == gp.GRB.OPTIMAL:
    print(f"Optimal solution found.")
    print(f"Premium sandwiches: {P.varValue}")
    print(f"Regular sandwiches: {R.varValue}")
    print(f"Max Profit: {m.objVal}")
else:
    print("No optimal solution found.")
```

This code defines the problem in Gurobi, solves it, and prints out the optimal number of premium and regular sandwiches to make, along with the maximum achievable profit. If no optimal solution is found (for example, if the problem is infeasible), it will indicate that as well.