## Problem Description and Formulation

The chef needs to mix two types of seasoning, A and B, to ensure the new mixture contains a minimum of 5 units of pepper and 6 units of salt. The characteristics of each seasoning are as follows:

- Seasoning A: 2 units of pepper and 1 unit of salt per kg, costing $1.50 per kg.
- Seasoning B: 1 unit of pepper and 4 units of salt per kg, costing $3 per kg.

The goal is to minimize the cost while meeting the requirements for pepper and salt.

## Mathematical Formulation

Let's denote:
- \(x\) as the amount of Seasoning A to buy (in kg),
- \(y\) as the amount of Seasoning B to buy (in kg).

The objective function to minimize the total cost is:
\[ \text{Minimize:} \quad 1.5x + 3y \]

Subject to the constraints:
\[ 2x + y \geq 5 \] (pepper requirement)
\[ x + 4y \geq 6 \] (salt requirement)
\[ x \geq 0, y \geq 0 \] (non-negativity constraints, as the amounts cannot be negative)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x = model.addVar(name="Seasoning_A", lb=0, ub=gurobi.GRB.INFINITY)
    y = model.addVar(name="Seasoning_B", lb=0, ub=gurobi.GRB.INFINITY)

    # Objective function: Minimize 1.5x + 3y
    model.setObjective(1.5 * x + 3 * y, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(2 * x + y >= 5, name="pepper_requirement")
    model.addConstr(x + 4 * y >= 6, name="salt_requirement")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal amount of Seasoning A: {x.varValue} kg")
        print(f"Optimal amount of Seasoning B: {y.varValue} kg")
        print(f"Minimum cost: ${model.objVal:.2f}")
    else:
        print("The problem is infeasible.")

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