## Symbolic Representation

To solve the given problem, we first need to convert the natural language description into a symbolic representation.

Let's denote:
- $x_1$ as the number of headsets
- $x_2$ as the number of keyboards

The objective is to maximize profit. Given that a headset earns $80 in profits and a keyboard earns $50, the objective function can be represented as:

Maximize: $80x_1 + 50x_2$

The constraints are as follows:
1. Floor space constraint: $2.5x_1 + 1.5x_2 \leq 200$
2. Keyboard percentage constraint: $x_2 \geq 0.7(x_1 + x_2)$
3. Budget constraint: $200x_1 + 110x_2 \leq 10000$
4. Non-negativity constraint: $x_1 \geq 0, x_2 \geq 0$

## Algebraic Formulation

- **Variables:** $(x_1, x_2)$ corresponding to (headsets, keyboards)
- **Objective Function:** $80x_1 + 50x_2$
- **Constraints:**
  1. $2.5x_1 + 1.5x_2 \leq 200$
  2. $0.3x_2 - 0.7x_1 \geq 0$ (Rearranged from $x_2 \geq 0.7(x_1 + x_2)$)
  3. $200x_1 + 110x_2 \leq 10000$
  4. $x_1 \geq 0, x_2 \geq 0$

## JSON Representation

```json
{
  'sym_variables': [('x1', 'headsets'), ('x2', 'keyboards')],
  'objective_function': '80*x1 + 50*x2',
  'constraints': [
    '2.5*x1 + 1.5*x2 <= 200',
    '0.3*x2 - 0.7*x1 >= 0',
    '200*x1 + 110*x2 <= 10000',
    'x1 >= 0',
    'x2 >= 0'
  ]
}
```

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x1 = model.addVar(lb=0, name="headsets", vtype=gurobi.GRB.CONTINUOUS)
    x2 = model.addVar(lb=0, name="keyboards", vtype=gurobi.GRB.CONTINUOUS)

    # Objective function
    model.setObjective(80*x1 + 50*x2, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(2.5*x1 + 1.5*x2 <= 200, name="floor_space")
    model.addConstr(0.3*x2 - 0.7*x1 >= 0, name="keyboard_percentage")
    model.addConstr(200*x1 + 110*x2 <= 10000, name="budget")

    # Optimize model
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Headsets: {x1.varValue}")
        print(f"Keyboards: {x2.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_problem()
```