## Problem Description and Formulation

The wedding cake company needs to mix two types of cake mixes, vanilla and chocolate, to achieve a specific consistency. The goal is to minimize the cost of the mixes while meeting the requirements for leavening agent and flour.

Let's define the decision variables:
- \(V\): the amount of vanilla cake mix to buy (in kg)
- \(C\): the amount of chocolate cake mix to buy (in kg)

The constraints based on the problem description are:
1. Leavening agent requirement: \(0.03V + 0.02C \geq 0.3\)
2. Flour requirement: \(0.55V + 0.43C \geq 10\)
3. Non-negativity constraints: \(V \geq 0, C \geq 0\)

The objective function to minimize the total cost is:
\[ \text{Minimize:} \quad 10V + 15C \]

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    V = model.addVar(lb=0, name="Vanilla_cake_mix")  # in kg
    C = model.addVar(lb=0, name="Chocolate_cake_mix")  # in kg

    # Objective function: minimize cost
    model.setObjective(10 * V + 15 * C, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(0.03 * V + 0.02 * C >= 0.3, name="Leavening_Agent_Requirement")
    model.addConstr(0.55 * V + 0.43 * C >= 10, name="Flour_Requirement")

    # Optimize the model
    model.optimize()

    # Print the results
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal amount of Vanilla cake mix: {V.varValue} kg")
        print(f"Optimal amount of Chocolate cake mix: {C.varValue} kg")
        print(f"Minimum cost: ${model.objVal:.2f}")
    else:
        print("The problem is infeasible.")

if __name__ == "__main__":
    solve_wedding_cake_problem()
```