## Problem Description and Formulation

Linda's bakery problem can be formulated as a linear programming (LP) problem. The goal is to maximize revenue given the constraints on mixing time and vanilla extract.

Let's define the decision variables:
- \(x\): the number of chocolate chip cookies
- \(y\): the number of oatmeal cookies

The objective function to maximize revenue is:
\[ \text{Maximize:} \quad 4x + 3y \]

The constraints are:
1. Mixing time: \( 10x + 20y \leq 360 \)
2. Vanilla extract: \( x + 2y \leq 50 \)
3. Non-negativity: \( x \geq 0, y \geq 0 \)

## Gurobi Code

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

```python
import gurobipy as gp

# Create a new model
model = gp.Model("Linda_Bakery")

# Define the decision variables
x = model.addVar(name="chocolate_chip_cookies", lb=0)
y = model.addVar(name="oatmeal_cookies", lb=0)

# Objective function: Maximize revenue
model.setObjective(4*x + 3*y, gp.GRB.MAXIMIZE)

# Constraints
model.addConstr(10*x + 20*y <= 360, name="mixing_time")
model.addConstr(x + 2*y <= 50, name="vanilla_extract")

# Solve the model
model.solve()

# Output the solution
if model.status == gp.GRB.OPTIMAL:
    print("Optimal Solution:")
    print(f"Chocolate Chip Cookies: {x.varValue}")
    print(f"Oatmeal Cookies: {y.varValue}")
    print(f"Max Revenue: {model.objVal}")
else:
    print("The model is infeasible.")
```

This code defines the LP problem as described, sets up the objective function and constraints, and then solves the model using Gurobi. If an optimal solution exists, it prints out the number of each type of cookie and the maximum revenue; otherwise, it indicates that the model is infeasible.