To solve Avian Cosmetics' advertising problem using linear programming, we need to define the decision variables, objective function, and constraints.

Let's denote:
- \(x_c\) as the number of 1-minute concert commercials.
- \(x_{cin}\) as the number of 1-minute cinema commercials.

The objective is to minimize the total cost of advertising. Given that a 1-minute concert ad costs $80,000 and a 1-minute cinema ad costs $30,000, the objective function can be written as:
\[ \text{Minimize} \quad 80,000x_c + 30,000x_{cin} \]

The constraints are based on the requirement that the commercials must be seen by at least 86 million young girls and 72 million middle-aged women. Each concert commercial is seen by 9 million young girls and 4 million middle-aged women, while each cinema commercial is seen by 5 million young girls and 45 million middle-aged women. Therefore, we have two constraints:
1. For young girls: \(9x_c + 5x_{cin} \geq 86\)
2. For middle-aged women: \(4x_c + 45x_{cin} \geq 72\)

Additionally, since the number of commercials cannot be negative, we have non-negativity constraints:
- \(x_c \geq 0\)
- \(x_{cin} \geq 0\)

Now, let's translate this problem into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Avian_Cosmetics")

# Define the decision variables
x_c = m.addVar(vtype=GRB.CONTINUOUS, name="concert_commercials")
x_cin = m.addVar(vtype=GRB.CONTINUOUS, name="cinema_commercials")

# Set the objective function
m.setObjective(80000*x_c + 30000*x_cin, GRB.MINIMIZE)

# Add constraints
m.addConstr(9*x_c + 5*x_cin >= 86, "young_girls_constraint")
m.addConstr(4*x_c + 45*x_cin >= 72, "middle_aged_women_constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Number of concert commercials: {x_c.x}")
    print(f"Number of cinema commercials: {x_cin.x}")
    print(f"Total cost: ${80000*x_c.x + 30000*x_cin.x}")
else:
    print("No optimal solution found.")

```