## Problem Description and Formulation

The problem is a classic example of a linear programming problem. Bob's coffee shop wants to maximize profit by determining the optimal number of cups of coffee and tea to produce given certain constraints.

### Decision Variables

- Let \(C\) be the number of cups of coffee produced per week.
- Let \(T\) be the number of cups of tea produced per week.

### Objective Function

The objective is to maximize profit. Given that the profit on each cup of coffee is $1 and on each cup of tea is $2, the objective function can be written as:

\[ \text{Maximize:} \quad 1C + 2T \]

### Constraints

1. **Time Constraint:** It takes 5 minutes to make a cup of coffee and 3 minutes to make a cup of tea. Bob has 500 minutes a week to make drinks.

\[ 5C + 3T \leq 500 \]

2. **Product Constraint:** Bob only has enough product to make 300 total cups per week.

\[ C + T \leq 300 \]

3. **Non-Negativity Constraint:** The number of cups of coffee and tea cannot be negative.

\[ C \geq 0, T \geq 0 \]

## Gurobi Code

To solve this problem using Gurobi in Python, we can use the following code:

```python
import gurobi

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

    # Define the decision variables
    C = model.addVar(lb=0, name="Coffee")
    T = model.addVar(lb=0, name="Tea")

    # Objective function: Maximize 1*C + 2*T
    model.setObjective(C + 2*T, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(5*C + 3*T <= 500, name="Time_Constraint")
    model.addConstr(C + T <= 300, name="Product_Constraint")

    # Optimize the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Cups of Coffee: {C.varValue}")
        print(f"Cups of Tea: {T.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("The model is infeasible")

solve_coffee_tea_problem()
```

This code defines the problem in Gurobi, solves it, and prints out the optimal number of cups of coffee and tea to produce, along with the maximum profit achievable.