## Problem Description and Formulation

The problem is a classic example of a linear programming problem. The goal is to maximize the profit of a bike factory by determining the optimal number of road bikes and mountain bikes to produce, given the constraints on the available tooling hours for the grinder and polisher.

Let's define the decision variables:
- \(R\): the number of road bikes to produce
- \(M\): the number of mountain bikes to produce

The objective function to maximize profit is:
\[ \text{Maximize:} \quad 70R + 100M \]

The constraints based on the tooling hours available are:
- Grinder constraint: \(3R + 5M \leq 12\)
- Polisher constraint: \(2R + 2.5M \leq 12\)
- Non-negativity constraints: \(R \geq 0, M \geq 0\)

## Gurobi Code

To solve this problem using Gurobi in Python, we can use the following code:

```python
import gurobipy as gp

# Create a new model
model = gp.Model("BikeFactory")

# Define the decision variables
R = model.addVar(lb=0, name="Road_Bikes")
M = model.addVar(lb=0, name="Mountain_Bikes")

# Define the objective function
model.setObjective(70*R + 100*M, gp.GRB.MAXIMIZE)

# Add the grinder and polisher constraints
model.addConstr(3*R + 5*M <= 12, name="Grinder_Constraint")
model.addConstr(2*R + 2.5*M <= 12, name="Polisher_Constraint")

# Solve the model
model.optimize()

# Check if the model is optimized
if model.status == gp.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Road Bikes: {R.varValue}")
    print(f"Mountain Bikes: {M.varValue}")
    print(f"Max Profit: {model.objVal}")
else:
    print("The model is infeasible or unbounded.")
```

This code defines the model, sets up the objective function and constraints, solves the optimization problem, and then prints out the optimal production levels for road and mountain bikes, along with the maximum achievable profit. If the problem is infeasible or unbounded, it will indicate that as well.