## Problem Description and Symbolic Representation

The problem can be broken down into the following components:

- **Variables:**
  - Let $x_1$ be the number of commercials during cartoons.
  - Let $x_2$ be the number of commercials during kids-movies.

- **Objective Function:**
  - The cost of a commercial during a cartoon is $5000, and during a kids-movie is $12000. The objective is to minimize the total cost: $5000x_1 + 12000x_2$.

- **Constraints:**
  - Each cartoon is seen by 2 million young boys, and each kids-movie by 4 million young boys. The company wants at least 30 million young boys to see the commercials: $2x_1 + 4x_2 \geq 30$.
  - Each cartoon is seen by 1 million young girls, and each kids-movie by 6 million young girls. The company wants at least 40 million young girls to see the commercials: $x_1 + 6x_2 \geq 40$.
  - The number of commercials cannot be negative: $x_1 \geq 0, x_2 \geq 0$.

## Symbolic Representation

```json
{
  'sym_variables': [('x1', 'commercials during cartoons'), ('x2', 'commercials during kids-movies')],
  'objective_function': '5000*x1 + 12000*x2',
  'constraints': [
    '2*x1 + 4*x2 >= 30',
    'x1 + 6*x2 >= 40',
    'x1 >= 0',
    'x2 >= 0'
  ]
}
```

## Gurobi Code

```python
import gurobipy as gp

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

# Define variables
x1 = model.addVar(name="cartoon_commercials", lb=0, vtype=gp.GRB.INTEGER)
x2 = model.addVar(name="kids_movie_commercials", lb=0, vtype=gp.GRB.INTEGER)

# Objective function: minimize cost
model.setObjective(5000*x1 + 12000*x2, gp.GRB.MINIMIZE)

# Constraints
model.addConstr(2*x1 + 4*x2 >= 30, name="young_boys_constraint")
model.addConstr(x1 + 6*x2 >= 40, name="young_girls_constraint")

# Solve the model
model.optimize()

# Print the solution
if model.status == gp.GRB.OPTIMAL:
  print("Optimal Solution:")
  print(f"Cartoon commercials: {x1.varValue}")
  print(f"Kids movie commercials: {x2.varValue}")
  print(f"Minimum cost: ${model.objVal:.2f}")
else:
  print("The model is infeasible.")
```