To solve this optimization problem, we need to define the decision variables, objective function, and constraints. Let's denote:

- $P$ as the number of premium tickets sold,
- $R$ as the number of regular tickets sold.

The objective is to maximize profit. Given that each premium ticket yields a profit of $50 and each regular ticket yields a profit of $30, the total profit can be represented by the equation $50P + 30R$.

There are several constraints:
1. The Ferris wheel can take at most 250 people: $P + R \leq 250$.
2. There is a minimum of 50 premium tickets available: $P \geq 50$.
3. At least 3 times as many people prefer to buy regular tickets than premium tickets: $R \geq 3P$.

To ensure the problem is feasible and to find the optimal solution, we will use Gurobi in Python. Here's how we can translate these conditions into a linear programming model:

```python
from gurobipy import *

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

# Define variables
P = m.addVar(lb=50, vtype=GRB.INTEGER, name="Premium_Tickets")
R = m.addVar(vtype=GRB.INTEGER, name="Regular_Tickets")

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

# Constraints
m.addConstr(P + R <= 250, "Capacity_Constraint")
m.addConstr(R >= 3*P, "Ticket_Preference_Constraint")

# Solve the model
m.optimize()

# Print results if an optimal solution is found
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Premium Tickets: {P.x}")
    print(f"Regular Tickets: {R.x}")
    print(f"Maximum Profit: ${50*P.x + 30*R.x:.2f}")
else:
    print("No optimal solution found. The problem might be infeasible.")
```