## Problem Description and Formulation

The problem is a classic example of a linear programming problem. Alpha Glass produces two types of glass panes: bulletproof and fire-rated. Both types require time on two machines: heating and cooling. The goal is to maximize profit given the constraints on machine availability.

Let's define the decision variables:
- \(x\): Number of bulletproof glass panes produced
- \(y\): Number of fire-rated glass panes produced

The objective function to maximize profit (\(P\)) is:
\[ P = 12x + 9.5y \]

The constraints based on machine availability are:
- Heating machine: \(4x + 7y \leq 350\)
- Cooling machine: \(6x + 9y \leq 350\)
- Non-negativity: \(x \geq 0, y \geq 0\)

## Gurobi Code

To solve this problem using Gurobi in Python, we will use the Gurobi Python API. First, ensure you have Gurobi installed and a valid license.

```python
import gurobi

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

    # Define variables
    x = model.addVar(name="bulletproof", lb=0, ub=None)  # Number of bulletproof glass panes
    y = model.addVar(name="fire-rated", lb=0, ub=None)  # Number of fire-rated glass panes

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

    # Constraints
    model.addConstr(4 * x + 7 * y <= 350, name="heating_machine")
    model.addConstr(6 * x + 9 * y <= 350, name="cooling_machine")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x = {x.varValue}, y = {y.varValue}")
        print(f"Maximum profit: ${model.objVal:.2f}")
    else:
        print("No optimal solution found.")

# Run the function
solve_alpha_glass_problem()
```

This code defines the problem in Gurobi, solves it, and prints out the optimal production levels for both types of glass panes and the maximum achievable profit. If no optimal solution is found (for example, if the problem is infeasible), it will indicate that as well.