## Problem Description and Symbolic Representation

The problem involves maximizing profit by determining the optimal number of regular and premium microphones to stock, given certain constraints.

### Symbolic Variables:
- $x_1$ = Number of regular microphones
- $x_2$ = Number of premium microphones

### Objective Function:
The objective is to maximize profit. The profit from regular microphones is $80x_1$ and from premium microphones is $95x_2$. Therefore, the objective function is:
\[ \text{Maximize:} \quad 80x_1 + 95x_2 \]

### Constraints:
1. **Budget Constraint:** The cost of regular microphones is $75x_1$ and of premium microphones is $100x_2$, with a total budget of $30,000.
\[ 75x_1 + 100x_2 \leq 30000 \]
2. **Demand Constraint:** The total demand is at most 300 microphones.
\[ x_1 + x_2 \leq 300 \]
3. **Non-Negativity Constraint:** The number of microphones cannot be negative.
\[ x_1 \geq 0, \quad x_2 \geq 0 \]

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'regular microphones'), ('x2', 'premium microphones')],
    'objective_function': '80*x1 + 95*x2',
    'constraints': [
        '75*x1 + 100*x2 <= 30000',
        'x1 + x2 <= 300',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code in Python

```python
import gurobi

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

    # Define variables
    x1 = model.addVar(name="regular_microphones", lb=0, ub=gurobi.GRB.INFINITY, vtype=gurobi.GRB.INTEGER)
    x2 = model.addVar(name="premium_microphones", lb=0, ub=gurobi.GRB.INFINITY, vtype=gurobi.GRB.INTEGER)

    # Objective function: Maximize profit
    model.setObjective(80*x1 + 95*x2, gurobi.GRB.MAXIMIZE)

    # Budget constraint
    model.addConstr(75*x1 + 100*x2 <= 30000, name="budget_constraint")

    # Demand constraint
    model.addConstr(x1 + x2 <= 300, name="demand_constraint")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal number of regular microphones: {x1.varValue}")
        print(f"Optimal number of premium microphones: {x2.varValue}")
        print(f"Maximum profit: {model.objVal}")
    else:
        print("The problem is infeasible")

solve_microphone_problem()
```