## Problem Description and Formulation

The problem is a classic example of a linear programming problem. Lucas has 120 acres of land to allocate between growing carrots and onions. The goal is to maximize profit given the constraints on tractor time and hand-picking time.

Let's define the variables:
- \(x\): acres of carrots
- \(y\): acres of onions

The objective function to maximize profit is:
\[ \text{Maximize:} \quad 75x + 90y \]

The constraints are:
1. Total land: \( x + y \leq 120 \)
2. Tractor time: \( 1.5x + 2y \leq 120 \)
3. Hand-picking time: \( 2.5x + 2y \leq 200 \)
4. Non-negativity: \( x \geq 0, y \geq 0 \)

## Gurobi Code

To solve this problem using Gurobi in Python, we will use the Gurobi Python API. First, ensure you have Gurobi installed in your environment. If not, you can install it via pip:
```bash
pip install gurobi
```

Here's the Gurobi code for the problem:

```python
import gurobi as gp

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

# Define the variables
x = m.addVar(lb=0, name="acres_of_carrots")
y = m.addVar(lb=0, name="acres_of_onions")

# Objective function: Maximize profit
m.setObjective(75*x + 90*y, gp.GRB.MAXIMIZE)

# Constraints
m.addConstr(x + y <= 120, name="land_constraint")
m.addConstr(1.5*x + 2*y <= 120, name="tractor_time_constraint")
m.addConstr(2.5*x + 2*y <= 200, name="hand_picking_time_constraint")

# Solve the model
m.optimize()

# Print the results
if m.status == gp.GRB.OPTIMAL:
    print(f"Optimal acres of carrots: {x.varValue}")
    print(f"Optimal acres of onions: {y.varValue}")
    print(f"Maximal profit: ${m.objVal:.2f}")
else:
    print("The model is infeasible.")
```