To solve the optimization problem described, we first need to identify the decision variables, objective function, and constraints.

- Decision Variables: Let $x$ be the number of hours plant Alpha is run and $y$ be the number of hours plant Beta is run.
- Objective Function: The goal is to minimize the total cost. Given that running plant Alpha costs $40 per hour and plant Beta costs $100 per hour, the objective function can be represented as $min(40x + 100y)$.
- Constraints:
  - At least 100 tons of cement must be produced daily. Since plant Alpha produces 3 tons of cement per hour and plant Beta produces 5 tons per hour, we have $3x + 5y \geq 100$.
  - At least 80 tons of stucco must be produced daily. Given that plant Alpha produces 2 tons of stucco per hour and plant Beta produces 4 tons per hour, we have $2x + 4y \geq 80$.
  - Non-negativity constraints: Since the hours cannot be negative, we also have $x \geq 0$ and $y \geq 0$.

Now, let's translate these into Gurobi code in Python:

```python
from gurobipy import *

# Create a new model
m = Model("Young_Bucks_Production")

# Define the decision variables
x = m.addVar(lb=0, name="hours_alpha")  # Hours plant Alpha is run
y = m.addVar(lb=0, name="hours_beta")   # Hours plant Beta is run

# Objective function: minimize total cost
m.setObjective(40*x + 100*y, GRB.MINIMIZE)

# Constraints
# At least 100 tons of cement must be produced daily
m.addConstr(3*x + 5*y >= 100, name="cement_production")

# At least 80 tons of stucco must be produced daily
m.addConstr(2*x + 4*y >= 80, name="stucco_production")

# Optimize the model
m.optimize()

# Print out the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Run plant Alpha for {x.x} hours")
    print(f"Run plant Beta for {y.x} hours")
    print(f"Total cost: ${40*x.x + 100*y.x}")
else:
    print("No optimal solution found")

```