## Problem Description and Formulation

The car company manufactures two types of vehicles: minivans and SUVs. The goal is to maximize profit given the constraints on engineering time and steel availability.

### Decision Variables
- Let \(x\) be the number of minivans produced.
- Let \(y\) be the number of SUVs produced.

### Objective Function
The objective is to maximize profit. Each minivan nets $5500 in profit, and each SUV nets $4000 in profit. Therefore, the objective function can be written as:
\[ \text{Maximize:} \quad 5500x + 4000y \]

### Constraints
1. **Engineering Time Constraint:** A minivan requires 9 hours of engineering time, and an SUV requires 7 hours. The total available engineering time is 450 hours.
\[ 9x + 7y \leq 450 \]

2. **Steel Constraint:** Both vehicles require 25 kg of steel, and the company receives 1200 kg of steel each week.
\[ 25x + 25y \leq 1200 \]

3. **Non-Negativity Constraint:** The number of vehicles produced cannot be negative.
\[ x \geq 0, y \geq 0 \]

## Gurobi Code

```python
import gurobi

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

    # Decision variables
    x = model.addVar(name="minivans", lb=0, ub=gurobi.GRB.INFINITY)
    y = model.addVar(name="SUVs", lb=0, ub=gurobi.GRB.INFINITY)

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

    # Constraints
    model.addConstr(9 * x + 7 * y <= 450, name="engineering_time")
    model.addConstr(25 * x + 25 * y <= 1200, name="steel")

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal production levels: Minivans = {x.varValue}, SUVs = {y.varValue}")
        print(f"Maximum profit: ${model.objVal:.2f}")
    else:
        print("The problem is infeasible or unbounded.")

if __name__ == "__main__":
    solve_vehicle_production_problem()
```