To solve the given optimization problem, we first need to translate the natural language description into a mathematical formulation. The goal is to maximize profit from selling regular and premium tickets under certain constraints.

Let's denote:
- \(R\) as the number of regular tickets sold,
- \(P\) as the number of premium tickets sold.

Given information:
- Total tickets sold cannot exceed 1000: \(R + P \leq 1000\)
- Profit per regular ticket is $50, and per premium ticket is $100.
- At least 100 tickets must be premium: \(P \geq 100\)
- At least 5 times as many people prefer to buy regular tickets than premium tickets: \(R \geq 5P\)

The objective function to maximize profit (\(Profit\)) can be written as:
\[Profit = 50R + 100P\]

Now, let's formulate this problem in Gurobi using Python:

```python
from gurobipy import *

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

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

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

# Constraints
m.addConstr(R + P <= 1000, "Total_Tickets_Constraint")
m.addConstr(P >= 100, "Minimum_Premium_Tickets_Constraint")
m.addConstr(R >= 5*P, "Regular_vs_Premium_Tickets_Constraint")
m.addConstr(R >= 0, "Non_Negativity-Regular")
m.addConstr(P >= 0, "Non_Negativity-Premium")

# Solve the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Regular Tickets: {R.x}")
    print(f"Premium Tickets: {P.x}")
    print(f"Maximum Profit: {m.objVal}")
else:
    print("No optimal solution found")
```