## Problem Description and Formulation

The amusement company sells two types of tickets: all-inclusive tickets and regular tickets. The goal is to maximize profit given the following constraints:

1. The company sells 500 tickets in a day due to capacity constraints.
2. At least 100 tickets reserved to be all-inclusive tickets.
3. At least 3 times as many people prefer regular tickets than all-inclusive tickets.
4. The profit per all-inclusive ticket is $50, and the profit per regular ticket is $20.

## Symbolic Representation

Let's denote:
- \(x\): Number of all-inclusive tickets sold.
- \(y\): Number of regular tickets sold.

The objective function to maximize profit is:
\[ \text{Maximize:} \quad 50x + 20y \]

Subject to:
1. \( x + y = 500 \) (Capacity constraint)
2. \( x \geq 100 \) (Minimum all-inclusive tickets)
3. \( y \geq 3x \) (Preference for regular tickets over all-inclusive tickets)
4. \( x, y \geq 0 \) (Non-negativity constraint)

## Gurobi Code

```python
import gurobipy as gp

# Create a new model
m = gp.Model("Ticket_Sales")

# Define variables
x = m.addVar(name="all_inclusive_tickets", lb=0, vtype=gp.GRB.INTEGER)
y = m.addVar(name="regular_tickets", lb=0, vtype=gp.GRB.INTEGER)

# Objective function: Maximize profit
m.setObjective(50*x + 20*y, sense=gp.GRB.MAXIMIZE)

# Constraints
m.addConstr(x + y == 500, name="capacity_constraint")
m.addConstr(x >= 100, name="min_all_inclusive")
m.addConstr(y >= 3*x, name="preference_regular")

# Solve the model
m.solve()

# Output solution
if m.status == gp.GRB.OPTIMAL:
    print(f"Optimal Solution: All-inclusive tickets = {x.varValue}, Regular tickets = {y.varValue}")
    print(f"Max Profit: ${50*x.varValue + 20*y.varValue}")
else:
    print("The model is infeasible.")
```