## Problem Description and Symbolic Representation

The company wants to minimize the cost of forming teams to complete 100 tasks per hour with a maximum of 10 supervisors. There are two types of teams: small and large.

### Symbolic Representation

Let's define the symbolic variables:
- $x_1$: number of small teams
- $x_2$: number of large teams

The objective function to minimize is the total cost:
- Cost of small teams: $5000x_1$
- Cost of large teams: $15000x_2$
- Total cost: $5000x_1 + 15000x_2$

The constraints are:
- Tasks per hour: $8x_1 + 20x_2 \geq 100$
- Number of supervisors: $x_1 + 3x_2 \leq 10$
- Non-negativity: $x_1 \geq 0, x_2 \geq 0$

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'small teams'), ('x2', 'large teams')],
    'objective_function': '5000*x1 + 15000*x2',
    'constraints': [
        '8*x1 + 20*x2 >= 100',
        'x1 + 3*x2 <= 10',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code in Python

```python
import gurobipy as gp

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

# Define the variables
x1 = model.addVar(name="small_teams", lb=0, vtype=gp.GRB.INTEGER)
x2 = model.addVar(name="large_teams", lb=0, vtype=gp.GRB.INTEGER)

# Define the objective function
model.setObjective(5000*x1 + 15000*x2, gp.GRB.MINIMIZE)

# Add constraints
model.addConstr(8*x1 + 20*x2 >= 100, name="tasks_per_hour")
model.addConstr(x1 + 3*x2 <= 10, name="supervisors")

# Solve the model
model.optimize()

# Print the solution
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal solution: small teams = {x1.varValue}, large teams = {x2.varValue}")
    print(f"Minimum cost: ${model.objVal:.2f}")
else:
    print("No optimal solution found")
```