## Problem Description and Formulation

The problem requires minimizing the objective function \(9 \times \text{hours worked by Laura} + 6 \times \text{hours worked by Peggy}\) subject to several constraints.

### Variables
- \(x_L\): hours worked by Laura
- \(x_P\): hours worked by Peggy

### Given Resources/Attributes
- \(r_0\): productivity rating
  - Laura: 14.34
  - Peggy: 1.9
  - Upper bound: 106
- \(r_1\): work quality rating
  - Laura: 6.17
  - Peggy: 4.28
  - Upper bound: 106
- \(r_2\): dollar cost per hour
  - Laura: 5.43
  - Peggy: 6.99
  - Upper bound: 91

### Constraints
1. \(14.34x_L + 1.9x_P \geq 47\)
2. \(6.17x_L + 4.28x_P \geq 34\)
3. \(5.43x_L + 6.99x_P \geq 44\)
4. \(2x_L - x_P \geq 0\)
5. \(14.34x_L + 1.9x_P \leq 73\)
6. \(6.17x_L + 4.28x_P \leq 100\)
7. \(5.43x_L + 6.99x_P \leq 82\)
8. \(x_L\) must be an integer (non-fractional)
9. \(x_P\) can be fractional

## Gurobi Code Formulation

```python
import gurobi

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

    # Define variables
    x_L = model.addVar(name="hours_worked_by_Laura", vtype=gurobi.GRB.INTEGER)
    x_P = model.addVar(name="hours_worked_by_Peggy")

    # Objective function: Minimize 9 * x_L + 6 * x_P
    model.setObjective(9 * x_L + 6 * x_P, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(14.34 * x_L + 1.9 * x_P >= 47, name="productivity_rating_constraint")
    model.addConstr(6.17 * x_L + 4.28 * x_P >= 34, name="work_quality_rating_constraint")
    model.addConstr(5.43 * x_L + 6.99 * x_P >= 44, name="dollar_cost_per_hour_constraint")
    model.addConstr(2 * x_L - x_P >= 0, name="hours_worked_constraint")
    model.addConstr(14.34 * x_L + 1.9 * x_P <= 73, name="productivity_rating_upper_bound")
    model.addConstr(6.17 * x_L + 4.28 * x_P <= 100, name="work_quality_rating_upper_bound")
    model.addConstr(5.43 * x_L + 6.99 * x_P <= 82, name="dollar_cost_per_hour_upper_bound")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Hours worked by Laura: {x_L.varValue}")
        print(f"Hours worked by Peggy: {x_P.varValue}")
        print(f"Objective function value: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_optimization_problem()
```