## Problem Description and Symbolic Representation

The problem involves a dessert factory that produces cakes and pies. The goal is to maximize revenue given the constraints on sugar and flour availability.

### Symbolic Variables:
- $x_1$ = Number of cakes
- $x_2$ = Number of pies

### Objective Function:
The revenue per cake is $4, and the revenue per pie is $3. Therefore, the objective function to maximize revenue is:
\[ \text{Maximize:} \quad 4x_1 + 3x_2 \]

### Constraints:
1. Each cake requires 4 units of sugar, and each pie requires 5 units of sugar. The factory has 1000 units of sugar available.
\[ 4x_1 + 5x_2 \leq 1000 \]
2. Each cake requires 5 units of flour, and each pie requires 3 units of flour. The factory has 1200 units of flour available.
\[ 5x_1 + 3x_2 \leq 1200 \]
3. Non-negativity constraints, as the number of cakes and pies cannot be negative:
\[ x_1 \geq 0, \quad x_2 \geq 0 \]

## Symbolic Representation in JSON Format

```json
{
  'sym_variables': [('x1', 'cakes'), ('x2', 'pies')],
  'objective_function': '4*x1 + 3*x2',
  'constraints': [
    '4*x1 + 5*x2 <= 1000',
    '5*x1 + 3*x2 <= 1200',
    'x1 >= 0',
    'x2 >= 0'
  ]
}
```

## Gurobi Code in Python

```python
import gurobipy as gp

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

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

# Define the objective function
model.setObjective(4*x1 + 3*x2, gp.GRB.MAXIMIZE)

# Add constraints
model.addConstr(4*x1 + 5*x2 <= 1000, name="sugar_constraint")
model.addConstr(5*x1 + 3*x2 <= 1200, name="flour_constraint")

# Solve the model
model.optimize()

# Print the solution
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal solution found: cakes = {x1.varValue}, pies = {x2.varValue}")
    print(f"Maximum revenue: ${4*x1.varValue + 3*x2.varValue:.2f}")
else:
    print("No optimal solution found.")
```