```python
import gurobipy as gp
from gurobipy import GRB

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

# Create variables
bananas = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="bananas")
steaks = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="steaks")
strawberries = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="strawberries")
blueberry_pies = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="blueberry_pies")
bowls_of_cereal = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="bowls_of_cereal")
slices_of_pizza = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="slices_of_pizza")
black_beans = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="black_beans")

# Set objective function
obj = 8.53*bananas**2 + 4.14*bananas*strawberries + 2.44*bananas*blueberry_pies + 3.18*bananas*bowls_of_cereal + 4.68*bananas*slices_of_pizza + 7.56*bananas*black_beans + 3.79*steaks**2 + 8.2*steaks*strawberries + 8.89*steaks*blueberry_pies + 3.94*steaks*bowls_of_cereal + 8.98*steaks*slices_of_pizza + 7.06*steaks*black_beans + 4.06*strawberries**2 + 7.33*strawberries*bowls_of_cereal + 4.73*strawberries*slices_of_pizza + 5.2*strawberries*black_beans + 9.92*blueberry_pies*slices_of_pizza + 9.3*blueberry_pies*black_beans + 9.03*bowls_of_cereal*slices_of_pizza + 7.13*bowls_of_cereal*black_beans + 4.36*slices_of_pizza*black_beans + 3.91*black_beans**2 + 4.77*bananas + 1.16*steaks + 7.21*strawberries + 1.55*blueberry_pies + 6.88*bowls_of_cereal + 7.0*slices_of_pizza + 8.24*black_beans

m.setObjective(obj, GRB.MINIMIZE)

# Add resource constraints
resources = {
    'r0': {'upper_bound': 208, 'x0': 3, 'x1': 3, 'x2': 6, 'x3': 1, 'x4': 5, 'x5': 8, 'x6': 1},
    'r1': {'upper_bound': 295, 'x0': 5, 'x1': 3, 'x2': 3, 'x3': 1, 'x4': 6, 'x5': 2, 'x6': 5},
    'r2': {'upper_bound': 174, 'x0': 5, 'x1': 6, 'x2': 4, 'x3': 3, 'x4': 1, 'x5': 3, 'x6': 8},
    'r3': {'upper_bound': 318, 'x0': 1, 'x1': 7, 'x2': 4, 'x3': 7, 'x4': 6, 'x5': 2, 'x6': 6},
    'r4': {'upper_bound': 142, 'x0': 1, 'x1': 2, 'x2': 4, 'x3': 3, 'x4': 1, 'x5': 7, 'x6': 1}
}

variables = [bananas, steaks, strawberries, blueberry_pies, bowls_of_cereal, slices_of_pizza, black_beans]

for r, data in resources.items():
    m.addConstr(sum(data[f'x{i}'] * variables[i] for i in range(len(variables))) <= data['upper_bound'], name=r)


# Add other constraints (provided in the input)
# ... (add all the other constraints here using m.addConstr) ...

# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == GRB.INFEASIBLE:
    print('Optimization was stopped with status %d' % m.status)
    # Compute IIS
    m.computeIIS()
    m.write("model.ilp")
    print('Model is infeasible. See model.ilp for an Irreducible Inconsistent Subsystem (IIS).')

```