## Problem Description and Formulation

The problem involves allocating resources at two plants, Alpha and Beta, to produce two products: cement and stucco. The goal is to minimize the cost of meeting the daily demands of at least 100 tons of cement and 80 tons of stucco.

Let's define the decision variables:
- \(x_\alpha\): The number of hours to run plant Alpha.
- \(x_\beta\): The number of hours to run plant Beta.

The objective function to minimize is the total cost:
\[ \text{Minimize:} \quad 40x_\alpha + 100x_\beta \]

Subject to the constraints:
1. Cement production: \(3x_\alpha + 5x_\beta \geq 100\)
2. Stucco production: \(2x_\alpha + 4x_\beta \geq 80\)
3. Non-negativity: \(x_\alpha \geq 0, x_\beta \geq 0\)

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x_alpha = model.addVar(lb=0, name="x_alpha")  # Hours for plant Alpha
    x_beta = model.addVar(lb=0, name="x_beta")   # Hours for plant Beta

    # Objective function: Minimize cost
    model.setObjective(40 * x_alpha + 100 * x_beta, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(3 * x_alpha + 5 * x_beta >= 100, name="cement_demand")
    model.addConstr(2 * x_alpha + 4 * x_beta >= 80, name="stucco_demand")

    # Optimize the model
    model.optimize()

    # Print the results
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Run plant Alpha for {x_alpha.varValue} hours")
        print(f"Run plant Beta for {x_beta.varValue} hours")
        print(f"Total cost: ${model.objVal:.2f}")
    else:
        print("No optimal solution found")

solve_production_planning()
```