To solve Hudson's problem, we need to formulate a linear programming model that maximizes profit while not exceeding the available land and plant nutrition. Let's denote:

- $d$ as the number of acres dedicated to growing daisies,
- $p$ as the number of acres dedicated to growing peonies.

The objective function aims to maximize the total profit, which is given by $150d + 180p$, since each acre of daisies yields a profit of $150 and each acre of peonies yields a profit of $180.

There are two main constraints:
1. **Land Constraint**: The total land used for both daisies and peonies cannot exceed 55 acres, which translates to $d + p \leq 55$.
2. **Plant Nutrition Constraint**: The total amount of plant nutrition used must not exceed 200 kg. Given that daisies require 4.5 kg/acre and peonies require 7 kg/acre, this constraint can be expressed as $4.5d + 7p \leq 200$.

Additionally, we have non-negativity constraints since Hudson cannot grow a negative number of acres of flowers: $d \geq 0$ and $p \geq 0$.

Now, let's translate this problem into Gurobi code in Python:

```python
from gurobipy import *

# Create a new model
m = Model("Hudson_Flowers")

# Define the variables
d = m.addVar(lb=0, name="daisies")
p = m.addVar(lb=0, name="peonies")

# Set the objective function: Maximize profit
m.setObjective(150*d + 180*p, GRB.MAXIMIZE)

# Add constraints
m.addConstr(d + p <= 55, name="land_constraint")  # Land constraint
m.addConstr(4.5*d + 7*p <= 200, name="nutrition_constraint")  # Plant nutrition constraint

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Grow {d.x} acres of daisies")
    print(f"Grow {p.x} acres of peonies")
    print(f"Total profit: ${m.objVal}")
else:
    print("No optimal solution found")

```