## Problem Description and Symbolic Representation

The problem involves a scooter company that sells two types of scooters: foldable scooters and electric scooters. The goal is to maximize profit given the constraints on design and engineering team hours.

### Symbolic Representation:

Let's denote:
- $x_1$ as the number of foldable scooters
- $x_2$ as the number of electric scooters

The profit per foldable scooter is $150, and per electric scooter is $200. Therefore, the objective function to maximize profit is:
\[ \text{Maximize:} \quad 150x_1 + 200x_2 \]

Each foldable scooter needs 1.5 hours with the design team and each electric scooter needs 3 hours with the design team. Given 4000 hours available on the design team per month, the design team constraint is:
\[ 1.5x_1 + 3x_2 \leq 4000 \]

Each foldable scooter needs 4 hours with the engineering team, and each electric scooter needs 6 hours with the engineering team. With 5000 hours available on the engineering team per month, the engineering team constraint is:
\[ 4x_1 + 6x_2 \leq 5000 \]

Also, $x_1 \geq 0$ and $x_2 \geq 0$ because the number of scooters cannot be negative.

### Symbolic Representation in JSON Format:

```json
{
    'sym_variables': [('x1', 'foldable scooters'), ('x2', 'electric scooters')],
    'objective_function': '150*x1 + 200*x2',
    'constraints': [
        '1.5*x1 + 3*x2 <= 4000',
        '4*x1 + 6*x2 <= 5000',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code in Python

```python
import gurobipy as gp

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

# Define variables
x1 = model.addVar(name="foldable_scooters", lb=0, vtype=gp.GRB.CONTINUOUS)
x2 = model.addVar(name="electric_scooters", lb=0, vtype=gp.GRB.CONTINUOUS)

# Objective function: Maximize profit
model.setObjective(150*x1 + 200*x2, gp.GRB.MAXIMIZE)

# Constraints
model.addConstr(1.5*x1 + 3*x2 <= 4000, name="design_team_hours")
model.addConstr(4*x1 + 6*x2 <= 5000, name="engineering_team_hours")

# Solve the model
model.optimize()

# Print the results
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal solution found. Production levels: {x1.varValue} foldable scooters, {x2.varValue} electric scooters")
else:
    print("No optimal solution found.")
```