## Problem Description and Formulation

The problem requires maximizing the objective function: $8L + 6M + 5R$, where $L$, $M$, and $R$ represent the hours worked by Laura, Mary, and Ringo, respectively.

Subject to the following constraints:

1. $4L + 3R \geq 12$
2. $4L + 11M \leq 36$
3. $11M + 3R \leq 47$
4. $4L + 11M + 3R \leq 47$
5. $6M + 8R \leq 48$
6. $3L + 8R \leq 60$
7. $3L + 6M + 8R \leq 25$
8. $L$ is an integer
9. $M$ and $R$ can be non-integers

## Resource Attributes

The resources/attributes for each variable are given as:
- $r0$: likelihood to quit index
  - Laura: $4$
  - Mary: $11$
  - Ringo: $3$
  - Upper bound: $52$
- $r1$: dollar cost per hour
  - Laura: $3$
  - Mary: $6$
  - Ringo: $8$
  - Upper bound: $76$

## Gurobi Code Formulation

```python
import gurobi

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

    # Define variables
    L = model.addVar(name="hours_worked_by_Laura", vtype=gurobi.GRB.INTEGER)
    M = model.addVar(name="hours_worked_by_Mary")
    R = model.addVar(name="hours_worked_by_Ringo")

    # Objective function: Maximize 8L + 6M + 5R
    model.setObjective(8*L + 6*M + 5*R, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(4*L + 3*R >= 12, name="likelihood_quit_LR")
    model.addConstr(4*L + 11*M <= 36, name="likelihood_quit_LM")
    model.addConstr(11*M + 3*R <= 47, name="likelihood_quit_MR")
    model.addConstr(4*L + 11*M + 3*R <= 47, name="likelihood_quit_LMR")
    model.addConstr(6*M + 8*R <= 48, name="dollar_cost_MR")
    model.addConstr(3*L + 8*R <= 60, name="dollar_cost_LR")
    model.addConstr(3*L + 6*M + 8*R <= 25, name="dollar_cost_LMR")

    # Non-negativity constraints (Implicit in Gurobi for continuous and integer variables)

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Hours worked by Laura: {L.varValue}")
        print(f"Hours worked by Mary: {M.varValue}")
        print(f"Hours worked by Ringo: {R.varValue}")
        print(f"Objective: {model.objVal}")
    else:
        print("The model is infeasible.")

solve_optimization_problem()
```