## Step 1: Define the symbolic variables
Let's define the symbolic variables for the problem:
- $x_1$ represents the number of potatoes sold.
- $x_2$ represents the number of pumpkins sold.

## Step 2: Formulate the objective function
The profit from selling $x_1$ potatoes is $1.5x_1$ and from selling $x_2$ pumpkins is $2.8x_2$. Therefore, the total profit $P$ can be represented as:
\[ P = 1.5x_1 + 2.8x_2 \]

## 3: Define the constraints
1. The total cost constraint: $0.50x_1 + 0.90x_2 \leq 1000$
2. The number of pumpkins sold is at most a third of the number of potatoes sold: $x_2 \leq \frac{1}{3}x_1$
3. The number of potatoes sold is at least 250 but at most 800: $250 \leq x_1 \leq 800$
4. Non-negativity constraints: $x_1 \geq 0, x_2 \geq 0$

## 4: Convert constraints into standard form
- The cost constraint remains: $0.50x_1 + 0.90x_2 \leq 1000$
- The pumpkin-potato ratio constraint: $-x_1 + 3x_2 \leq 0$
- The potato sales constraints: $x_1 \geq 250$ and $x_1 \leq 800$

## 5: Symbolic Representation
```json
{
'sym_variables': [('x1', 'potatoes'), ('x2', 'pumpkins')],
'objective_function': '1.5*x1 + 2.8*x2',
'constraints': [
    '0.50*x1 + 0.90*x2 <= 1000',
    '-x1 + 3*x2 <= 0',
    'x1 >= 250',
    'x1 <= 800',
    'x1 >= 0',
    'x2 >= 0'
]
}
```

## 6: Gurobi Code
```python
import gurobipy as gp

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

# Define variables
x1 = m.addVar(lb=0, name="potatoes")  # Number of potatoes
x2 = m.addVar(lb=0, name="pumpkins")  # Number of pumpkins

# Objective function: Maximize profit
m.setObjective(1.5*x1 + 2.8*x2, gp.GRB.MAXIMIZE)

# Constraints
m.addConstr(0.50*x1 + 0.90*x2 <= 1000, name="cost_constraint")
m.addConstr(-x1 + 3*x2 <= 0, name="pumpkin_potato_ratio")
m.addConstr(x1 >= 250, name="min_potatoes")
m.addConstr(x1 <= 800, name="max_potatoes")

# Solve the model
m.solve()

# Print the results
if m.status == gp.GRB.OPTIMAL:
    print("Optimal Solution:")
    print(f"Number of potatoes: {x1.varValue}")
    print(f"Number of pumpkins: {x2.varValue}")
    print(f"Max Profit: {m.objVal}")
else:
    print("The model is infeasible.")
```