To solve this problem, we first need to define the decision variables and the constraints based on the given information.

Let's denote:
- $P$ as the number of premium class seats sold.
- $R$ as the number of regular class seats sold.

Given information:
1. The bus can carry at most 100 passengers, so $P + R \leq 100$.
2. A profit of $50 is made for each premium class seat and $30 for each regular class seat. We want to maximize the total profit, which is $50P + 30R$.
3. The bus reserves at least 30 seats for premium class, so $P \geq 30$.
4. At least twice as many passengers prefer to travel by regular class than by premium class, so $R \geq 2P$.

Our goal is to maximize the profit function $50P + 30R$ under these constraints.

Here's how we can translate this into Gurobi code in Python:

```python
from gurobipy import *

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

# Define variables
P = m.addVar(vtype=GRB.INTEGER, name="Premium_Seats")
R = m.addVar(vtype=GRB.INTEGER, name="Regular_Seats")

# Set objective function: Maximize profit
m.setObjective(50*P + 30*R, GRB.MAXIMIZE)

# Add constraints
m.addConstr(P + R <= 100, "Total_Seats_Constraint")
m.addConstr(P >= 30, "Premium_Class_Minimum")
m.addConstr(R >= 2*P, "Regular_vs_Premium_Ratio")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Premium Seats: {P.x}")
    print(f"Regular Seats: {R.x}")
    print(f"Maximum Profit: ${50*P.x + 30*R.x}")
else:
    print("No optimal solution found. The model is either infeasible or unbounded.")
```