## Problem Description and Formulation

The problem is a classic example of a linear programming problem. The goal is to maximize the profit of a smoothies store by determining the optimal number of blueberry and chocolate smoothies to produce, given the constraints on preparation and blending time.

Let's define the decision variables:

* $x$: number of blueberry smoothies
* $y$: number of chocolate smoothies

The objective function is to maximize the profit:

* Profit per blueberry smoothie: $2
* Profit per chocolate smoothie: $3
* Total profit: $2x + 3y

The constraints are:

* Preparation time: $3x + 5y \leq 1000$ (1000 minutes available)
* Blending time: $2x + y \leq 750$ (750 minutes available)
* Non-negativity: $x \geq 0, y \geq 0$ (cannot produce a negative number of smoothies)

## Gurobi Code

```python
import gurobi

# Create a new Gurobi model
model = gurobi.Model()

# Define the decision variables
x = model.addVar(lb=0, name="blueberry_smoothies")
y = model.addVar(lb=0, name="chocolate_smoothies")

# Define the objective function
model.setObjective(2*x + 3*y, gurobi.GRB.MAXIMIZE)

# Define the constraints
model.addConstr(3*x + 5*y <= 1000, name="preparation_time")
model.addConstr(2*x + y <= 750, name="blending_time")

# Optimize the model
model.optimize()

# Print the solution
if model.status == gurobi.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Blueberry smoothies: {x.varValue}")
    print(f"Chocolate smoothies: {y.varValue}")
    print(f"Max profit: {model.objVal}")
else:
    print("No optimal solution found.")
```