To solve the optimization problem described, we first need to convert the natural language description into a symbolic representation. This involves defining variables for the quantities of skirts and coats produced, expressing the objective function (which is to maximize profit) in terms of these variables, and then listing the constraints based on the available machine hours.

Let's denote:
- \(x_1\) as the number of skirts produced,
- \(x_2\) as the number of coats produced.

The objective function, which aims to maximize profit, can be represented as:
\[300x_1 + 500x_2\]

Given that a skirt requires 3 hours on the sewing machine and a coat requires 2 hours, with only 25 hours available, the first constraint is:
\[3x_1 + 2x_2 \leq 25\]

For the embroidery machine, with a skirt requiring 5 hours and a coat requiring 3.5 hours, and 35 hours available, the second constraint is:
\[5x_1 + 3.5x_2 \leq 35\]

Additionally, we must consider that production quantities cannot be negative:
\[x_1 \geq 0, x_2 \geq 0\]

In symbolic notation with natural language objects, our problem can be summarized as:

```json
{
  'sym_variables': [('x1', 'number of skirts'), ('x2', 'number of coats')],
  'objective_function': '300*x1 + 500*x2',
  'constraints': ['3*x1 + 2*x2 <= 25', '5*x1 + 3.5*x2 <= 35', 'x1 >= 0', 'x2 >= 0']
}
```

To solve this problem using Gurobi in Python, we will write the following code:

```python
from gurobipy import *

# Create a new model
m = Model("Mia_Clothing")

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

# Set the objective function
m.setObjective(300*x1 + 500*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(3*x1 + 2*x2 <= 25, "sewing_machine")
m.addConstr(5*x1 + 3.5*x2 <= 35, "embroidery_machine")

# Optimize the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Skirts: {x1.x}, Coats: {x2.x}")
    print(f"Maximum Profit: {m.objVal}")
else:
    print("No optimal solution found")
```