To solve the optimization problem described, we need to formulate it as a linear programming (LP) model and then implement it using Gurobi. The objective function is to maximize the value of 8.01 times the total number of hamburgers plus 3.71 times the quantity of pickles plus 4.87 times the quantity of lemons, subject to several constraints related to umami index and healthiness ratings.

The variables are:
- Hamburgers (h)
- Pickles (p)
- Lemons (l)

Given data:
- Umami indices: Hamburgers = 12, Pickles = 19, Lemons = 7
- Healthiness ratings: Hamburgers = 18, Pickles = 17, Lemons = 19

Objective function coefficients:
- Hamburgers: 8.01
- Pickles: 3.71
- Lemons: 4.87

Constraints:
1. Minimum total umami index from hamburgers and lemons: 12h + 7l >= 17
2. Minimum total umami index from pickles and lemons: 19p + 7l >= 18
3. Minimum total umami index from hamburgers plus pickles: 12h + 19p >= 10
4. Minimum total healthiness rating from all items: 18h + 17p + 19l >= 68
5. Maximum total umami index from hamburgers and pickles: 12h + 19p <= 56
6. Maximum total umami index from pickles and lemons: 19p + 7l <= 53
7. Maximum total umami index from all items: 12h + 19p + 7l <= 53
8. Maximum total healthiness rating from pickles and lemons: 17p + 19l <= 110
9. Maximum total healthiness rating from hamburgers and lemons: 18h + 19l <= 106
10. Maximum total healthiness rating from all items: 18h + 17p + 19l <= 71

Since the problem allows for non-integer quantities of all items, we don't need to worry about integer constraints.

Here is how you could implement this model in Gurobi using Python:

```python
from gurobipy import *

# Create a new model
model = Model("Optimization_Problem")

# Define variables
hamburgers = model.addVar(lb=0, name="hamburgers", vtype=GRB.CONTINUOUS)
pickles = model.addVar(lb=0, name="pickles", vtype=GRB.CONTINUOUS)
lemons = model.addVar(lb=0, name="lemons", vtype=GRB.CONTINUOUS)

# Define the objective function
model.setObjective(8.01*hamburgers + 3.71*pickles + 4.87*lemons, GRB.MAXIMIZE)

# Add constraints
model.addConstr(12*hamburgers + 7*lemons >= 17, name="umami_hamburgers_lemons_min")
model.addConstr(19*pickles + 7*lemons >= 18, name="umami_pickles_lemons_min")
model.addConstr(12*hamburgers + 19*pickles >= 10, name="umami_hamburgers_pickles_min")
model.addConstr(18*hamburgers + 17*pickles + 19*lemons >= 68, name="healthiness_all_min")
model.addConstr(12*hamburgers + 19*pickles <= 56, name="umami_hamburgers_pickles_max")
model.addConstr(19*pickles + 7*lemons <= 53, name="umami_pickles_lemons_max")
model.addConstr(12*hamburgers + 19*pickles + 7*lemons <= 53, name="umami_all_max")
model.addConstr(17*pickles + 19*lemons <= 110, name="healthiness_pickles_lemons_max")
model.addConstr(18*hamburgers + 19*lemons <= 106, name="healthiness_hamburgers_lemons_max")
model.addConstr(18*hamburgers + 17*pickles + 19*lemons <= 71, name="healthiness_all_max")

# Optimize model
model.optimize()

# Print solution
if model.status == GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Hamburgers: {hamburgers.x}")
    print(f"Pickles: {pickles.x}")
    print(f"Lemons: {lemons.x}")
else:
    print("No optimal solution found.")
```