## Problem Description and Formulation

The makeup company needs to fill perfume and cologne bottles. The goal is to maximize profit given the constraints on time and minimum quantities of each product.

### Variables:
- \(P\): Number of perfume bottles to fill.
- \(C\): Number of cologne bottles to fill.

### Objective Function:
Maximize profit \( = 50P + 60C \).

### Constraints:
1. \( 2P + 2.5C \leq 700 \) (Total time constraint)
2. \( P \geq 60 \) (Minimum perfume bottles)
3. \( C \geq 40 \) (Minimum cologne bottles)
4. \( P, C \geq 0 \) and are integers (Non-negativity and integrality constraints)

Since \( P \) and \( C \) must be integers (as they represent bottles), this is an integer linear programming problem. However, Gurobi can handle this with its built-in support for integer programming.

## Gurobi Code

```python
import gurobi

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

    # Define variables
    P = model.addVar(lb=60, name="Perfume_Bottles")  # At least 60 perfume bottles
    C = model.addVar(lb=40, name="Cologne_Bottles")  # At least 40 cologne bottles

    # Objective function: Maximize profit
    model.setObjective(50 * P + 60 * C, gurobi.GRB.MAXIMIZE)

    # Time constraint: 2P + 2.5C <= 700
    model.addConstr(2 * P + 2.5 * C <= 700, name="Time_Constraint")

    # Solve the model
    model.optimize()

    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution:")
        print(f"Perfume Bottles: {P.varValue}")
        print(f"Cologne Bottles: {C.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_perfume_cologne_problem()
```

This code defines the problem in Gurobi, solving for the optimal number of perfume and cologne bottles to maximize profit under the given constraints. Note that Gurobi's Python API automatically handles the integrality of variables when they are defined with `addVar`, but explicitly setting integrality to 1 can ensure they are treated as integers:

```python
P = model.addVar(lb=60, vtype=gurobi.GRB.INTEGER, name="Perfume_Bottles")
C = model.addVar(lb=40, vtype=gurobi.GRB.INTEGER, name="Cologne_Bottles")
```