## Problem Description and Formulation

The snack company wants to create a special mix using snack mix A and snack mix B. The goal is to minimize the cost of the mixture while meeting certain requirements.

### Variables and Constraints

- Let \(x_A\) be the number of snack mix A units in the special mix.
- Let \(x_B\) be the number of snack mix B units in the special mix.

### Constraints

1. **Cashews Requirement**: The special mix must contain at least 90 cashews. Given that each snack mix A has 20 cashews and each snack mix B has 10 cashews, we have:
\[ 20x_A + 10x_B \geq 90 \]

2. **Peanuts Requirement**: The special mix must contain at least 80 peanuts. Given that each snack mix A has 30 peanuts and each snack mix B has 45 peanuts, we have:
\[ 30x_A + 45x_B \geq 80 \]

3. **Limit on Snack Mix A**: There can be at most 12 units of snack mix A in the mixture:
\[ x_A \leq 12 \]

4. **Non-Negativity**: The number of units of each snack mix cannot be negative:
\[ x_A \geq 0, x_B \geq 0 \]

### Objective Function

The cost per snack mix A is $1.00, and the cost per snack mix B is $1.20. The objective is to minimize the total cost:
\[ \text{Minimize:} \quad 1.00x_A + 1.20x_B \]

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x_A = model.addVar(lb=0, name="x_A")  # Number of snack mix A units
    x_B = model.addVar(lb=0, name="x_B")  # Number of snack mix B units

    # Objective function: Minimize cost
    model.setObjective(1.00 * x_A + 1.20 * x_B, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(20 * x_A + 10 * x_B >= 90, name="cashews_requirement")
    model.addConstr(30 * x_A + 45 * x_B >= 80, name="peanuts_requirement")
    model.addConstr(x_A <= 12, name="limit_on_snack_mix_A")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x_A = {x_A.varValue}, x_B = {x_B.varValue}")
        print(f"Minimum cost: ${model.objVal:.2f}")
    else:
        print("No optimal solution found.")

solve_snack_mix_problem()
```