## Problem Description and Formulation

The milk company produces ice cream and cheese, with the ice cream team capable of producing up to 50 units of ice cream per day and the cheese team capable of producing up to 80 units of cheese per day. Both products require time on a shared processing machine, which has a maximum capacity of 100 units per day. The profit per unit of ice cream is $2.5, and the profit per unit of cheese is $4.

## Decision Variables

- \(x\): Units of ice cream produced per day
- \(y\): Units of cheese produced per day

## Objective Function

The objective is to maximize profit. Given the profits per unit of ice cream ($2.5) and cheese ($4), the objective function can be formulated as:

\[ \text{Maximize:} \quad 2.5x + 4y \]

## Constraints

1. **Ice Cream Production Limit:** The ice cream team can produce at most 50 units of ice cream per day.
\[ x \leq 50 \]

2. **Cheese Production Limit:** The cheese team can produce at most 80 units of cheese per day.
\[ y \leq 80 \]

3. **Shared Processing Machine Limit:** The shared machine can process at most 100 units of total items per day.
\[ x + y \leq 100 \]

4. **Non-Negativity Constraints:** The units produced cannot be negative.
\[ x \geq 0, y \geq 0 \]

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x = model.addVar(lb=0, ub=50, name="ice_cream_units")
    y = model.addVar(lb=0, ub=80, name="cheese_units")

    # Objective function: Maximize profit
    model.setObjective(2.5 * x + 4 * y, gurobi.GRB.MAXIMIZE)

    # Shared processing machine limit
    model.addConstr(x + y <= 100, name="shared_machine_limit")

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution: Ice Cream = {x.varValue}, Cheese = {y.varValue}")
        print(f"Max Profit: ${model.objVal:.2f}")
    else:
        print("The model is infeasible.")

solve_optimization_problem()
```

This code defines the optimization problem using Gurobi's Python interface, sets up the objective function and constraints according to the problem description, and solves the linear programming problem to find the optimal production levels of ice cream and cheese that maximize profit.