Here's the Gurobi code to solve your optimization problem:

```python
import gurobipy as gp

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

# Create variables
apple_pies = m.addVar(vtype=gp.GRB.INTEGER, name="apple_pies")
lemons = m.addVar(vtype=gp.GRB.INTEGER, name="lemons")
cherry_pies = m.addVar(vtype=gp.GRB.CONTINUOUS, name="cherry_pies")
ravioli = m.addVar(vtype=gp.GRB.CONTINUOUS, name="ravioli")
hamburgers = m.addVar(vtype=gp.GRB.CONTINUOUS, name="hamburgers")

# Set objective function
m.setObjective(1 * apple_pies + 9 * lemons + 8 * cherry_pies + 8 * ravioli + 6 * hamburgers, gp.GRB.MAXIMIZE)

# Add constraints based on resource usage
calcium_constraints = {
    'r0': m.addConstr(1 * apple_pies + 10 * lemons + 12 * cherry_pies + 14 * ravioli + 11 * hamburgers <= 323, "calcium_limit"),
}

umami_constraints = {
    'r1': m.addConstr(16 * apple_pies + 19 * lemons + 20 * cherry_pies + 14 * ravioli + 16 * hamburgers <= 233, "umami_limit"),
}

sourness_constraints = {
    'r2': m.addConstr(4 * apple_pies + 19 * lemons + 6 * cherry_pies + 3 * ravioli + 11 * hamburgers <= 163, "sourness_limit"),
}

healthiness_constraints = {
    'r3': m.addConstr(11 * apple_pies + 1 * lemons + 14 * cherry_pies + 20 * ravioli + 8 * hamburgers <= 261, "healthiness_limit"),
}


# Add other constraints as specified in the problem description
m.addConstr(14 * ravioli + 11 * hamburgers >= 44, "calcium_ravioli_hamburgers")
m.addConstr(12 * cherry_pies + 14 * ravioli >= 64, "calcium_cherry_pies_ravioli")
m.addConstr(1 * apple_pies + 10 * lemons >= 49, "calcium_apple_pies_lemons")
m.addConstr(1 * apple_pies + 11 * hamburgers >= 49, "calcium_apple_pies_hamburgers")
m.addConstr(12 * cherry_pies + 11 * hamburgers >= 29, "calcium_cherry_pies_hamburgers")
m.addConstr(10 * lemons + 11 * hamburgers >= 32, "calcium_lemons_hamburgers")
m.addConstr(10 * lemons + 14 * ravioli >= 21, "calcium_lemons_ravioli")
m.addConstr(10 * lemons + 12 * cherry_pies >= 36, "calcium_lemons_cherry_pies")
m.addConstr(10 * lemons + 12 * cherry_pies + 14 * ravioli >= 34, "calcium_lemons_cherry_pies_ravioli")
m.addConstr(1 * apple_pies + 10 * lemons + 11 * hamburgers >= 34, "calcium_apple_pies_lemons_hamburgers")
m.addConstr(1 * apple_pies + 10 * lemons + 12 * cherry_pies >= 34, "calcium_apple_pies_lemons_cherry_pies")
m.addConstr(1 * apple_pies + 14 * ravioli + 11 * hamburgers >= 34, "calcium_apple_pies_ravioli_hamburgers")
# ... (add all remaining 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)

```