## Problem Description and Formulation

The problem is an optimization problem where we need to minimize a linear objective function subject to several linear constraints. The variables are the hours worked by Hank, Jean, and Mary. The objective function to minimize is $6.35H + 4.82J + 7.75M$, where $H$, $J$, and $M$ are the hours worked by Hank, Jean, and Mary, respectively.

## Constraints

1. **Fixed Organization Scores**: 
   - Hank's organization score is $5.9$.
   - Jean's organization score is $19.39$.
   - Mary's organization score is $20.41$.

2. **Combined Organization Score Constraints**:
   - $5.9H + 20.41M \geq 87$
   - $5.9H + 19.39J \geq 61$
   - $5.9H + 19.39J + 20.41M \geq 61$
   - $5.9H + 19.39J \leq 175$

3. **Linear Constraints**:
   - $-10H + 6M \geq 0$
   - $7J - 9M \geq 0$

4. **Non-Integer Hours Worked**:
   - $H$, $J$, and $M$ can be non-integer.

## Gurobi Code Formulation

```python
import gurobi

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

    # Define the variables
    H = model.addVar(name="H", lb=0)  # hours worked by Hank
    J = model.addVar(name="J", lb=0)  # hours worked by Jean
    M = model.addVar(name="M", lb=0)  # hours worked by Mary

    # Objective function: Minimize 6.35H + 4.82J + 7.75M
    model.setObjective(6.35 * H + 4.82 * J + 7.75 * M, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(5.9 * H + 20.41 * M >= 87)  # Combined organization score from Hank and Mary
    model.addConstr(5.9 * H + 19.39 * J >= 61)  # Combined organization score from Hank and Jean
    model.addConstr(5.9 * H + 19.39 * J + 20.41 * M >= 61)  # Combined organization score from all
    model.addConstr(5.9 * H + 19.39 * J <= 175)  # Upper limit on combined organization score from Hank and Jean
    model.addConstr(-10 * H + 6 * M >= 0)  # Linear constraint involving Hank and Mary
    model.addConstr(7 * J - 9 * M >= 0)  # Linear constraint involving Jean and Mary

    # Update model
    model.update()

    # Solve the model
    model.optimize()

    # Print the status of the optimization
    if model.status == gurobi.GRB.Status.OPTIMAL:
        print("Optimal solution found.")
        print(f"Hours worked by Hank: {H.varValue}")
        print(f"Hours worked by Jean: {J.varValue}")
        print(f"Hours worked by Mary: {M.varValue}")
        print(f"Objective function value: {model.objVal}")
    elif model.status == gurobi.GRB.Status.INFEASIBLE:
        print("No feasible solution exists.")
    else:
        print("Optimization failed.")

solve_optimization_problem()
```