## Problem Description and Symbolic Representation

The problem can be broken down into the following symbolic representation:

### Variables:
- $x_1$ : Number of units of Kommand game
- $x_2$ : Number of units of Kontrol game

### Objective Function:
The objective is to minimize the total cost incurred by selling these games. The cost for each unit of Kommand and Kontrol is $11 and $3 respectively.

### Constraints:
1. **Budget Constraint**: The total cost of purchasing and selling the games must not exceed $500. The purchasing costs are $14 and $8 for Kommand and Kontrol respectively.
2. **Customer Attraction Constraint**: The total number of customers attracted must be at least 200. Each unit of Kommand and Kontrol attracts 20 and 5 customers respectively.

## Symbolic Representation

```json
{
  'sym_variables': [('x1', 'Kommand units'), ('x2', 'Kontrol units')],
  'objective_function': '11*x1 + 3*x2',
  'constraints': [
    '14*x1 + 8*x2 <= 500',  # Budget constraint
    '20*x1 + 5*x2 >= 200'   # Customer attraction constraint
  ]
}
```

## Gurobi Code

```python
import gurobipy as gp

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

# Define variables
x1 = model.addVar(name="Kommand_units", lb=0, vtype=gp.GRB.INTEGER)  # Number of units of Kommand
x2 = model.addVar(name="Kontrol_units", lb=0, vtype=gp.GRB.INTEGER)  # Number of units of Kontrol

# Objective function: Minimize the total cost
model.setObjective(11*x1 + 3*x2, gp.GRB.MINIMIZE)

# Budget constraint
model.addConstr(14*x1 + 8*x2 <= 500, name="Budget_Constraint")

# Customer attraction constraint
model.addConstr(20*x1 + 5*x2 >= 200, name="Customer_Attraction_Constraint")

# Solve the model
model.optimize()

# Print the results
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal solution found: Kommand units = {x1.varValue}, Kontrol units = {x2.varValue}")
    print(f"Minimum cost: ${11*x1.varValue + 3*x2.varValue}")
else:
    print("No optimal solution found")
```