## Problem Description and Formulation

The problem is a classic example of a linear programming problem. George wants to maximize his profit by buying sneakers and boots for resale, given certain constraints.

### Decision Variables

Let's define the decision variables:

* `s`: number of sneakers to buy
* `b`: number of boots to buy

### Objective Function

The objective is to maximize the profit. The profit per sneaker sold is $50, and the profit per boot sold is $80.

### Constraints

1. **Demand Constraint**: The monthly demand for both sneakers and boots is at most 50.
	* `s <= 50`
	* `b <= 50`
2. **Budget Constraint**: George does not want to spend more than $8750 buying these shoes.
	* `150s + 200b <= 8750`
3. **Non-Negativity Constraint**: George cannot buy a negative number of shoes.
	* `s >= 0`
	* `b >= 0`

### Gurobi Code

```python
import gurobi

# Create a new model
m = gurobi.Model()

# Define the decision variables
s = m.addVar(lb=0, ub=50, name="sneakers")
b = m.addVar(lb=0, ub=50, name="boots")

# Define the objective function
m.setObjective(50 * s + 80 * b, gurobi.GRB.MAXIMIZE)

# Add the budget constraint
m.addConstr(150 * s + 200 * b <= 8750, name="budget")

# Optimize the model
m.optimize()

# Print the solution
if m.status == gurobi.GRB.OPTIMAL:
    print(f"Optimal solution: sneakers = {s.varValue}, boots = {b.varValue}")
    print(f"Maximum profit: ${50 * s.varValue + 80 * b.varValue}")
else:
    print("No optimal solution found")
```