## Problem Description and Formulation

The problem is a classic example of a linear programming problem. The goal is to maximize profit by determining the optimal number of hockey nets and basketball hoops to stock, given certain constraints.

### Decision Variables

* $x$: number of hockey nets
* $y$: number of basketball hoops

### Objective Function

The objective is to maximize profit. The profit per hockey net is $50, and the profit per basketball hoop is $75.

Maximize: $50x + 75y$

### Constraints

1. **Space Constraint**: Each hockey net takes 5 sq ft of space, and each basketball hoop takes 3 sq ft of space. The warehouse has 300 sq ft of space available.

$5x + 3y \leq 300$

2. **Budget Constraint**: The warehouse has a budget of $10,000. Each hockey net costs $100, and each basketball hoop costs $150.

$100x + 150y \leq 10000$

3. **Product Mix Constraint**: At least 65% of all items in stock must be hockey nets.

$x \geq 0.65(x + y)$

Simplifying the constraint:

$0.35x \geq 0.65y$

$x \geq \frac{0.65}{0.35}y$

$x \geq 1.8571y$

4. **Non-Negativity Constraints**: The number of hockey nets and basketball hoops cannot be negative.

$x \geq 0, y \geq 0$

## Gurobi Code

```python
import gurobi

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

    # Define decision variables
    x = model.addVar(name="x", obj=50, vtype=gurobi.GRB.INTEGER)  # number of hockey nets
    y = model.addVar(name="y", obj=75, vtype=gurobi.GRB.INTEGER)  # number of basketball hoops

    # Space constraint
    model.addConstr(5 * x + 3 * y <= 300, name="space_constraint")

    # Budget constraint
    model.addConstr(100 * x + 150 * y <= 10000, name="budget_constraint")

    # Product mix constraint
    model.addConstr(x >= 1.8571 * y, name="product_mix_constraint")

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x = {x.varValue:.0f}, y = {y.varValue:.0f}")
        print(f"Maximum profit: ${50 * x.varValue + 75 * y.varValue:.2f}")
    else:
        print("No optimal solution found")

solve_optimization_problem()
```