## Problem Description and Formulation

The problem requires maximizing the objective function \(7.94 \times \text{hours worked by Bill} + 3.2 \times \text{hours worked by Jean}\), subject to several constraints.

### Variables and Parameters

- **Variables:**
  - \(x_0\): hours worked by Bill
  - \(x_1\): hours worked by Jean

- **Parameters:**
  - \(c_0 = 7.94\): coefficient of \(x_0\) in the objective function
  - \(c_1 = 3.2\): coefficient of \(x_1\) in the objective function
  - \(r_0\): resource with attributes:
    - \(description\): dollar cost per hour
    - \(upper\_bound = 42\): total dollar cost per hour upper bound
    - \(x0 = 6\): dollar cost per hour for Bill
    - \(x1 = 12\): dollar cost per hour for Jean

### Constraints

1. **Cost per Hour Constraints:**
   - The dollar cost per hour for Bill is 6.
   - The dollar cost per hour for Jean is 12.

2. **Total Combined Dollar Cost per Hour Constraints:**
   - \(6x_0 + 12x_1 \geq 15\)
   - \(6x_0 + 12x_1 \leq 42\)
   - The upper bound is also stated as \(6x_0 + 12x_1 \leq 42\), and it's a hard constraint.

3. **Linear Constraint:**
   - \(-6x_0 + 3x_1 \geq 0\)

4. **Variable Type Constraints:**
   - \(x_0\) can be a non-integer (continuous).
   - \(x_1\) must be an integer.

## Gurobi Code Formulation

```python
import gurobi

# Create a new model
model = gurobi.Model()

# Define variables
x0 = model.addVar(lb=0, name="hours_worked_by_Bill")  # Continuous variable for Bill
x1 = model.addVar(lb=0, vtype=gurobi.GRB.INTEGER, name="hours_worked_by_Jean")  # Integer variable for Jean

# Objective function: Maximize 7.94*x0 + 3.2*x1
model.setObjective(7.94*x0 + 3.2*x1, gurobi.GRB.MAXIMIZE)

# Constraints
model.addConstr(6*x0 + 12*x1 >= 15, name="total_cost_min")
model.addConstr(6*x0 + 12*x1 <= 42, name="total_cost_max")
model.addConstr(-6*x0 + 3*x1 >= 0, name="linear_constraint")

# Solve the model
model.optimize()

# Print solution
if model.status == gurobi.GRB.OPTIMAL:
    print("Optimal Solution:")
    print(f"Hours worked by Bill: {x0.varValue}")
    print(f"Hours worked by Jean: {x1.varValue}")
    print(f"Objective: {model.objVal}")
else:
    print("No optimal solution found.")
```