Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

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

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Разработка программы, которая на абстрактном уровне воспроизводит происходящие события в темпе искусственного времени, имитирующего реальное время. Имитация заданного интервала времени работы автовокзала. Обработка и печать результатов моделирования.
Краткое сожержание материала:

Размещено на

Оглавление

  • Введение
  • 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"
Современные условия для работы по обслуживанию клиентов уже достигло того уровня, когда обслуживающая система предприятия обрабатывает данные с очень...

Математическое моделирование биотехнических систем
Учебное пособие по дисциплине «Моделирование биологических процессов и систем».Издательство ТулГУ.Общие положения математического моделирования.Подход...