## Problem Description and Formulation

The vehicle company manufactures two types of vehicles: cars and bikes. The goal is to maximize profit given the constraints on engineering time and steel availability.

### Variables:
- Let \(C\) be the number of cars produced.
- Let \(B\) be the number of bikes produced.

### Objective Function:
The company nets $5000 from each car and $1000 from each bike. The objective is to maximize profit \(P\):
\[ P = 5000C + 1000B \]

### Constraints:
1. **Engineering Time:** A car requires 3 hours, and a bike requires 1 hour. The total engineering time available is 400 hours.
\[ 3C + B \leq 400 \]

2. **Steel Availability:** Both vehicles require 30 kg of steel each, and the company receives 1000 kg of steel each week.
\[ 30C + 30B \leq 1000 \]

3. **Non-Negativity:** The number of cars and bikes produced cannot be negative.
\[ C \geq 0, B \geq 0 \]

## Gurobi Code

```python
import gurobi

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

    # Define variables
    C = model.addVar(name="cars", lb=0, vtype=gurobi.GRB.CONTINUOUS)
    B = model.addVar(name="bikes", lb=0, vtype=gurobi.GRB.CONTINUOUS)

    # Objective function: Maximize profit
    model.setObjective(5000*C + 1000*B, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(3*C + B <= 400, name="engineering_time")
    model.addConstr(30*C + 30*B <= 1000, name="steel_availability")

    # Solve the model
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal profit: ${model.objVal:.2f}")
        print(f"Cars produced: {C.x:.2f}")
        print(f"Bikes produced: {B.x:.2f}")
    else:
        print("The model is infeasible.")

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