## Symbolic Representation

The problem can be converted into a symbolic representation as follows:

* Let `x1` be the number of coats and `x2` be the number of shirts.
* The objective function is to maximize profit: `6*x1 + 11*x2`.
* The constraints are:
	+ Measuring team: `0.7*x1 + 0.2*x2 <= 50`.
	+ Cutting team: `0.5*x1 + 0.3*x2 <= 35`.
	+ Sewing team: `0.9*x1 + 0.5*x2 <= 40`.
	+ Non-negativity: `x1 >= 0`, `x2 >= 0`.

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'coats'), ('x2', 'shirts')],
    'objective_function': '6*x1 + 11*x2',
    'constraints': [
        '0.7*x1 + 0.2*x2 <= 50',
        '0.5*x1 + 0.3*x2 <= 35',
        '0.9*x1 + 0.5*x2 <= 40',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code

```python
import gurobipy as gp

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

# Define variables
x1 = m.addVar(name="coats", lb=0, vtype=gp.GRB.CONTINUOUS)
x2 = m.addVar(name="shirts", lb=0, vtype=gp.GRB.CONTINUOUS)

# Define objective function
m.setObjective(6*x1 + 11*x2, gp.GRB.MAXIMIZE)

# Define constraints
m.addConstr(0.7*x1 + 0.2*x2 <= 50, name="measuring_team")
m.addConstr(0.5*x1 + 0.3*x2 <= 35, name="cutting_team")
m.addConstr(0.9*x1 + 0.5*x2 <= 40, name="sewing_team")

# Solve the model
m.optimize()

# Print the solution
if m.status == gp.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Number of coats: {x1.varValue}")
    print(f"Number of shirts: {x2.varValue}")
    print(f"Max profit: {m.objVal}")
else:
    print("No optimal solution found.")
```