Моделирование работы автовокзала
Краткое сожержание материала:
Размещено на
Оглавление
- Введение
- 1. Постановка задачи
- 2. Разработка приложения
- 2.1 Класс “Моделирование”
- 2.2 Процесс моделирования
- 2.3 Обработка и печать результатов моделирования
- 2.4 Работа программы моделирования
- Литература
- Приложения
Введение
Основным методом исследования систем является метод моделирования, т.е. способ теоретического анализа и практического действия, направленный на разработку и использование моделей. Суть моделирования заключается в описании социально-экономических систем и процессов в виде экономико-математических моделей.
В данном курсовом проекте будет смоделирована работа автовокзала.
Цель данного курсового проекта - овладеть практическими навыками построения моделей, для анализа взаимодействующих факторов и оценки последствий их измерения на развитие моделируемого объекта.
1. Постановка задачи
Разрабатывается программа, которая моделирует работу автовокзала. Клиенты приходят на автовокзал, встают в очередь к одному из кассиров, в зависимости от пункта назначения, обслуживаются и уходят, также производится отправка рейсов согласно расписанию. Программа на абстрактном уровне воспроизводит происходящие события в темпе искусственного времени, имитирующего реальное время. После имитации заданного интервала времени работы автовокзала программа печатает общее количество обслуженных клиентов, среднее время обслуживания клиентов, а также количество обслуженных клиентов, среднее время обслуживания клиентов по каждому направлению. Модельное время продвигается с постоянным шагом. Времена прихода и обслуживания клиентов формируются при помощи генераторов случайных чисел. При запуске программы пользователем вводятся значения параметров моделируемой системы (время моделирования, частота прихода клиентов).
2. Разработка приложения
2.1 Класс “Моделирование”
В ходе работы программы для клиента генерируется время появления следующего клиента, которое представляется как объект класса Time и является объектом класса Simulation. В цикле моделирования идет проверка на совпадение текущего времени и времени появления следующего клиента, если совпадение есть, генерируется время появления следующего клиента, а в журнал событий записывается время появления клиента и его номер.
Для генерирования времени появления используется генератор случайных чисел, реализованный в программе как функция-элемент класса Simulation. Функция-элемент Client_arrival(curr, num) этого класса генерирует случайное целое число Х из интервала [0, num] с помощью объекта класса Random, после чего число минут (Х + 1) прибавляется к текущему времени curr. Тем самым получается время появления следующего клиента.
Клиент представлется как объект класса client, который содержит следующие закрытые данные-элементы:
аrrive - время появления клиента
service_time - время обслуживания на кассе
departure_time- время отправки рейса
clientID- номер клиента
destination - место назначения
После появления клиента в цикле моделирования идет его инициализация с помощью функции-элемента класса client, которая устанавливает время появления, номер, время обслуживания на кассе и место назначения генерируются с помощью объекта класса Random. Время отправки устанавливается при продаже билета. После инициализации клиент помещается в нужную кассу в зависимости от места назначения. В классе
Simulation хранится список касс, каждая из которых представлена объектом класса ticket_office, в котором содержится очередь для клиентов, а также направление, представленное классом direction, который содержит список городов (класс city), в каждом городе имеется список рейсов(класс Run). Тем самым реализован один из двух доступных в ООП способов повторного использования программного кода - композиция.
После помещения клиента в очередь проверяются все очереди на наличие клиентов, которые должны обслуживаться. Если такие имеются, ведется поиск билета на самый ранний по отношению к текущему времени рейс. Количество билетов на каждый рейс ограничено 40 шт. Если билет продан, то в журнал событий записывается время продажи, номер клиента, место назначения, если нет - время обслуживания клиента и его номер.
В конце каждой итерации цикла моделирования уменьшается время ожидания всех клиентов в очередях на 1 минуту.
В начале каждой итерации цикла моделирования проверяется наличие отправки рейса с помощью функции RunDeparture(curr_time, textWritter), если рейс отправляется, то в журнал событий производится запись времени, направления рейса и количества пассажиров.
2.2 Процесс моделирования
Процесс моделирования запускается при нажатии на соответствующую кнопку в диалоговом окне путем вызова функции StartSimulation(Time b, Time sim, int num, ProgressBar bar) через объект класса Simulation, где b - время начала моделирования, sim - время завершения моделирования, num - частота появления клиентов. Все эти параметры задаются в диалоговом окне. При этом открывается файл "test" для регистрации событий - журнал событий. Он позволяет детально исследовать поведение моделируемой системы.
Таким образом, функция StartSimulation(Time b, Time sim, int num, ProgressBar bar) имеет следующий вид:
public void StartSimulation(Time b, Time sim, int num, ProgressBar bar)
{
TextWriter textWritter = new StreamWriter("test.txt");//создаем журнал событий
Time f = new Time();
base_time.CopyTime(b);
simul_time.CopyTime(sim);
f = simul_time - base_time;
double fbar = (double)(f.getHour() * 60 + f.getMin())/100;//значение
Time curr_time = new Time();//текущее время
Time add = new Time();
ticket_office tmp_off;//ссылка на кассу
client tmp_client = new client();
client cl_service;
List<client> tmp_list_client;//ссылка на очередь клиентов
int t = 0;
Init_Service();//инициализация касс по направлениям, создание городов, рейсов
//-------------цикл моделирования------------//
Client_arrival(base_time, num);//устанавливаем время прибытия следующего клиента
curr_time.CopyTime(base_time);//устанавливаем начальный момент времени
for (; curr_time < simul_time; curr_time++)
{
RunDeparture(curr_time, textWritter);//отправка рейса,если он //есть
if (next_arrival == curr_time)//если прибыл клиент
{
Client_arrival(curr_time, num);//устанавливаем время //прибытия следующего клиента
CountClient++;
//устанавливаем время прибытия и номер клиента
tmp_client.setAll(CountClient, curr_time);
//запись в файл
textWritter.WriteLine(curr_time.printTime() + ": прибыл клиент № "
+ Convert.ToString(tmp_client.getClientId()));
textWritter.WriteLine("");
AddClientToLine(tmp_client);//добавление клиента в очередь
}
for (int i = 0; i < service.Count; i++ )//проверяем очереди //клиетнов в каждой кассе
{
tmp_off = (ticket_office)service.ToArray().GetValue(i);
tmp_list_client = tmp_off.getLineClient();
if (tmp_list_client.Count() != 0)//если очередь не пуста
{
cl_service = (client)tmp_list_client.ToArray().GetValue(0);
if (cl_service.getServiceTime().getHour() == 0 &&
cl_service.getServiceTime().getMin() == 0)//если очередь клиента, //обслуживаем
{
Service(tmp_off, cl_service, curr_time);
if (cl_service.getDepartureTime().getHour() != 0
|| cl_service.getDepartureTime().getHour() != 0)//если билет //продан
{
textWritter.WriteLine(curr_time.printTime() + ": Клиенту №" + Convert.ToString(cl_service.getClientId()));
textWritter.WriteLine("продан билет на " +
cl_service.getDestination());
textWritter.WriteLine("время отправки: " +
cl_service.getDepartureTime().printTime());
textWritter.WriteLine("");
}
else
{
textWritter.WriteLine("Клиенту №" +
Convert.ToString(cl_service.getClientId()) + " билет не продан");
textWritter.WriteLine("");
}
tmp_list_client.RemoveAt(0);//удаляем клиента из очереди
}
}
}
SetTimeAll();//уменьшаем время ожидания всех клиентов
//--для полосы прог...
Организация информационной работы автовокзала
Основы разработки программной системы для организации информационной работы автовокзала в среде Borland Delphi 7.0 с применением стандартных компонент...
Предоставление земельного участка для строительства автовокзала
Нормативно-правовые акты и нормативно-технические документы, регламентирующие процедуру образования земельного участка для строительства автовокзала в...
Эконометрическое моделирование эффективности работы транспорта в г. Оренбурге
Основные категории, используемые при статистическом анализе эффективности работы транспорта. Статистический анализ структуры и структурных сдвигов пок...
Автоматизированная система "Автовокзал-2"
Современные условия для работы по обслуживанию клиентов уже достигло того уровня, когда обслуживающая система предприятия обрабатывает данные с очень...
Математическое моделирование биотехнических систем
Учебное пособие по дисциплине «Моделирование биологических процессов и систем».Издательство ТулГУ.Общие положения математического моделирования.Подход...