## Problem Description and Formulation

The problem is an optimization problem with the goal to maximize the objective function:

\[ 3 \times \text{cheeseburgers} + 3 \times \text{oreos} + 1 \times \text{bananas} \]

subject to several constraints related to the grams of protein and tastiness ratings of cheeseburgers, oreos, and bananas.

## Resources/Attributes

The resources/attributes for each variable are given as:
- **r0 (grams of protein):** 
  - cheeseburgers: 1
  - oreos: 2
  - bananas: 7
  - Upper bound: 68

- **r1 (tastiness rating):** 
  - cheeseburgers: 8
  - oreos: 3
  - bananas: 5
  - Upper bound: 156

## Constraints

1. Total combined grams of protein from cheeseburgers and oreos \(\geq 8\)
2. Total combined tastiness rating from oreos and bananas \(\geq 46\)
3. Total combined tastiness rating from cheeseburgers and bananas \(\geq 35\)
4. Total combined grams of protein from cheeseburgers and bananas \(\leq 60\)
5. Total combined grams of protein from cheeseburgers and oreos \(\leq 47\)
6. Total combined grams of protein from cheeseburgers, oreos, and bananas \(\leq 47\)
7. Total combined tastiness rating from oreos and bananas \(\leq 113\)
8. Total combined tastiness rating from cheeseburgers and bananas \(\leq 105\)
9. Total combined tastiness rating from cheeseburgers, oreos, and bananas \(\leq 105\)

## Gurobi Code

```python
import gurobi

def solve_optimization_problem():
    # Create a new model
    model = gurobi.Model()

    # Define variables
    cheeseburgers = model.addVar(name="cheeseburgers", lb=0)  # Assuming non-negative
    oreos = model.addVar(name="oreos", lb=0)  # Assuming non-negative
    bananas = model.addVar(name="bananas", lb=0)  # Assuming non-negative

    # Objective function
    model.setObjective(3 * cheeseburgers + 3 * oreos + bananas, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(cheeseburgers + 2 * oreos >= 8, name="protein_cheeseburgers_oreos")
    model.addConstr(3 * oreos + 5 * bananas >= 46, name="tastiness_oreos_bananas")
    model.addConstr(8 * cheeseburgers + 5 * bananas >= 35, name="tastiness_cheeseburgers_bananas")
    model.addConstr(cheeseburgers + 7 * bananas <= 60, name="protein_cheeseburgers_bananas")
    model.addConstr(cheeseburgers + 2 * oreos <= 47, name="protein_cheeseburgers_oreos_max")
    model.addConstr(cheeseburgers + 2 * oreos + 7 * bananas <= 47, name="protein_all")
    model.addConstr(3 * oreos + 5 * bananas <= 113, name="tastiness_oreos_bananas_max")
    model.addConstr(8 * cheeseburgers + 5 * bananas <= 105, name="tastiness_cheeseburgers_bananas_max")
    model.addConstr(8 * cheeseburgers + 3 * oreos + 5 * bananas <= 105, name="tastiness_all")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Cheeseburgers: {cheeseburgers.varValue}")
        print(f"Oreos: {oreos.varValue}")
        print(f"Bananas: {bananas.varValue}")
        print(f"Objective: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_optimization_problem()
```