Смекни!
smekni.com

Имитационное моделирование группового обслуживания с несколькими этапами и двойной очередью: работа оптового магазина (стр. 3 из 3)

2. Завершение поиска заказанного товара.

3. Прибытие клерка с товаром к ожидающим ею клиентам.

4. Завершение расчетов с очередным клиентом.

5. Принятие заказа у клиентов из первичной очереди.

Подробнее остановимся на реализации последнего метода. Если первичная очередь не пуста и ее длина достигла значения МИГ, объект Shop пытается препоручить как можно больше клиентов одному из свободных клерков. После того как клерк выбран, ему посылается сообщение, соответствующее методу 5, с двумя параметрами: указателем на первичную очередь, чтобы клерк мог скопировать часть ее клиентов во вторичную, и количеством клиентов, заказы у которых магазин предписывает принять клерку. Возвращает же он объекту Shop указатель на клиента первичной очереди, который теперь становится в этой очереди первым, то есть на новую голову связного списка. Первичную очередь Shop продвигает сам. Все эти действия выполняет метод-диспетчер run().

Методы класса Shop:

· прибытие нового клиента из внешнего потока и постановка ею в первичную очередь;

· выбор клерка, который должен принять заказ. Метод выбирает случайным образом одного клерка из числа свободных в данный момент.


3. Реализация модели

3.1 Программная реализация

Имитационное моделирование это процесс конструирования модели реальной системы и постановки экспериментов на этой модели с целью либо понять поведение системы, либо оценить (в рамках ограничений) различные стратегии, обеспечивающие функционирование системы. Имитационное моделирование является экспериментальной и прикладной методологией, которая:

· описывает поведение системы;

· строит теории и гипотезы, которые могут объяснить наблюдаемое поведение;

· использует эти теории для предсказания будущего поведения системы, то есть тех воздействий, которые могут быть вызваны изменениями в системе или изменениями способов ее функционирования.[1]

При выполнении данной программы генерируются число занятых клерков, среднее время периода занятости клерка, средняя длина первичной очереди, среднее число клиентов в магазине, среднее время пребывания клиента в магазине, средний объем одного заказа. Другими словами, в имитационном эксперименте входные данные «пропускаются» через логическую структуру, чей ответ «подражает» ответы реальной системы на входные данные. Требуется составить алгоритм, и реализовать его. Для моделирования системы группового обслуживания с несколькими этапами и двойной очередью (работа оптового магазина), был выбран высокоуровневый язык программирования C++ и написана программа на этом языке, позволяющая в полной мере отразить функционирование системы. Для проведения анализа зависимостей некоторых показателей друг от друга была использована программа gnuplot.


3.2 Построение графиков

3.2.1 Программа gnuplot

Gnuplot портативная программа для визуализации данных и создания графиков функций для операционных систем UNIX, IBMOS/2, MSWindows, DOS, Macintosh, VMS, Atari и многих других. Эта программа защищена авторским правом, но свободна для распространения.

Gnuplot поддерживает множество видов графиков как двух-, так и трехмерных. Он может рисовать, используя линии, точки, боксы, контуры, векторные поля, поверхности и различный связанный текст.[2]

Gnuplot имеет собственную систему команд, может работать интерактивно (в режиме командной строки) и выполнять скрипты, читаемые из файлов. Также используется в качестве системы вывода изображений в различных математических пакетах: GNU Octave, Maxima и других. [3]

Gnuplot поддерживает много различных форматов для выдачи: интерактивные графические терминалы (с мышью и функциями горячих клавиш), прямой вывод на плоттеры и современные принтеры, запись в различные форматы файлов (eps, fig, jpeg, LaTeX, metafont, pbm, pdf, png, postscript, svg и так далее). Gnuplot легко расширяем для включения новых функций. [2]

3.2.2 Использование программы для построения графиков

Для того, чтобы нарисовать график, достаточно указать набор команд в тэгах <plot>...</plot>. Основные команды состоят из задания области определения функции (для одномерных графиков это переменная «x», для двухмерных «x», «y»), и команды отрисовки одномерной или двухмерной функции, заданной в символьном виде. Синтаксис функции интуитивно понятен, «+», «-», «*», «/» обозначают стандартные арифметические операторы (умножение должно быть явным, никаких математических сокращений типа «3x» и т. п.), «**» означает возведение в степень, скобки "(", «)» используются для задания приоритета.

Кроме операторов, есть набор стандартных математических функций:

Тригонометрические функции sin, cos, tan, константа pi, и им обратные asin, acos, atan.

Гиперболические функции sinh, cosh, tanh.

Экспонента exp и натуральный и десятичный логарифмы: log и log10 соответственно.

Трехмерные графики рисуются аналогично, нужно задать диапазоны для области определения и использовать команду «splot». [4]


4.Анализ результатов

Цифровые данные, полученные при 1000-минутном моделировании. Усредненные результаты:

· Количество поступлений – 477;

· Обслужено клиентов – 460;

· Средне число занятых клерков – 2,65

· Средняя длительность периода занятости клерка – 11,84 мин;

· Средняя длина первичной очереди – 1,31;

· Среднее число клиентов в магазине – 8,55;

· Среднее время пребывания клиента в магазине – 18,04 мин;

· Средний объем одного заказа – 2,026;

· Среднее время пребывания в первичной очереди – 18,04-11,84=6,2 мин.

На рис. 1-3 приведены графики зависимости от числа клерков, соответственно, загрузки системы, среднего числа клерков и среднего времени пребывания клиента в системе. Из графиков видно, что оптимальное число клерков – четыре. Дальнейшее увеличение числа клерков к значимому улучшению показателей функционирования не приводит. Добавление же четвертого клерка все еще позволяет существенно улучшить эти показатели. Приведем их:

· Средне число занятых клерков – 3,32

· Средняя длительность периода занятости клерка – 11,78 мин;

· Средняя длина первичной очереди – 1,192;

· Среднее число клиентов в магазине – 8,451;

· Среднее время пребывания клиента в магазине – 16,05 мин;

· Средний объем одного заказа – 1,983;

· Среднее время пребывания в первичной очереди –

16,05-11,78=4,27 мин.

Рис. 1 Зависимость коэффициентов загрузки от числа клерков

Рис. 2 Зависимость среднего числа клиентов в магазине от числа клерков

Рис. 3 Зависимость среднего времени пребывания клиента в магазине от числа клерков


Заключение

В результате выполнения курсовой работы были достигнуты следующие результаты:

· изучены методы построения имитационных моделей экономических объектов;

· получены навыки проведения численных экспериментов на имитационных моделях экономических систем;

· приобретен опыт проведения анализа по результатам численных экспериментов на имитационной модели;

· проведенный анализ позволил обнаружить некоторые закономерности, которые помогут в проведении кадровой политике предприятия.


Список использованной литературы

1. Труб И. И. «Объектно-ориентированное моделирование на С++»: Учебный курс.-СПб.:Питер, 2006.-411с.:ил.

2. Gnuplot. Описание программы. Режим доступа: http://fsweb.info/calculations/gnuplot.html

3. Построение графиков в gnuplot. Режим доступа:

http://ru.wikipedia.org/wiki/Gnuplot

4. Gnuplot. Режим доступа: http://lib.custis.ru/Gnuplot