## Problem Description and Formulation

The problem requires minimizing an objective function subject to several constraints. The objective function to be minimized is:

\[ 6.28 \times (\text{hours worked by Jean})^2 + 4.64 \times (\text{hours worked by Dale})^2 + 2.73 \times (\text{hours worked by Jean}) \]

The variables are:
- \(x_0\): hours worked by Jean
- \(x_1\): hours worked by George
- \(x_2\): hours worked by Dale

The constraints are:
1. \(7x_0 \leq 197\)
2. \(16x_0 \leq 199\)
3. \(1x_1 \leq 197\)
4. \(10x_1 \leq 199\)
5. \(17x_2 \leq 197\)
6. \(5x_2 \leq 199\)
7. \(x_1^2 + x_2^2 \geq 42\)
8. \(7x_0 + x_1 + 17x_2 \geq 42\)
9. \(16x_0 + 10x_1 \geq 49\)
10. \(16x_0 + 10x_1 + 5x_2 \geq 49\)
11. \(-4x_0 + 10x_1 \geq 0\)
12. \(16x_0 + 5x_2 \leq 125\)
13. \(10x_1 + 5x_2 \leq 143\)

## Gurobi Code Formulation

```python
import gurobipy as gp

# Create a new model
m = gp.Model("optimization_problem")

# Define the variables
x0 = m.addVar(name="hours_worked_by_Jean", lb=0)  # hours worked by Jean
x1 = m.addVar(name="hours_worked_by_George", lb=0)  # hours worked by George
x2 = m.addVar(name="hours_worked_by_Dale", lb=0)  # hours worked by Dale

# Objective function
m.setObjective(6.28 * x0**2 + 4.64 * x2**2 + 2.73 * x0, gp.GRB.MINIMIZE)

# Constraints
m.addConstr(7 * x0 <= 197, name="jean_productivity")
m.addConstr(16 * x0 <= 199, name="jean_paperwork")
m.addConstr(x1 <= 197, name="george_productivity")
m.addConstr(10 * x1 <= 199, name="george_paperwork")
m.addConstr(17 * x2 <= 197, name="dale_productivity")
m.addConstr(5 * x2 <= 199, name="dale_paperwork")

m.addConstr(x1**2 + x2**2 >= 42, name="productivity_rating_min")
m.addConstr(7 * x0 + x1 + 17 * x2 >= 42, name="total_productivity_min")
m.addConstr(16 * x0 + 10 * x1 >= 49, name="paperwork_competence_min_jean_george")
m.addConstr(16 * x0 + 10 * x1 + 5 * x2 >= 49, name="total_paperwork_competence_min")
m.addConstr(-4 * x0 + 10 * x1 >= 0, name="jean_george_work_hours")
m.addConstr(16 * x0 + 5 * x2 <= 125, name="jean_dale_paperwork_max")
m.addConstr(10 * x1 + 5 * x2 <= 143, name="george_dale_paperwork_max")

# Solve the model
m.optimize()

# Print the solution
if m.status == gp.GRB.OPTIMAL:
    print("Optimal Solution:")
    print(f"Hours worked by Jean: {x0.varValue}")
    print(f"Hours worked by George: {x1.varValue}")
    print(f"Hours worked by Dale: {x2.varValue}")
    print(f"Objective Function Value: {m.objVal}")
else:
    print("The model is infeasible.")
```