## Problem Description and Formulation

The problem involves two sisters, Joy and Willa, who run a stand selling green tea and pancakes. The goal is to maximize profit given the time constraints of both sisters.

### Variables
- Let \(x\) be the number of pitchers of green tea.
- Let \(y\) be the number of batches of pancakes.

### Objective Function
The profit per pitcher of green tea is $2.5, and the profit per batch of pancakes is $10. The objective function to maximize profit (\(P\)) is:
\[ P = 2.5x + 10y \]

### Constraints
1. **Joy's Time Constraint**: A pitcher of green tea takes 0.7 hours of Joy's time, and a batch of pancakes takes 1.2 hours. Joy has 8 hours available each day.
\[ 0.7x + 1.2y \leq 8 \]

2. **Willa's Time Constraint**: A pitcher of green tea takes 0.3 hours of Willa's time, and a batch of pancakes takes 0.6 hours. Willa has 5 hours available each day.
\[ 0.3x + 0.6y \leq 5 \]

3. **Non-Negativity Constraints**: The number of pitchers of green tea and batches of pancakes cannot be negative.
\[ x \geq 0, y \geq 0 \]

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x = model.addVar(name="green_tea", lb=0, ub=gurobi.GRB.INFINITY)
    y = model.addVar(name="pancakes", lb=0, ub=gurobi.GRB.INFINITY)

    # Objective function: Maximize profit
    model.setObjective(2.5 * x + 10 * y, gurobi.GRB.MAXIMIZE)

    # Joy's time constraint
    model.addConstr(0.7 * x + 1.2 * y <= 8, name="joy_time_constraint")

    # Willa's time constraint
    model.addConstr(0.3 * x + 0.6 * y <= 5, name="willa_time_constraint")

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.Status.OPTIMAL:
        print(f"Optimal profit: ${model.objVal:.2f}")
        print(f"Pitchers of green tea: {x.varValue:.2f}")
        print(f"Batches of pancakes: {y.varValue:.2f}")
    else:
        print("The model is infeasible.")

solve_optimization_problem()
```