## Problem Description and Symbolic Representation

The problem involves a toy shop that produces wooden dolls and soldiers. The goal is to maximize profit given the time constraints for crafting and sanding.

### Symbolic Variables:
- $x_1$ = Number of dolls
- $x_2$ = Number of soldiers

### Objective Function:
The profit per doll is $8, and the profit per soldier is $10. Therefore, the objective function to maximize profit is:
\[ \text{Maximize:} \quad 8x_1 + 10x_2 \]

### Constraints:
1. Each doll takes 10 minutes of crafting, and each soldier takes 15 minutes of crafting. The shop has 1000 minutes available for crafting:
\[ 10x_1 + 15x_2 \leq 1000 \]
2. Each doll takes 5 minutes of sanding, and each soldier takes 8 minutes of sanding. The shop has 800 minutes available for sanding:
\[ 5x_1 + 8x_2 \leq 800 \]
3. Non-negativity constraints, as the number of dolls and soldiers cannot be negative:
\[ x_1 \geq 0, \quad x_2 \geq 0 \]

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'dolls'), ('x2', 'soldiers')],
    'objective_function': '8*x1 + 10*x2',
    'constraints': [
        '10*x1 + 15*x2 <= 1000',
        '5*x1 + 8*x2 <= 800',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code in Python

```python
import gurobi

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

    # Define variables
    x1 = model.addVar(name="dolls", lb=0, ub=None, obj=8)  # Number of dolls
    x2 = model.addVar(name="soldiers", lb=0, ub=None, obj=10)  # Number of soldiers

    # Add constraints
    model.addConstr(10*x1 + 15*x2 <= 1000, name="crafting_time")  # Crafting time constraint
    model.addConstr(5*x1 + 8*x2 <= 800, name="sanding_time")  # Sanding time constraint

    # Set the model objective
    model.setObjective(8*x1 + 10*x2, gurobi.GRB.MAXIMIZE)

    # Optimize the model
    model.optimize()

    # Print the results
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Dolls: {x1.x}")
        print(f"Soldiers: {x2.x}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("The model is infeasible.")

solve_toy_shop_problem()
```