## Problem Description and Formulation

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

### Decision Variables
- \(L\): The number of luxury tickets to sell.
- \(R\): The number of regular tickets to sell.

### Objective Function
The objective is to maximize profit. Given that the profit per luxury ticket is $500 and per regular ticket is $300, the objective function can be formulated as:
\[ \text{Maximize:} \quad 500L + 300R \]

### Constraints
1. **Total Passengers**: The cruise ship can carry at most 500 passengers.
\[ L + R \leq 500 \]
2. **Luxury Tickets Reservation**: The cruise ship reserves at least 100 luxury tickets.
\[ L \geq 100 \]
3. **Regular vs. Luxury Tickets**: At least 2 times as many passengers prefer to buy regular tickets than luxury tickets.
\[ R \geq 2L \]
4. **Non-Negativity**: The number of tickets cannot be negative.
\[ L \geq 0, R \geq 0 \]

However, given that \(L \geq 100\) is already specified, the non-negativity constraint for \(L\) is implicitly satisfied.

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    L = model.addVar(lb=100, name="Luxury_Tickets")  # At least 100 luxury tickets
    R = model.addVar(name="Regular_Tickets")

    # Objective function: Maximize profit
    model.setObjective(500*L + 300*R, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(L + R <= 500, name="Total_Passengers")  # Total passengers cannot exceed 500
    model.addConstr(R >= 2*L, name="Regular_vs_Luxury")  # At least 2 times as many regular tickets as luxury tickets

    # Solve the model
    model.optimize()

    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution: Luxury Tickets = {L.varValue}, Regular Tickets = {R.varValue}")
        print(f"Maximum Profit: ${500*L.varValue + 300*R.varValue}")
    else:
        print("The model is infeasible")

solve_cruise_ship_ticket_problem()
```

This code defines the optimization problem using Gurobi's Python interface, sets up the objective function and constraints according to the problem description, and solves the model to find the optimal number of luxury and regular tickets to sell, thereby maximizing profit.