## Problem Description and Formulation

Nolan has two farms: a pumpkin farm and a potato farm. He needs to allocate his farming equipment (one tractor, one plow, and one combine) between the two farms to maximize revenue. Each equipment can be used for 12 hours a day, and the usage can be divided in any way between the two farms.

### Parameters

- Revenue per acre of pumpkins: $150
- Revenue per acre of potatoes: $200
- Equipment available: 1 tractor, 1 plow, 1 combine
- Daily usage limit per equipment: 12 hours
- Hours required per acre:
  - Pumpkins: 0.5 (tractor), 0.6 (plow), 0.4 (combine)
  - Potatoes: 0.9 (tractor), 0.5 (plow), 0.3 (combine)

### Decision Variables

Let's denote:
- \(x_p\) as the acres of pumpkins
- \(x_t\) as the acres of potatoes

### Objective Function

Maximize revenue: \(150x_p + 200x_t\)

### Constraints

1. **Tractor usage**: \(0.5x_p + 0.9x_t \leq 12\)
2. **Plow usage**: \(0.6x_p + 0.5x_t \leq 12\)
3. **Combine usage**: \(0.4x_p + 0.3x_t \leq 12\)
4. **Non-negativity**: \(x_p \geq 0, x_t \geq 0\)

## Gurobi Code

```python
import gurobipy as gp

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

# Define decision variables
x_p = model.addVar(name="pumpkin_acres", lb=0, ub=gp.GRB.INFINITY)
x_t = model.addVar(name="potato_acres", lb=0, ub=gp.GRB.INFINITY)

# Objective function: Maximize revenue
model.setObjective(150*x_p + 200*x_t, gp.GRB.MAXIMIZE)

# Constraints
model.addConstr(0.5*x_p + 0.9*x_t <= 12, name="tractor_usage")
model.addConstr(0.6*x_p + 0.5*x_t <= 12, name="plow_usage")
model.addConstr(0.4*x_p + 0.3*x_t <= 12, name="combine_usage")

# Solve the model
model.optimize()

# Print solution
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal acres of pumpkins: {x_p.varValue}")
    print(f"Optimal acres of potatoes: {x_t.varValue}")
    print(f"Max revenue: ${model.objVal:.2f}")
else:
    print("The model is infeasible.")
```