## Problem Description and Formulation

The clothing company produces two types of jackets: flight jackets and denim jackets. The production is limited by two constraints:

1. The maximum production rates for flight jackets and denim jackets are 10 and 25 per day, respectively.
2. The sewing machine can process at most 30 jackets per day of either type.

The profit per flight jacket is $70, and the profit per denim jacket is $100. The goal is to determine the optimal production levels for both types of jackets to maximize profit.

## Mathematical Formulation

Let \(F\) be the number of flight jackets produced and \(D\) be the number of denim jackets produced. The optimization problem can be formulated as:

### Objective Function

Maximize the total profit: \(70F + 100D\)

### Constraints

1. Maximum production rate for flight jackets: \(F \leq 10\)
2. Maximum production rate for denim jackets: \(D \leq 25\)
3. Sewing machine capacity constraint: \(F + D \leq 30\)
4. Non-negativity constraints: \(F \geq 0, D \geq 0\)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    F = model.addVar(lb=0, ub=10, name="Flight_Jackets")
    D = model.addVar(lb=0, ub=25, name="Denim_Jackets")

    # Objective function: Maximize profit
    model.setObjective(70 * F + 100 * D, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(F <= 10, name="Flight_Jacket_Limit")
    model.addConstr(D <= 25, name="Denim_Jacket_Limit")
    model.addConstr(F + D <= 30, name="Sewing_Machine_Limit")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal production levels: Flight Jackets = {F.varValue}, Denim Jackets = {D.varValue}")
        print(f"Maximum profit: ${model.objVal:.2f}")
    else:
        print("No optimal solution found.")

solve_jacket_production()
```