## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to minimize the cost of a special mix of sour cherry candies and sour peach candies while meeting certain requirements for citric acid and sugar content.

### Decision Variables

- \(x\): The number of sour cherry candies in the mixture.
- \(y\): The number of sour peach candies in the mixture.

### Objective Function

The objective is to minimize the total cost of the candies. Given that the cost per sour cherry candy is $0.10 and the cost per sour peach candy is $0.12, the objective function can be formulated as:

\[ \text{Minimize:} \quad 0.10x + 0.12y \]

### Constraints

1. **Citric Acid Requirement**: Each sour cherry candy has 2 units of citric acid, and each sour peach candy has 1 unit. The mixture must contain at least 50 units of citric acid.
   \[ 2x + y \geq 50 \]

2. **Sugar Requirement**: Each sour cherry candy has 3 units of sugar, and each sour peach candy has 4 units. The mixture must contain at least 60 units of sugar.
   \[ 3x + 4y \geq 60 \]

3. **Sour Cherry Candy Limit**: There can be at most 10 sour cherry candies in the mixture.
   \[ x \leq 10 \]

4. **Non-Negativity**: The number of candies cannot be negative.
   \[ x \geq 0, y \geq 0 \]
   Since \(x\) and \(y\) represent the number of candies, they must be integers.

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x = model.addVar(lb=0, ub=10, vtype=gurobi.GRB.INTEGER, name="sour_cherry_candies")
    y = model.addVar(lb=0, vtype=gurobi.GRB.INTEGER, name="sour_peach_candies")

    # Objective function: Minimize cost
    model.setObjective(0.10 * x + 0.12 * y, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(2 * x + y >= 50, name="citric_acid_requirement")
    model.addConstr(3 * x + 4 * y >= 60, name="sugar_requirement")
    model.addConstr(x <= 10, name="sour_cherry_limit")

    # Solve the model
    model.optimize()

    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x = {x.varValue}, y = {y.varValue}")
        print(f"Minimum cost: ${model.objVal:.2f}")
    elif model.status == gurobi.GRB.INFEASIBLE:
        print("The model is infeasible.")
    else:
        print("The model has a non-optimal status.")

solve_candy_mix()
```