## Problem Description and Symbolic Representation

The problem involves a restaurant that cleans and cuts small and large fish. The goal is to maximize profit given the time constraints for cleaning and cutting.

### Symbolic Variables:
- $x_1$ = Number of small fish
- $x_2$ = Number of large fish

### Objective Function:
The profit per small fish is $8, and the profit per large fish is $11. The objective function to maximize profit ($P$) is:
\[ P = 8x_1 + 11x_2 \]

### Constraints:
1. Cleaning time: Each small fish takes 5 minutes, and each large fish takes 10 minutes. The restaurant has 500 minutes available for cleaning.
\[ 5x_1 + 10x_2 \leq 500 \]
2. Cutting time: Each small fish takes 10 minutes, and each large fish takes 15 minutes. The restaurant has 700 minutes available for cutting.
\[ 10x_1 + 15x_2 \leq 700 \]
3. Non-negativity constraints: The number of fish cannot be negative.
\[ x_1 \geq 0, x_2 \geq 0 \]

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'small fish'), ('x2', 'large fish')],
    'objective_function': '8*x1 + 11*x2',
    'constraints': [
        '5*x1 + 10*x2 <= 500',
        '10*x1 + 15*x2 <= 700',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code in Python

```python
import gurobipy as gp

def solve_fish_problem():
    # Create a new model
    model = gp.Model("fish_problem")

    # Define variables
    x1 = model.addVar(name="small_fish", lb=0, vtype=gp.GRB.INTEGER)  # Number of small fish
    x2 = model.addVar(name="large_fish", lb=0, vtype=gp.GRB.INTEGER)  # Number of large fish

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

    # Constraints
    model.addConstr(5*x1 + 10*x2 <= 500, name="cleaning_time")  # Cleaning time constraint
    model.addConstr(10*x1 + 15*x2 <= 700, name="cutting_time")  # Cutting time constraint

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gp.GRB.OPTIMAL:
        print(f"Optimal solution: {x1.varName} = {x1.X}, {x2.varName} = {x2.X}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_fish_problem()
```