To solve the optimization problem described, we first need to translate the natural language description into a symbolic representation. This involves defining variables, an objective function, and constraints using mathematical notation.

Let's define our variables as follows:
- $x_0$ represents the number of apples,
- $x_1$ represents the number of hot dogs,
- $x_2$ represents the number of oranges.

The objective function to minimize is given by $2.56x_0 + 6.29x_1 + 1.2x_2$.

Now, let's list out the constraints based on the problem description:
1. Total protein from apples and hot dogs should be as much or less than 106: $18x_0 + 13x_1 \leq 106$
2. The total combined grams of protein from apples plus hot dogs plus oranges should be at least 47: $18x_0 + 13x_1 + 18x_2 \geq 47$
3. Total protein from apples and oranges should be at least 47: $18x_0 + 18x_2 \geq 47$
4. The total combined tastiness rating from hot dogs and oranges must be no less than 77: $10x_1 + 17x_2 \geq 77$
5. The total combined tastiness rating from apples, and oranges must be at least 46: $24x_0 + 17x_2 \geq 46$
6. The total combined tastiness rating from apples, hot dogs, and oranges has to be as much or more than 77: $24x_0 + 10x_1 + 17x_2 \geq 77$
7. $-4$ times the number of hot dogs plus $2$ times the number of oranges must be at least zero: $-4x_1 + 2x_2 \geq 0$
8. The total combined tastiness rating from hot dogs plus oranges has to be equal to or less than 279: $10x_1 + 17x_2 \leq 279$

All variables must be integers ($x_0, x_1, x_2 \in \mathbb{Z}$).

Here is the symbolic representation of the problem:
```json
{
    'sym_variables': [('x0', 'apples'), ('x1', 'hot dogs'), ('x2', 'oranges')],
    'objective_function': '2.56*x0 + 6.29*x1 + 1.2*x2',
    'constraints': [
        '18*x0 + 13*x1 <= 106',
        '18*x0 + 13*x1 + 18*x2 >= 47',
        '18*x0 + 18*x2 >= 47',
        '10*x1 + 17*x2 >= 77',
        '24*x0 + 17*x2 >= 46',
        '24*x0 + 10*x1 + 17*x2 >= 77',
        '-4*x1 + 2*x2 >= 0',
        '10*x1 + 17*x2 <= 279'
    ]
}
```

And here is the Gurobi code to solve this problem:
```python
from gurobipy import *

# Create a new model
m = Model("Optimization_Problem")

# Create variables
x0 = m.addVar(vtype=GRB.INTEGER, name="apples")
x1 = m.addVar(vtype=GRB.INTEGER, name="hot_dogs")
x2 = m.addVar(vtype=GRB.INTEGER, name="oranges")

# Set the objective function
m.setObjective(2.56*x0 + 6.29*x1 + 1.2*x2, GRB.MINIMIZE)

# Add constraints
m.addConstr(18*x0 + 13*x1 <= 106, "protein_apples_hotdogs")
m.addConstr(18*x0 + 13*x1 + 18*x2 >= 47, "total_protein")
m.addConstr(18*x0 + 18*x2 >= 47, "protein_apples_oranges")
m.addConstr(10*x1 + 17*x2 >= 77, "tastiness_hotdogs_oranges")
m.addConstr(24*x0 + 17*x2 >= 46, "tastiness_apples_oranges")
m.addConstr(24*x0 + 10*x1 + 17*x2 >= 77, "total_tastiness")
m.addConstr(-4*x1 + 2*x2 >= 0, "hotdogs_oranges_ratio")
m.addConstr(10*x1 + 17*x2 <= 279, "tastiness_hotdogs_oranges_max")

# Optimize the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Apples: {x0.x}")
    print(f"Hot Dogs: {x1.x}")
    print(f"Oranges: {x2.x}")
else:
    print("No optimal solution found")
```