![]() |
elevator
0.7
Симулятор пассажирского лифта
|
Основной класс — симулятор пассажирского лифта Подробнее...
#include <Control.h>
Открытые члены | |
Control (size_t numberOfFloors, size_t numberOfElevators, size_t capacityOfElevator) | |
Инициализирующий конструктор Подробнее... | |
~Control () | |
Деструктор Подробнее... | |
void | MakeStep () |
Функция выполнения шага моделирования по времени Подробнее... | |
size_t | getCurrentTime () const |
Функция запроса текущего времени Подробнее... | |
void | SetElevatorDestination (size_t elevatorNumber, size_t destination) |
Функция задания назначения лифту Подробнее... | |
void | SetElevatorIndicator (size_t elevatorNumber, ElevatorIndicator indicator) |
Функция задания состояния индикатора лифта (лампочка со стрелочкой, которую видят пассажиры) Подробнее... | |
size_t | getElevatorDestination (size_t elevatorNumber) const |
Функция запроса текущего назначения Подробнее... | |
ElevatorIndicator | getElevatorIndicator (size_t elevatorNumber) const |
Функция запроса текущего состояния индикатора Подробнее... | |
bool | isElevatorAchievedDestination (size_t elevatorNumber) const |
Проверка того, что лифт завершил выполнение текущего назначения Подробнее... | |
bool | isElevatorEmptyAfterUnloading (size_t elevatorNumber) const |
Проверка того, что лифт пустой после выхода очередного пассажира Подробнее... | |
bool | isElevatorEmpty (size_t elevatorNumber) const |
Проверка того, что кабина лифта пуста Подробнее... | |
bool | isElevatorGoingUp (size_t elevatorNumber) const |
Проверка того, что кабина лифта движется вверх Подробнее... | |
bool | isElevatorGoingDn (size_t elevatorNumber) const |
Проверка того, что кабина лифта движется вниз Подробнее... | |
bool | isElevatorStaying (size_t elevatorNumber) const |
Проверка того, что кабина лифта стоит (не движется) Подробнее... | |
bool | isElevatorGoingUniformly (size_t elevatorNumber) const |
Проверка того, что кабина лифта движется равномерно Подробнее... | |
bool | isElevatorAccelerating (size_t elevatorNumber) const |
Проверка того, что кабина лифта ускоряется (разгоняется) Подробнее... | |
bool | isElevatorBreaking (size_t elevatorNumber) const |
Проверка того, что кабина лифта замедляется (тормозит) Подробнее... | |
bool | isElevatorDoorsOpening (size_t elevatorNumber) const |
Проверка того, что у кабины лифта в данный момент открываются двери Подробнее... | |
bool | isElevatorDoorsClosing (size_t elevatorNumber) const |
Проверка того, что у кабины лифта в данный момент закрываются двери Подробнее... | |
bool | isElevatorDoorsOpened (size_t elevatorNumber) const |
Проверка того, что у кабины лифта в данный момент открыты двери Подробнее... | |
bool | isElevatorStayingDoorsClosed (size_t elevatorNumber) const |
Проверка того, что у кабина лифта в данный момент стоит на этаже с закрытыми дверьми Подробнее... | |
double | getElevatorPosition (size_t elevatorNumber) const |
Функция запроса текущего положения лифта Подробнее... | |
const std::vector< bool > & | getFloorUpButtons () const |
Функция запроса состояний кнопок "вверх" на этажах Подробнее... | |
const std::vector< bool > & | getFloorDnButtons () const |
Функция запроса состояний кнопок "вниз" на этажах Подробнее... | |
bool | getFloorUpButton (size_t floor) const |
Функция запроса состояния кнопки "вверх" на конкретном этаже Подробнее... | |
bool | getFloorDnButton (size_t floor) const |
Функция запроса состояния кнопки "вниз" на конкретном этаже Подробнее... | |
void | unsetUpButton (size_t floor) |
Функция сброса (выключения) кнопки "вверх" на конкретном этаже Подробнее... | |
void | unsetDnButton (size_t floor) |
Функция сброса (выключения) кнопки "вниз" на конкретном этаже Подробнее... | |
const std::vector< bool > & | getElevatorButtons (size_t elevatorNumber) const |
Функция запроса состояний кнопок в кабине лифта Подробнее... | |
bool | getElevatorButton (size_t elevatorNumber, size_t floor) const |
Функция запроса состояния конкретной кнопки в кабине лифта Подробнее... | |
void | AddPassengerToQueue (const PassengerProperties &passProp_) |
Функция добавления пассажира в очередь Подробнее... | |
void | ReadTimeTable (const std::string &fileName_) |
Функция чтения расписания появления пассажиров на этажах Подробнее... | |
void | PrintElevatorState (size_t elevatorNumber, const std::string &fname="") const |
Функция печати в файл или на экран состояния лифта в текущий момент времени Подробнее... | |
void | PrintButtonsState (const std::string &fname="") const |
Функция печати в файл или на экран состояния кнопок в кабинах и на этажах в текущий момент времени Подробнее... | |
void | PrintPassengerState (const std::string &fname="") const |
Функция печати в файл или на экран событий, произошедших с пассажирами за последний шаг (последнюю секунду) Подробнее... | |
void | PrintStatistics (bool passengersDetails, const std::string &fname="") const |
Функция печати в файл или на экран итоговой статистики, включая итоговый "рейтинг" (чем меньше - тем лучше!) Подробнее... | |
Открытые атрибуты | |
const size_t | waitingTime = 5 |
Время ожидания до закрытия дверей (если только кто-то не нажмет кнопку "ход" раньше) Подробнее... | |
const size_t | timeEntering = 2 |
Время между входами двух пассажиров в лифт Подробнее... | |
const size_t | timeLeaving = 2 |
Время между выходами двух пассажиров в лифт Подробнее... | |
const size_t | timeOpening = 4 |
Время открывания дверей Подробнее... | |
const size_t | timeClosing = 4 |
Время закрывания дверей Подробнее... | |
const size_t | timeAccelerating = 4 |
Время разгона лифта Подробнее... | |
const size_t | timeBreaking = 3 |
Время торможения лифта Подробнее... | |
const double | veloUniform = 0.25 |
Скорость равномерно движения лифта (в долях этажа) Подробнее... | |
Control::Control | ( | size_t | numberOfFloors, |
size_t | numberOfElevators, | ||
size_t | capacityOfElevator | ||
) |
Инициализирующий конструктор
[in] | numberOfFloors | число этажей (считая подвальный) |
[in] | numberOfElevators | число лифтовых кабин |
[in] | capacityOfElevator | емкость каждой кабины |
См. определение в файле Control.cpp строка 22
Control::~Control | ( | ) |
void Control::AddPassengerToQueue | ( | const PassengerProperties & | passProp_ | ) |
Функция добавления пассажира в очередь
[in] | passProp_ | константная ссылка на список параметров пассажира |
См. определение в файле Control.cpp строка 554
|
inline |
|
inline |
Функция запроса состояния конкретной кнопки в кабине лифта
[in] | elevatorNumber | номер кабины, состояние кнопки в которой запрашивается |
[in] | floor | кнопка, состояние которой запрашивается |
См. определение в файле Control.h строка 411
|
inline |
Функция запроса состояний кнопок в кабине лифта
[in] | elevatorNumber | номер кабины, состояние кнопок в которой запрашивается |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Проверка того, что кабина лифта ускоряется (разгоняется)
Может быть истинной только при закрытых дверях, когда лифт движется вверх или вниз с ускорением (разгоном)
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что лифт завершил выполнение текущего назначения
Назначение считается выполненым, когда
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
См. определение в файле Control.h строка 167
|
inline |
Проверка того, что кабина лифта замедляется (тормозит)
Может быть истинной только при закрытых дверях, когда лифт движется вверх или вниз с замедлением (тормозит)
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабины лифта в данный момент закрываются двери
Может быть истинной только при нахождении лифта на этаже, когда он не движется
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабины лифта в данный момент открыты двери
Может быть истинной только при нахождении лифта на этаже, когда он не движется
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабины лифта в данный момент открываются двери
Может быть истинной только при нахождении лифта на этаже, когда он не движется
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта пуста
Состояние лифта не проверяется - стоит он или едет, открыты или нет двери
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что лифт пустой после выхода очередного пассажира
Возвращает true, если лифт стоит на этаже, и после выхода очередного пассажира лифт оказался пустым — возможно, при этом имеет смысл "включить" индикатор в оба направления, чтобы в любом случае зашел пассажир, стоящий первым в очереди. Но это не обязательно - у Вас может быть своя логика!
Если индикатор лифта "горит" в состоянии both (в обе стороны), при этом он пустой или нет - не важно, и в лифт входит пассажир, то индикатор автоматически переключается в то направление, какую кнопку он нажал, входя в лифт.
Будьте осторожны, "зажигайте" состояние индикатора both (в обе стороны) аккуратно, но и без него обойтись будет трудно!
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта движется вниз
Может быть истинной только при закрытых дверях; едет ли лифт равномерно или с ускорением - не важно
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта движется равномерно
Может быть истинной только при закрытых дверях, когда лифт движется равномерно (не разгоняется и не тормозит)
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
См. определение в файле Control.h строка 250
|
inline |
Проверка того, что кабина лифта движется вверх
Может быть истиной только при закрытых дверях; едет ли лифт равномерно или с ускорением - не важно
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта стоит (не движется)
Может быть истиной не только, когда лифт на этаже (при этом состояние дверей не важно), но и между этажами, когда лифт, к примеру ехал вверх, но поступило новое назначение: а этом случае он тормозит, в течение 1 секунды стоит на месте (в этот ммомент данное условие будет выполненным), а потом разгоняется вниз
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабина лифта в данный момент стоит на этаже с закрытыми дверьми
Может быть истинной только при нахождении лифта на этаже
[in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
void Control::MakeStep | ( | ) |
Функция выполнения шага моделирования по времени
См. определение в файле Control.cpp строка 102
void Control::PrintButtonsState | ( | const std::string & | fname = "" | ) | const |
Функция печати в файл или на экран состояния кнопок в кабинах и на этажах в текущий момент времени
Если вызывается без аргумента - печать на экран, если с аргументом - печать в файл с данным именем.
Если вызывать эту функцию на каждом шаге по времени - получится полный протокол состояния всех кнопок в кабинах и на этажах
[in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 742
void Control::PrintElevatorState | ( | size_t | elevatorNumber, |
const std::string & | fname = "" |
||
) | const |
Функция печати в файл или на экран состояния лифта в текущий момент времени
Если вызывается без аргумента - печать на экран, если с аргументом - печать в файл с данным именем.
Если вызывать эту функцию на каждом шаге по времени - получится полный протокол работы кабины лифта
[in] | elevatorNumber | номер кабины, состояние котрой печатается |
[in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 595
void Control::PrintPassengerState | ( | const std::string & | fname = "" | ) | const |
Функция печати в файл или на экран событий, произошедших с пассажирами за последний шаг (последнюю секунду)
Если вызывается без аргумента - печать на экран, если с аргументом - печать в файл с данным именем.
Выводит сообщения:
[in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 789
void Control::PrintStatistics | ( | bool | passengersDetails, |
const std::string & | fname = "" |
||
) | const |
Функция печати в файл или на экран итоговой статистики, включая итоговый "рейтинг" (чем меньше - тем лучше!)
[in] | passengersDetails | признак печати статистики по каждому пассажиру |
[in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 821
void Control::ReadTimeTable | ( | const std::string & | fileName_ | ) |
Функция чтения расписания появления пассажиров на этажах
[in] | fileName_ | константная ссылка на имя файла с расписанием |
См. определение в файле Control.cpp строка 559
|
inline |
|
inline |
Функция задания состояния индикатора лифта (лампочка со стрелочкой, которую видят пассажиры)
[in] | elevatorNumber | номер кабины, которой задается назначение |
[in] | indicator | устанавливаемое значение индикатора (вверх, вниз или в обе стороны) |
См. определение в файле Control.h строка 130
|
inline |
Функция сброса (выключения) кнопки "вниз" на конкретном этаже
[in] | floor | номер этажа, на котором сбрасывается (гасится) кнопка Добавлена на всякий случай; если на этаже есть пассажиры, и они увидят, что нужная им кнопка погасла - то они ее нажмут |
|
inline |
Функция сброса (выключения) кнопки "вверх" на конкретном этаже
[in] | floor | номер этажа, на котором сбрасывается (гасится) кнопка Добавлена на всякий случай; если на этаже есть пассажиры, и они увидят, что нужная им кнопка погасла - то они ее нажмут |
const size_t Control::timeAccelerating = 4 |
const size_t Control::timeBreaking = 3 |
const size_t Control::timeClosing = 4 |
const size_t Control::timeEntering = 2 |
const size_t Control::timeLeaving = 2 |
const size_t Control::timeOpening = 4 |
const double Control::veloUniform = 0.25 |
const size_t Control::waitingTime = 5 |