## Problem Description and Formulation

The company needs to provide workers with a diet that meets the following nutritional requirements:
- At least 2000 calories
- At least 100 grams of protein
- At least 100 grams of carbs

The available food items are:
- A can of soup: $1, 200 calories, 5 grams of protein, 4 grams of carbs
- One sandwich: $3, 250 calories, 10 grams of protein, 15 grams of carbs

The goal is to find the minimum cost diet that meets the nutritional requirements.

## Mathematical Formulation

Let \(S\) be the number of cans of soup and \(D\) be the number of sandwiches. The objective is to minimize the total cost \(C = S + 3D\).

The constraints based on nutritional requirements are:
- \(200S + 250D \geq 2000\) (calories)
- \(5S + 10D \geq 100\) (protein)
- \(4S + 15D \geq 100\) (carbs)
- \(S \geq 0, D \geq 0\) (non-negativity constraints)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    S = m.addVar(name="soup", lb=0, ub=gurobi.GRB.INFINITY)
    D = m.addVar(name="sandwich", lb=0, ub=gurobi.GRB.INFINITY)

    # Objective: minimize cost
    m.setObjective(S + 3 * D, gurobi.GRB.MINIMIZE)

    # Constraints
    m.addConstr(200 * S + 250 * D >= 2000, name="calories")
    m.addConstr(5 * S + 10 * D >= 100, name="protein")
    m.addConstr(4 * S + 15 * D >= 100, name="carbs")

    # Optimize
    m.optimize()

    # Print solution
    if m.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal cost: {m.objVal}")
        print(f"Soup: {S.varValue}, Sandwich: {D.varValue}")
    else:
        print("No optimal solution found")

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