To solve the given optimization problem, we first need to convert the natural language description into a symbolic representation. This involves defining variables for each type of oil (economical, regular, and premium), formulating the objective function based on net revenues, and establishing constraints related to the availability of compounds A and B.

Let's denote:
- \(x_1\) as the number of tankers of economical grade oil,
- \(x_2\) as the number of tankers of regular grade oil,
- \(x_3\) as the number of tankers of premium grade oil.

The objective function, which aims to maximize net revenue, can be written as:
\[500x_1 + 1020x_2 + 920x_3\]

Constraints are based on the availability of compounds A and B:
- For compound A: \(4x_1 + 5x_2 + 8x_3 \leq 200\)
- For compound B: \(2x_1 + x_2 + x_3 \leq 100\)

Additionally, since we cannot produce a negative number of tankers, we have non-negativity constraints:
- \(x_1 \geq 0\)
- \(x_2 \geq 0\)
- \(x_3 \geq 0\)

Given this symbolic representation, the problem can be formulated as follows:

```json
{
  'sym_variables': [('x1', 'economical grade oil tankers'), ('x2', 'regular grade oil tankers'), ('x3', 'premium grade oil tankers')],
  'objective_function': '500*x1 + 1020*x2 + 920*x3',
  'constraints': ['4*x1 + 5*x2 + 8*x3 <= 200', '2*x1 + x2 + x3 <= 100', 'x1 >= 0', 'x2 >= 0', 'x3 >= 0']
}
```

To solve this problem using Gurobi in Python, we'll use the following code:

```python
from gurobipy import *

# Create a model
m = Model("Oil_Production")

# Define variables
x1 = m.addVar(name="economical", lb=0)
x2 = m.addVar(name="regular", lb=0)
x3 = m.addVar(name="premium", lb=0)

# Set the objective function
m.setObjective(500*x1 + 1020*x2 + 920*x3, GRB.MAXIMIZE)

# Add constraints
m.addConstr(4*x1 + 5*x2 + 8*x3 <= 200, name="compound_A")
m.addConstr(2*x1 + x2 + x3 <= 100, name="compound_B")

# Optimize the model
m.optimize()

# Print solution
for v in m.getVars():
    print(f"{v.varName}: {v.x}")
print("Objective:", m.objVal)
```