## 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 bottles of almond bubble tea (`x1`) and ginger bubble tea (`x2`) to produce daily.

### Objective Function

The profit from `x1` bottles of almond bubble tea is $5 each, and the profit from `x2` bottles of ginger bubble tea is $9 each. Therefore, the total profit `P` can be represented as:

`P = 5*x1 + 9*x2`

### Constraints

1. **Non-negativity constraints**: The number of bottles of each type of bubble tea must be greater than or equal to 0.
   - `x1 >= 0`
   - `x2 >= 0`

2. **Demand constraints**:
   - The demand for almond bubble tea is limited to at most 120 bottles per day: `x1 <= 120`
   - The demand for ginger bubble tea is limited to at most 200 bottles per day: `x2 <= 200`

3. **Production capacity constraint**: The store can make a maximum of 300 bottles of bubble tea per day.
   - `x1 + x2 <= 300`

## Gurobi Code

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

```python
import gurobi

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

    # Define variables
    x1 = model.addVar(lb=0, name="almond_bubble_tea")  # Number of almond bubble tea bottles
    x2 = model.addVar(lb=0, name="ginger_bubble_tea")  # Number of ginger bubble tea bottles

    # Objective function: Maximize profit
    model.setObjective(5*x1 + 9*x2, gurobi.GRB.MAXIMIZE)

    # Demand constraints
    model.addConstr(x1 <= 120, name="almond_demand_constraint")
    model.addConstr(x2 <= 200, name="ginger_demand_constraint")

    # Production capacity constraint
    model.addConstr(x1 + x2 <= 300, name="production_capacity_constraint")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x1 = {x1.varValue}, x2 = {x2.varValue}")
        print(f"Maximum profit: ${5*x1.varValue + 9*x2.varValue:.2f}")
    else:
        print("No optimal solution found.")

# Run the function
solve_bubble_tea_problem()
```

This code defines the optimization problem using Gurobi's Python interface, solves it, and prints out the optimal production levels for almond and ginger bubble tea, along with the maximum achievable profit.