Pertama ada kelas lift. Ini memiliki arah (atas, bawah, berdiri, pemeliharaan), lantai saat ini dan daftar permintaan lantai yang diurutkan sesuai arah. Itu menerima permintaan dari lift ini.
Lalu ada bank. Ini berisi lift dan menerima permintaan dari lantai. Ini dijadwalkan untuk semua elevator aktif (tidak dalam pemeliharaan).
Penjadwalannya akan seperti:
- jika tersedia pilih lift berdiri untuk lantai ini.
- kalau tidak pilih lift yang pindah ke lantai ini.
- jika tidak, pilih lift berdiri di lantai lain.
- jika tidak pilih lift dengan beban terendah.
Setiap elevator memiliki sekumpulan status.
- Pemeliharaan: elevator tidak bereaksi terhadap sinyal eksternal (hanya pada sinyalnya sendiri).
- Berdiri: lift dipasang di lantai. Jika menerima panggilan. Dan lift ada di lantai itu, pintunya terbuka. Jika berada di lantai lain, ia bergerak ke arah itu.
- Naik: lift naik. Setiap kali mencapai lantai, ia memeriksa apakah perlu berhenti. Jika demikian itu berhenti dan membuka pintu. Itu menunggu untuk jangka waktu tertentu dan menutup pintu (kecuali ada sesuatu yang bergerak melalui mereka. Kemudian menghapus lantai dari daftar permintaan dan memeriksa apakah ada permintaan lain. Jika demikian lift mulai bergerak lagi. Jika tidak, itu akan memasuki berdiri negara.
- Bawah: seperti naik tapi dengan arah sebaliknya.
Ada sinyal tambahan:
- alarm. Lift berhenti. Dan jika di lantai, pintunya terbuka, daftar permintaan dihapus, permintaan dipindahkan kembali ke bank.
- pintu terbuka. Membuka pintu jika lift ada di lantai dan tidak bergerak.
- pintu tertutup. Tutup pintu jika terbuka.
EDIT: Beberapa elevator tidak mulai dari bawah / first_floor esp. dalam kasus gedung pencakar langit.
min_floor & max_floor adalah dua atribut tambahan untuk Elevator.