```python
from gurobipy import Model, GRB, quicksum

# Define the model
model = Model("Food Optimization")

# Define variables
eggs = model.addVar(vtype=GRB.INTEGER, name="eggs")
blueberry_pies = model.addVar(vtype=GRB.INTEGER, name="blueberry_pies")
pizza_slices = model.addVar(name="pizza_slices")
rotisserie_chickens = model.addVar(vtype=GRB.INTEGER, name="rotisserie_chickens")
ham_sandwiches = model.addVar(vtype=GRB.INTEGER, name="ham_sandwiches")
tomatoes = model.addVar(vtype=GRB.INTEGER, name="tomatoes")
chicken_thighs = model.addVar(name="chicken_thighs")

# Define objective function
model.setObjective(9.36 * eggs + 8.36 * blueberry_pies + 1.97 * pizza_slices + 6.7 * rotisserie_chickens + 5.91 * ham_sandwiches + 8.29 * tomatoes + 5.54 * chicken_thighs, GRB.MINIMIZE)

# Define constraints
model.addConstr(7 * eggs + 1 * ham_sandwiches >= 22, "c0")
model.addConstr(3 * blueberry_pies + 3 * tomatoes >= 8, "c1")
model.addConstr(3 * rotisserie_chickens + 11 * chicken_thighs >= 12, "c2")
model.addConstr(3 * blueberry_pies + 1 * ham_sandwiches >= 18, "c3")
model.addConstr(1 * ham_sandwiches + 11 * chicken_thighs >= 18, "c4")
model.addConstr(2 * pizza_slices + 11 * chicken_thighs >= 17, "c5")
model.addConstr(1 * ham_sandwiches + 3 * tomatoes >= 14, "c6")
model.addConstr(3 * rotisserie_chickens + 3 * tomatoes >= 16, "c7")
model.addConstr(7 * eggs + 2 * pizza_slices >= 8, "c8")
model.addConstr(7 * eggs + 3 * rotisserie_chickens + 11 * chicken_thighs >= 14, "c9")
model.addConstr(7 * eggs + 1 * ham_sandwiches + 3 * tomatoes >= 14, "c10")
model.addConstr(7 * eggs + 3 * rotisserie_chickens + 1 * ham_sandwiches >= 14, "c11")
model.addConstr(3 * rotisserie_chickens + 1 * ham_sandwiches + 11 * chicken_thighs >= 14, "c12")
model.addConstr(3 * blueberry_pies + 1 * ham_sandwiches + 11 * chicken_thighs >= 14, "c13")


# ... (The rest of the fiber constraints, tastiness constraints, and resource constraints)

model.addConstr(7 * eggs + 3 * blueberry_pies + 2 * pizza_slices + 3 * rotisserie_chickens + 1 * ham_sandwiches + 3 * tomatoes + 11 * chicken_thighs <= 156, "r0")
model.addConstr(8 * eggs + 4 * blueberry_pies + 2 * pizza_slices + 9 * rotisserie_chickens + 4 * ham_sandwiches + 1 * tomatoes + 10 * chicken_thighs <= 406, "r1")


# Optimize the model
model.optimize()

# Print the solution
if model.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    for v in model.getVars():
        print(f"{v.varName}: {v.x}")
    print(f"Objective value: {model.objVal}")
elif model.status == GRB.INFEASIBLE:
    print("Model is infeasible.")
else:
    print(f"Optimization terminated with status {model.status}")
```