```json
{
  "sym_variables": [
    ("x0", "hydrangeas"),
    ("x1", "squash plants"),
    ("x2", "apple trees"),
    ("x3", "daisies"),
    ("x4", "chili plants")
  ],
  "objective_function": "6*x0 + 2*x1 + 4*x2 + 2*x3 + 6*x4",
  "constraints": [
    "14*x0 + 20*x1 + 19*x2 + 9*x3 + 29*x4 <= 954",
    "7*x0 + 22*x1 + 24*x2 + 6*x3 + 28*x4 <= 731",
    "20*x1 + 9*x3 + 29*x4 >= 127",
    "20*x1 + 19*x2 + 29*x4 >= 127",
    "14*x0 + 20*x1 + 29*x4 >= 127",
    "14*x0 + 19*x2 + 9*x3 >= 127",
    "14*x0 + 19*x2 + 29*x4 >= 127",
    "14*x0 + 9*x3 + 29*x4 >= 127",
    "14*x0 + 20*x1 + 19*x2 >= 127",
    "20*x1 + 9*x3 + 29*x4 >= 139",
    "20*x1 + 19*x2 + 29*x4 >= 139",
    "14*x0 + 20*x1 + 29*x4 >= 139",
    "14*x0 + 19*x2 + 9*x3 >= 139",
    "14*x0 + 19*x2 + 29*x4 >= 139",
    "14*x0 + 9*x3 + 29*x4 >= 139",
    "14*x0 + 20*x1 + 19*x2 >= 139",
    "20*x1 + 9*x3 + 29*x4 >= 116",
    "20*x1 + 19*x2 + 29*x4 >= 116",
    "14*x0 + 20*x1 + 29*x4 >= 116",
    "14*x0 + 19*x2 + 9*x3 >= 116",
    "14*x0 + 19*x2 + 29*x4 >= 116",
    "14*x0 + 9*x3 + 29*x4 >= 116",
    "14*x0 + 20*x1 + 19*x2 >= 116",
    "20*x1 + 9*x3 + 29*x4 >= 102",
    "20*x1 + 19*x2 + 29*x4 >= 102",
    "14*x0 + 20*x1 + 29*x4 >= 102",
    "14*x0 + 19*x2 + 9*x3 >= 102",
    "14*x0 + 19*x2 + 29*x4 >= 102",
    "14*x0 + 9*x3 + 29*x4 >= 102",
    "14*x0 + 20*x1 + 19*x2 >= 102",
    "20*x1 + 9*x3 + 29*x4 >= 128",
    "20*x1 + 19*x2 + 29*x4 >= 128",
    "14*x0 + 20*x1 + 29*x4 >= 128",
    "14*x0 + 19*x2 + 9*x3 >= 128",
    "14*x0 + 19*x2 + 29*x4 >= 128",
    "14*x0 + 9*x3 + 29*x4 >= 128",
    "14*x0 + 20*x1 + 19*x2 >= 128",
    "20*x1 + 9*x3 + 29*x4 >= 160",
    "20*x1 + 19*x2 + 29*x4 >= 160",
    "14*x0 + 20*x1 + 29*x4 >= 160",
    "14*x0 + 19*x2 + 9*x3 >= 160",
    "14*x0 + 19*x2 + 29*x4 >= 160",
    "14*x0 + 9*x3 + 29*x4 >= 160",
    "14*x0 + 20*x1 + 19*x2 >= 160",
    "20*x1 + 9*x3 + 29*x4 >= 165",
    "20*x1 + 19*x2 + 29*x4 >= 165",
    "14*x0 + 20*x1 + 29*x4 >= 165",
    "14*x0 + 19*x2 + 9*x3 >= 165",
    "14*x0 + 19*x2 + 29*x4 >= 165",
    "14*x0 + 9*x3 + 29*x4 >= 165",
    "14*x0 + 20*x1 + 19*x2 >= 165",
    "24*x2 + 6*x3 >= 74",
    "22*x1 + 6*x3 >= 101",
    "7*x0 + 22*x1 >= 122",
    "6*x3 + 28*x4 >= 50",
    "20*x1 + 29*x4 <= 252",
    "14*x0 + 9*x3 <= 686",
    "14*x0 + 20*x1 + 19*x2 + 9*x3 + 29*x4 <= 686",
    "22*x1 + 6*x3 <= 595",
    "7*x0 + 28*x4 <= 214",
    "7*x0 + 6*x3 <= 405",
    "22*x1 + 24*x2 <= 329",
    "7*x0 + 24*x2 <= 182",
    "22*x1 + 28*x4 <= 449",
    "7*x0 + 22*x1 + 24*x2 + 6*x3 + 28*x4 <= 449"

  ]
}
```

```python
import gurobipy as gp

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

# Create variables
hydrangeas = m.addVar(vtype=gp.GRB.INTEGER, name="hydrangeas")
squash_plants = m.addVar(vtype=gp.GRB.INTEGER, name="squash_plants")
apple_trees = m.addVar(vtype=gp.GRB.INTEGER, name="apple_trees")
daisies = m.addVar(vtype=gp.GRB.INTEGER, name="daisies")
chili_plants = m.addVar(vtype=gp.GRB.INTEGER, name="chili_plants")


# Set objective function
m.setObjective(6*hydrangeas + 2*squash_plants + 4*apple_trees + 2*daisies + 6*chili_plants, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(14*hydrangeas + 20*squash_plants + 19*apple_trees + 9*daisies + 29*chili_plants <= 954, "c0")
m.addConstr(7*hydrangeas + 22*squash_plants + 24*apple_trees + 6*daisies + 28*chili_plants <= 731, "c1")

# Add other constraints as specified in the JSON output, adapting variable names

m.addConstr(20*squash_plants + 9*daisies + 29*chili_plants >= 127, "c2")
# ... (add all other constraints similarly)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == gp.GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print("Optimization ended with status %d" % m.status)

```