## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize profit by determining the number of police officer costumes and fireman costumes a store should make, given certain constraints.

### Decision Variables

- \(x\): The number of police officer costumes to make.
- \(y\): The number of fireman costumes to make.

### Objective Function

The profit per police officer costume is $10, and the profit per fireman costume is $12. The objective is to maximize the total profit \(P\), which can be represented as:
\[ P = 10x + 12y \]

### Constraints

1. **Time Constraint**: It takes 10 minutes to make a police officer costume and 12 minutes to make a fireman costume. The store has 3000 minutes available.
\[ 10x + 12y \leq 3000 \]

2. **Popularity Constraint**: The store must make at least 3 times as many fireman costumes as police officer costumes.
\[ y \geq 3x \]

3. **Non-Negativity Constraint**: The number of costumes cannot be negative.
\[ x \geq 0, y \geq 0 \]

## Gurobi Code

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

```python
import gurobi

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

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

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

    # Time constraint
    model.addConstr(10*x + 12*y <= 3000, name="Time_Constraint")

    # Popularity constraint
    model.addConstr(y >= 3*x, name="Popularity_Constraint")

    # Optimize the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution:")
        print(f"Police Officer Costumes: {x.varValue}")
        print(f"Fireman Costumes: {y.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("The model is infeasible.")

solve_costume_problem()
```

This code defines the optimization problem using Gurobi's Python interface, solves it, and prints out the optimal solution if one exists.