## Problem Description and Formulation

The clothing company wants to maximize its profit by determining the optimal ratio of t-shirts and hoodies to produce, given the constraints on designing and printing time.

Let's define the decision variables:

* $t$: number of t-shirts to produce
* $h$: number of hoodies to produce

The objective function is to maximize the total profit:

* Maximize $10t + 15h$

The constraints are:

* Designing time: $t + 2h \leq 40$
* Printing time: $2t + 3h \leq 60$
* Non-negativity: $t \geq 0, h \geq 0$

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    t = model.addVar(lb=0, name="t-shirts")
    h = model.addVar(lb=0, name="hoodies")

    # Define the objective function
    model.setObjective(10 * t + 15 * h, gurobi.GRB.MAXIMIZE)

    # Add constraints
    model.addConstr(t + 2 * h <= 40, name="designing_time")
    model.addConstr(2 * t + 3 * h <= 60, name="printing_time")

    # Optimize the model
    model.optimize()

    # Check if the model is infeasible
    if model.status == gurobi.GRB.Status.INFEASIBLE:
        print("The model is infeasible")
        return

    # Print the solution
    print("Optimal solution:")
    print(f"t-shirts: {t.varValue}")
    print(f"hoodies: {h.varValue}")
    print(f"Max profit: {model.objVal}")

solve_optimization_problem()
```