## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize profit by determining the number of premium and regular tickets to sell on a Ferris wheel, given certain constraints.

### Decision Variables

- \(P\): The number of premium tickets to sell.
- \(R\): The number of regular tickets to sell.

### Objective Function

The objective is to maximize profit. Given that a profit of $50 is made on each premium ticket and a profit of $30 is made on each regular ticket, the objective function can be formulated as:

\[ \text{Maximize:} \quad 50P + 30R \]

### Constraints

1. **Ferris Wheel Capacity:** The Ferris wheel can take at most 250 people.
\[ P + R \leq 250 \]

2. **Minimum Premium Tickets:** There are a minimum of 50 premium tickets available.
\[ P \geq 50 \]

3. **Regular vs. Premium Tickets:** At least 3 times as many people prefer to buy regular tickets than premium tickets.
\[ R \geq 3P \]

4. **Non-Negativity:** The number of tickets cannot be negative.
\[ P \geq 0, R \geq 0 \]

However, since \(P \geq 50\) is specified, the \(P \geq 0\) condition is implicitly satisfied.

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    P = model.addVar(lb=50, name="Premium_Tickets")  # At least 50 premium tickets
    R = model.addVar(name="Regular_Tickets")

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

    # Constraints
    model.addConstr(P + R <= 250, name="Ferris_Wheel_Capacity")  # Capacity constraint
    model.addConstr(R >= 3 * P, name="Regular_vs_Premium")  # Preference constraint

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution:")
        print(f"Premium Tickets: {P.varValue}")
        print(f"Regular Tickets: {R.varValue}")
        print(f"Max Profit: {50 * P.varValue + 30 * R.varValue}")
    else:
        print("The model is infeasible.")

# Run the function
ferris_wheel_ticket_sales()
```

This code defines the optimization problem using Gurobi's Python interface, solves it, and prints out the optimal number of premium and regular tickets to sell, as well as the maximum achievable profit. If the problem is infeasible, it indicates so.