## Problem Description and Formulation

The milk tea shop has 50,000 ml of milk to make two types of milk teas: black milk tea and green milk tea. The shop wants to maximize profit by determining how many bottles of each type to make, given the following constraints:

- A bottle of black milk tea contains 300 ml of milk.
- A bottle of green milk tea contains 200 ml of milk.
- The shop must make at least three times the number of bottles of black milk tea than green milk tea.
- The shop must make at least 10 bottles of green milk tea.
- Each bottle of black milk tea is sold for a profit of $2.5.
- Each bottle of green milk tea is sold for a profit of $7.

## Mathematical Formulation

Let \(B\) be the number of bottles of black milk tea and \(G\) be the number of bottles of green milk tea.

- **Objective Function (Maximize Profit):** \( \text{Maximize} \quad 2.5B + 7G \)
- **Constraints:**
  1. **Milk Constraint:** \( 300B + 200G \leq 50000 \)
  2. **Black vs. Green Milk Tea Ratio:** \( B \geq 3G \)
  3. **Minimum Green Milk Tea:** \( G \geq 10 \)
  4. **Non-Negativity:** \( B \geq 0, G \geq 0 \)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    B = model.addVar(name="Black_Milk_Tea", lb=0, vtype=gurobi.GRB.INTEGER)
    G = model.addVar(name="Green_Milk_Tea", lb=0, vtype=gurobi.GRB.INTEGER)

    # Objective function: Maximize profit
    model.setObjective(2.5 * B + 7 * G, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(300 * B + 200 * G <= 50000, name="Milk_Constraint")
    model.addConstr(B >= 3 * G, name="Black_vs_Green_Ratio")
    model.addConstr(G >= 10, name="Minimum_Green_Milk_Tea")

    # Solve the model
    model.optimize()

    # Print the results
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution found.")
        print(f"Black Milk Tea: {B.varValue}")
        print(f"Green Milk Tea: {G.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("No optimal solution found.")

# Run the optimization
milk_tea_optimization()
```

This Gurobi code formulates the milk tea shop's optimization problem and solves it to find the number of bottles of black and green milk tea that maximizes profit while satisfying all given constraints.