Airplane seating

No preview image

1 collaborator

Default-person Amulya Angajala (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.2 • Viewed 835 times • Downloaded 59 times • Run 0 times
Download the 'Airplane seating' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

This model is meant to demonstrate how long it takes to seat people on a airplane. Airlines are trying to cut costs as much as possible, and every moment the airplane spends on the ground, the more money lost. So, there have been a number of different ways that the airlines are attempting to make boarding more efficient. Southwest has attempted to express boarding by allowing for an open-seating policy. This model can be used to see how long it takes for Southwest to board their airplanes. Other models of boarding processes for airplanes can be used to compare Southwest’s strategy to other companies.

HOW IT WORKS

The model has all of the passengers coming into the airplane in a single file line. Each passenger has a preference for which seat they want (either aisle or window). When the person gets onto the airplane, they look at each seat in the row that they are standing in to see if there is a seat that matches their preference. If there is a seat that matches their preference, they pick the seat based on if the number of people who are already occupying the row. So, there is a higher chance that they will sit in the seat if the row is completely empty versus if the row is almost full.

If there is no seat in that row that matches their preference, there is a chance that the person still sits in one of those seats, which is also a random number relative to the number of seats already occupied on the plane.

If in neither of these cases, the turtle picks a seat, they try to move forward, which they can only do if the space in front of them is not occupied by a turtle.

If the turtle chooses a seat, the turtle pauses in front of the seat for 2 ticks, which is how long it would take to get into the row. If the passenger has a bag, the turtle pauses for 12 ticks, because it takes 10 ticks to get the bag into the overhead compartment.

If the passenger reaches the end of the plane without choosing a seat, they turn around and start making their way forward, again looking for a seat. If there is a turtle not yet at the end of the plane, but the person in front of them is turned around, that turtle then turns around. This same pattern happens in the opposite with the front of the plane.

HOW TO USE IT

1) Adjust parameters (see below), or use default settings. 2) Press the SETUP button. 3) Press the GO ONCE to see one step of the simulation. 4) Press GO to see completed steps of the simulation.

Parameters: BAG PERCENT: The probability of people on the plane have bags NUMBER PASSENGERS: The amount of passengers that need to be seated

THINGS TO NOTICE

Notice how people choose middle seats depending on how full the plane is even when they do not desire the middle seat.

Notice how people who did not find a seat on the first pass through go back through the plane and the jams this causes with other passengers.

Notice how increasing the people with bags affects the time it takes to get into the seat.

THINGS TO TRY

Try adjusting the parameters under various settings.

How does more people having bags affect the total boarding time?

Why does increasing bags affect the wait time for other passengers?

Is there any problems when passengers turn around to find seats?

How does number of passengers affect the total time or ticks?

EXTENDING THE MODEL

Add "children" to the model that must sit in the same row as their parent. Parent's preferences outweigh their childrens. Place restrictions so that children cannot sit in certain rows such as exit rows.

Make a model with a fixed seating plan with similar wait times for bags and see which model is seats the amount of people in a shorter amount of time. Test to see if lining them up in a certain order based on seat number affects wait time.

Add sliders for the costs of checked and unchecked baggage and see how bag fees affect wait times.

Allow boarding to start from the front and back with passengers evenly split between the two.

Add overhead bins and have each person with a bag to check if they can fit their bag in a bin, else to keep moving along the plane.

Change the preferences so that people would like to sit closer to the front if they can.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

globals
[
  seats
  aisle
  runway
]


patches-own [seat-type]
turtles-own [pref countdown seated chosen hasBag]

to setup
  clear-all
  resize-world -10 10 -100 10
  ask patches [ set pcolor grey]
  set seats patches with
  [pxcor <= 3 and pxcor >= -3 and pxcor != 0  and pycor >= 0]
  ask seats [set pcolor green]
  set aisle patches with
  [pxcor = 0 and pycor >= 0]
  ask aisle [set pcolor yellow]
   set runway patches with
  [pxcor = 0 and pycor < 0]
  ask runway [set pcolor black]
  ask seats [
    if pxcor = 3 [ set seat-type  "window"]
    if pxcor = 2 [ set seat-type  "middle"]
    if pxcor = 1 [ set seat-type  "aisle"]
    if pxcor = -1 [ set seat-type  "aisle"]
    if pxcor = -2 [ set seat-type  "middle"]
    if pxcor = -3 [ set seat-type  "window"]
  ]



  create-turtles numberPassengers
  [
    set color blue
    setxy 0 0
    move-to one-of runway
    set heading 0
    set countdown  2
    set hasBag random 100
    if (hasBag < bagPercent) [set countdown countdown + 10]
    set pref one-of (list "window" "aisle")
    set seated  0
    set chosen 0
    set shape "person"
  ]
  reset-ticks
end 

to move

  if heading = 0
  [ ifelse  ycor = 10
     [set heading 180]
  [

      ifelse count turtles-at 0 1 > 0 [
        ifelse ( ([heading] of one-of turtles-at 0 1) = 180)
        [set heading 180]

         [if not any? turtles-on patch-ahead 1 and seated = 0
         [fd 1]
       ]
     ]
   [
    if not any? turtles-on patch-ahead 1 and seated = 0
      [fd 1]
  ]
  ]]
  if heading = 180
  [
      ifelse  ycor = 0
      [set heading 0]

  [
      ifelse count turtles-at 0 -1 > 0 [
        ifelse ( ([heading] of one-of turtles-at 0 -1) = 0) ; or (([heading] of one-of turtles-at 0 -1) = 0 and ([heading] of one-of turtles-at 0 -2) = 0))
         [set heading 0]

         [if not any? turtles-on patch-ahead 1 and seated = 0
         [fd 1]
       ]
     ]
   [
    if not any? turtles-on patch-ahead 1 and seated = 0
      [fd 1]
  ]]]
end 

to go
  ; stop simulation if everyone is seated

  if not any? turtles with [seated = 0] [stop]
  ask turtles [
    seat-people
  ]
  ask seats [
    turn-patch-red
  ]
  tick
end 

;to go-once
;  ask turtles [
;    seat-people
;  ]
;  ask seats
;  [turn-patch-red]
;end

to-report try-seat [a b c]

  ifelse ([pcolor] of patch-at a 0 = green and


    ((pref = b and random count patches with [pycor = c and pcolor = green] > 1)

      or

      (random ((count patches with [pcolor = green] * 5)) ^ 3) <= 1))




    [
    set chosen a
    report true
  ]
  [report false]
end 

to seat-people
 if seated = 0 [
    ifelse chosen = 0 [

    ifelse (try-seat -1 "aisle" ycor)
    [][
      ifelse (try-seat 1 "aisle" ycor)
      [] [
        ifelse (try-seat 3 "window" ycor)
        [] [
          ifelse (try-seat -3 "window" ycor)
          [][
            ifelse (try-seat 2 "middle" ycor)
            [][
              ifelse (try-seat -2 "middle" ycor)
              [][move]
  ]]]]]]
    [
     ifelse countdown <= 0
      [move-to patch-at chosen 0
        set seated  1
      ]
      [set countdown countdown - 1
    ]]
  ]
end 
;   ifelse ([pcolor] of patch-at -1 0 = green and (pref = "aisle" or random count patches with [pcolor = green] <= 1))
;    [ifelse countdown <= 0
;      [move-to patch-at -1 0
;        set seated  1]
;      [set countdown countdown - 1]]
;    [move]
 ; ]

to turn-patch-red
  if one-of turtles-here != nobody [set pcolor  red]
end 



;([pxcor] of self = xcor) and ([pcolor] of self = green) and ([seat-type] of self = pref)

There are 2 versions of this model.

Uploaded by When Description Download
Amulya Angajala over 7 years ago Fixed bug Download this version
Amulya Angajala over 7 years ago Initial upload Download this version

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.