Моделирование работы автовокзала

{run_time = new Time();//время отправки рейсаrun = new Run();("Томская область");("Томская область", "Томск");_time.setTime(10, 0);.setRun(40, run_time);("Томск", run);_time.setTime(12, 30);.setRun(40, run_time);("Томск", run);_time.setTime(16, 50);.setRun(40, run_time);("Томск",

Моделирование работы автовокзала

Курсовой проект

Компьютеры, программирование

Другие курсовые по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией

Оглавление

 

Введение

. Постановка задачи

. Разработка приложения

.1 Класс Моделирование

.2 Процесс моделирования

.3 Обработка и печать результатов моделирования

.4 Работа программы моделирования

Литература

Приложения

 

Введение

 

Основным методом исследования систем является метод моделирования, т.е. способ теоретического анализа и практического действия, направленный на разработку и использование моделей. Суть моделирования заключается в описании социально-экономических систем и процессов в виде экономико-математических моделей.

В данном курсовом проекте будет смоделирована работа автовокзала.

Цель данного курсового проекта - овладеть практическими навыками построения моделей, для анализа взаимодействующих факторов и оценки последствий их измерения на развитие моделируемого объекта.

 

1. Постановка задачи

 

Разрабатывается программа, которая моделирует работу автовокзала. Клиенты приходят на автовокзал, встают в очередь к одному из кассиров, в зависимости от пункта назначения, обслуживаются и уходят, также производится отправка рейсов согласно расписанию. Программа на абстрактном уровне воспроизводит происходящие события в темпе искусственного времени, имитирующего реальное время. После имитации заданного интервала времени работы автовокзала программа печатает общее количество обслуженных клиентов, среднее время обслуживания клиентов, а также количество обслуженных клиентов, среднее время обслуживания клиентов по каждому направлению. Модельное время продвигается с постоянным шагом. Времена прихода и обслуживания клиентов формируются при помощи генераторов случайных чисел. При запуске программы пользователем вводятся значения параметров моделируемой системы (время моделирования, частота прихода клиентов).

 

2. Разработка приложения

 

.1 Класс Моделирование

 

В ходе работы программы для клиента генерируется время появления следующего клиента, которое представляется как объект класса Time и является объектом класса Simulation. В цикле моделирования идет проверка на совпадение текущего времени и времени появления следующего клиента, если совпадение есть, генерируется время появления следующего клиента, а в журнал событий записывается время появления клиента и его номер.

Для генерирования времени появления используется генератор случайных чисел, реализованный в программе как функция-элемент класса Simulation. Функция-элемент Client_arrival(curr, num) этого класса генерирует случайное целое число Х из интервала [0, num] с помощью объекта класса Random, после чего число минут (Х + 1) прибавляется к текущему времени curr. Тем самым получается время появления следующего клиента.

Клиент представлется как объект класса client, который содержит следующие закрытые данные-элементы:

аrrive - время появления клиента_time - время обслуживания на кассе_time- время отправки рейсаномер клиента- место назначения

После появления клиента в цикле моделирования идет его инициализация с помощью функции-элемента класса client, которая устанавливает время появления, номер, время обслуживания на кассе и место назначения генерируются с помощью объекта класса Random. Время отправки устанавливается при продаже билета. После инициализации клиент помещается в нужную кассу в зависимости от места назначения. В классехранится список касс, каждая из которых представлена объектом класса 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)

%20tmp_list_client;//%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b0%20%d0%bd%d0%b0%20%d0%be%d1%87%d0%b5%d1%80%d0%b5%d0%b4%d1%8c%20%d0%ba%d0%bb%d0%b8%d0%b5%d0%bd%d1%82%d0%be%d0%b2t%20=%200;_Service();//%d0%b8%d0%bd%d0%b8%d1%86%d0%b8%d0%b0%d0%bb%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f%20%d0%ba%d0%b0%d1%81%d1%81%20%d0%bf%d0%be%20%d0%bd%d0%b0%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f%d0%bc,%20%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5%20%d0%b3%d0%be%d1%80%d0%be%d0%b4%d0%be%d0%b2,%20%d1%80%d0%b5%d0%b9%d1%81%d0%be%d0%b2">{textWritter = new StreamWriter("test.txt");//создаем журнал событийf = new Time();_time.CopyTime(b);_time.CopyTime(sim);= simul_time - base_time;fbar = (double)(f.getHour() * 60 + f.getMin())/100;//значениеcurr_time = new Time();//текущее времяadd = new Time();_office tmp_off;//ссылка на кассуtmp_client = new client();cl_service;<client> tmp_list_client;//ссылка на очередь клиентовt = 0;_Service();//инициализация касс по направлениям, создание городов, рейсов

//-------------цикл моделирования------------//_arrival(base_time, num);//устанавливаем время прибытия следующего клиента_time.CopyTime(base_time);//устанавливаем начальный момент времени(; curr_time < simul_time; curr_time++)

{(curr_time, textWritter);//отправка рейса,если он //есть(next_arrival == curr_time)//если прибыл клиент

{_arrival(curr_time, num);//устанавливаем время //прибытия следующего клиента++;

//устанавливаем время прибытия и номер клиента_client.setAll(CountClient, curr_time);

//запись в файл.WriteLine(curr_time.printTime() + ": прибыл клиент № "

+ Convert.ToString(tmp_client.getClientId()));.WriteLine("");(tmp_client);//добавление клиента в очередь

}(int i = 0; i < service.Count; i++ )//проверяем очереди //клиетнов в каждой кассе

{_off = (ticket_office)service.ToArray().GetValue(i);_list_client = tmp_off.getLineClient();(tmp_list_client.Count() != 0)//если очередь не пуста

{_service = (client)tmp_list_client.ToArray().GetValue(0);(cl_service.getServiceTime().getHour() == 0 &&_service.getServiceTime().getMin() == 0)//если очередь клиента, //обслуживаем

{(tmp_off, cl_service, curr_time);(cl_service.getDepartureTime().getHour() != 0

|| cl_service.getDepartureTime().getHour() != 0)//если билет //продан

{.WriteLine(curr_time.printTime() + ": Клиенту №" + Convert.ToString(cl_service.getClientId()));.WriteLine("продан билет на " +_service.getDestination());.WriteLine("время отправки: " +_service.getDepartureTime().printTime());.WriteLine("");

}

{.WriteLine("Клиенту №" +.ToString(cl_service.getClientId()) + " билет не продан");.WriteLine("");

}_list_client.RemoveAt(0);//удаляем клиента из очереди

}

}

}();//уменьшаем время ожидания всех клиентов

//--для полосы прогресса моделирования--//++;(t == (int)fbar+1)

{.Value += 1;= 0;

}

//-------------------------------------//

}.Value = 100;.Close();

}

 

2.3 Обработка и печать результатов моделирования

 

Результаты моделирования обрабатываются и печатаются в программе функцией Statistic(TextBox text) класса Simulation. Вывод информации осуществляется в элемент TextBox диалогового окна. В начале вычисляются суммарное количество обслуженных клиентов и количество обслуженных клиентов по всем кассам и количество проданных билетов. Далее печатается среднее время ожидания клиентов.

Таким образом, функция Statistic(TextBox text) имеет вид:

public void Statistic(TextBox text)

{.Lines = new string[] { "Всего обслужено клиентов: " + Convert.ToString(CountClient) };_office t;();//вычисление среднего времени ожидания по всем кассам.AppendText(Environment.NewLine + "Среднее время ожидания: " + Average_time.printTime());(int i = 0; i < service.Count; i++)//печать статистики по кассам

{= (ticket_office)service.ToArray().GetValue(i);.AppendText(Environment.NewLine + t.getDirectionName());.AppendText(Environment.NewLine + "обслужено клиентов: "

+ Convert.ToString(t.getCountClient()));.AppendText(Environment.NewLine + "билетов продано: "

+ Convert.ToString(t.getCountTicket()));.AppendText(Environment.NewLine + "Сред

Похожие работы

1 2 3 4 > >>