## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize the profit of a bubble tea store by determining the optimal number of peach and mango flavored drinks to sell.

### Decision Variables

*   Let $x$ be the number of mango drinks sold.
*   Let $y$ be the number of peach drinks sold.

### Objective Function

*   The profit per mango drink is $2, and the profit per peach drink is $3. The objective function to maximize the total profit is: $2x + 3y$.

### Constraints

*   The store can make at most 150 drinks total: $x + y \leq 150$.
*   The store must sell at least 60 mango drinks: $x \geq 60$.
*   The store must sell at least 40 peach drinks: $y \geq 40$.
*   Due to fruit shortages, the store can make at most 120 mango drinks: $x \leq 120$.
*   Due to fruit shortages, the store can make at most 70 peach drinks: $y \leq 70$.

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x = model.addVar(lb=60, ub=120, name="mango_drinks")
    y = model.addVar(lb=40, ub=70, name="peach_drinks")

    # Set the objective function to maximize profit
    model.setObjective(2 * x + 3 * y, gurobi.GRB.MAXIMIZE)

    # Add the constraint for the total number of drinks
    model.addConstr(x + y <= 150, name="total_drinks")

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        # Get the optimal values for x and y
        mango_drinks = x.varValue
        peach_drinks = y.varValue
        print(f"Optimal solution: Mango drinks = {mango_drinks}, Peach drinks = {peach_drinks}")
        print(f"Maximum profit: ${2 * mango_drinks + 3 * peach_drinks}")
    else:
        print("The model is infeasible.")

solve_bubble_tea_problem()
```