## Problem Description and Formulation

The problem is a classic example of a linear programming problem. Hudson has 55 acres to grow daisies and peonies, with the objective of maximizing profit. The profit per acre of daisies is $150, and the profit per acre of peonies is $180. However, there are constraints on the amount of land and plant nutrition available.

Let's denote:
- \(D\) as the number of acres for daisies,
- \(P\) as the number of acres for peonies.

The constraints are:
1. Land constraint: \(D + P \leq 55\)
2. Plant nutrition constraint: \(4.5D + 7P \leq 200\)
3. Non-negativity constraints: \(D \geq 0, P \geq 0\)

The objective function to maximize profit is: \(150D + 180P\)

## Gurobi Code

To solve this problem using Gurobi in Python, we will first install the Gurobi library if it's not already installed. You can install it via pip:

```bash
pip install gurobi
```

Now, let's formulate and solve the problem using Gurobi:

```python
import gurobi as gp

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

# Define the variables
D = model.addVar(name="Daisies", lb=0)  # Acres for daisies
P = model.addVar(name="Peonies", lb=0)  # Acres for peonies

# Objective function: Maximize profit
model.setObjective(150 * D + 180 * P, gp.GRB.MAXIMIZE)

# Land constraint
model.addConstr(D + P <= 55, name="Land_Constraint")

# Plant nutrition constraint
model.addConstr(4.5 * D + 7 * P <= 200, name="Nutrition_Constraint")

# Optimize the model
model.optimize()

# Print the results
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal acres for daisies: {D.varValue}")
    print(f"Optimal acres for peonies: {P.varValue}")
    print(f"Maximal profit: ${model.objVal:.2f}")
else:
    print("The problem is infeasible.")
```