## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize profit by determining the number of premium class seats and regular class seats to sell on a long-haul bus.

### Decision Variables

- \(x\): Number of premium class seats to sell.
- \(y\): Number of regular class seats to sell.

### Objective Function

The profit made from selling \(x\) premium class seats is $50\(x\), and the profit from selling \(y\) regular class seats is $30\(y\). The objective is to maximize the total profit:

\[ \text{Maximize:} \quad 50x + 30y \]

### Constraints

1. **Bus Capacity Constraint**: The bus carries at most 100 passengers.
\[ x + y \leq 100 \]

2. **Premium Class Reservation Constraint**: The bus reserves at least 30 seats for premium class.
\[ x \geq 30 \]

3. **Passenger Preference Constraint**: At least twice as many passengers prefer regular class than premium class.
\[ y \geq 2x \]

4. **Non-Negativity Constraints**: The number of seats cannot be negative.
\[ x \geq 0, y \geq 0 \]

However, since \(x \geq 30\) is given, the \(x \geq 0\) constraint is implicitly satisfied.

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x = model.addVar(lb=30, name="premium_seats")  # At least 30 premium seats
    y = model.addVar(name="regular_seats")

    # Objective function: Maximize profit
    model.setObjective(50 * x + 30 * y, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(x + y <= 100, name="bus_capacity")
    model.addConstr(y >= 2 * x, name="passenger_preference")

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution: Premium Seats = {x.varValue}, Regular Seats = {y.varValue}")
        print(f"Maximum Profit: ${50 * x.varValue + 30 * y.varValue}")
    else:
        print("The model is infeasible.")

solve_bus_seating_problem()
```

This code defines the optimization problem using Gurobi's Python interface, solves it, and prints out the optimal solution if one exists.