```python
import gurobipy as gp

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

# Create variables
foods = ['bagged salads', 'strips of bacon', 'kiwis', 'cornichons', 'fruit salads', 'bananas', 'eggs']
x = m.addVars(foods, lb=0.0, vtype=gp.GRB.CONTINUOUS, name=foods)

# Set objective function
m.setObjective(2.18 * x['bagged salads'] + 5.08 * x['strips of bacon'] + 8.26 * x['kiwis'] + 8.58 * x['cornichons'] + 4.98 * x['fruit salads'] + 5.83 * x['bananas'] + 4.0 * x['eggs'], gp.GRB.MINIMIZE)

# Resource constraints
resources = {
    'r0': {'description': 'grams of fiber', 'upper_bound': 557, 'bagged salads': 16, 'strips of bacon': 18, 'kiwis': 19, 'cornichons': 15, 'fruit salads': 11, 'bananas': 10, 'eggs': 28},
    'r1': {'description': 'healthiness rating', 'upper_bound': 1000, 'bagged salads': 5, 'strips of bacon': 21, 'kiwis': 14, 'cornichons': 27, 'fruit salads': 34, 'bananas': 18, 'eggs': 14},
    'r2': {'description': 'grams of carbohydrates', 'upper_bound': 892, 'bagged salads': 24, 'strips of bacon': 14, 'kiwis': 23, 'cornichons': 21, 'fruit salads': 11, 'bananas': 12, 'eggs': 17},
    'r3': {'description': 'umami index', 'upper_bound': 944, 'bagged salads': 6, 'strips of bacon': 26, 'kiwis': 27, 'cornichons': 8, 'fruit salads': 23, 'bananas': 18, 'eggs': 13},
    'r4': {'description': 'milligrams of calcium', 'upper_bound': 1035, 'bagged salads': 7, 'strips of bacon': 3, 'kiwis': 17, 'cornichons': 13, 'fruit salads': 26, 'bananas': 24, 'eggs': 3}
}

for r, data in resources.items():
    m.addConstr(sum(data[food] * x[food] for food in foods) <= data['upper_bound'], name=r)


# Additional constraints (fiber, healthiness, carbs, umami, calcium)
# ... (Add all your additional constraints here as shown in the example below)

m.addConstr(16*x['bagged salads'] + 10*x['bananas'] >= 62, "fiber_constraint_1")

# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print("Optimal solution found:")
    for food in foods:
        print(f"{food}: {x[food].x}")
    print(f"Objective value: {m.objVal}")
elif m.status == gp.GRB.INFEASIBLE:
    print("Model is infeasible.")
else:
    print(f"Optimization terminated with status {m.status}")

```