## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize the profit from buying and selling two types of sneakers, Brand A and Brand B, given certain constraints.

### Variables
- \(x_A\): The number of Brand A sneakers to buy and sell.
- \(x_B\): The number of Brand B sneakers to buy and sell.

### Objective Function
The objective is to maximize the total profit \(P\), where the profit per Brand A sneaker is $50 and per Brand B sneaker is $75. So, the objective function is:
\[P = 50x_A + 75x_B\]

### Constraints
1. **Budget Constraint**: The total cost of buying the sneakers cannot exceed $2000. Given that Brand A sneakers cost $100 each and Brand B sneakers cost $150 each, we have:
\[100x_A + 150x_B \leq 2000\]

2. **Sales Constraint**: The total number of sneakers sold cannot exceed 15:
\[x_A + x_B \leq 15\]

3. **Non-Negativity Constraint**: The number of sneakers cannot be negative:
\[x_A \geq 0, x_B \geq 0\]
And since we are dealing with whole items, \(x_A\) and \(x_B\) should also be integers.

## Gurobi Code

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

```python
import gurobi

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

    # Define variables
    x_A = model.addVar(lb=0, vtype=gurobi.GRB.INTEGER, name="Brand_A")
    x_B = model.addVar(lb=0, vtype=gurobi.GRB.INTEGER, name="Brand_B")

    # Objective function: Maximize profit
    model.setObjective(50 * x_A + 75 * x_B, gurobi.GRB.MAXIMIZE)

    # Budget constraint
    model.addConstr(100 * x_A + 150 * x_B <= 2000, name="Budget_Constraint")

    # Sales constraint
    model.addConstr(x_A + x_B <= 15, name="Sales_Constraint")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution found. Buying and selling {x_A.varName} = {x_A.x} and {x_B.varName} = {x_B.x} maximizes profit.")
    else:
        print("No optimal solution found.")

solve_sneaker_problem()
```

This code defines the problem in Gurobi, solves it, and prints out the optimal solution if one is found. Note that due to the nature of the problem and Gurobi's solver, it will find an optimal integer solution if one exists.