## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize profit given certain constraints on production and resources.

### Decision Variables

- \(x\): The amount of maple syrup produced in kg.
- \(y\): The amount of maple candy produced in kg.

### Objective Function

The profit per kg of maple syrup is $20, and the profit per kg of maple candy is $15. The objective is to maximize the total profit \(P\), which can be represented as:

\[P = 20x + 15y\]

### Constraints

1. **Production Limits**:
   - The farm can make at most 10 kg of maple syrup: \(x \leq 10\).
   - The farm can make at most 12 kg of maple candy: \(y \leq 12\).

2. **Minimum Supply Requirements**:
   - The farm must supply at least 3 kg of maple syrup: \(x \geq 3\).
   - The farm must supply at least 5 kg of maple candy: \(y \geq 5\).

3. **Boiling Station Availability**:
   - Each kg of maple syrup and maple candy requires 2 hours at the boiling station.
   - The boiling station is available for at most 20 hours per day: \(2x + 2y \leq 20\).

### Non-Negativity Constraints

- \(x \geq 0\) and \(y \geq 0\), which is partially covered by the minimum supply requirements.

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x = model.addVar(lb=3, ub=10, name="maple_syrup")  # kg
    y = model.addVar(lb=5, ub=12, name="maple_candy")  # kg

    # Objective function: Maximize profit
    model.setObjective(20 * x + 15 * y, gurobi.GRB.MAXIMIZE)

    # Boiling station constraint
    model.addConstraint(2 * x + 2 * y <= 20)

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x = {x.varValue}, y = {y.varValue}")
        print(f"Maximum profit: ${20 * x.varValue + 15 * y.varValue}")
    else:
        print("The model is infeasible.")

solve_maple_farm_problem()
```