2. Завершение поиска заказанного товара.
3. Прибытие клерка с товаром к ожидающим ею клиентам.
4. Завершение расчетов с очередным клиентом.
5. Принятие заказа у клиентов из первичной очереди.
Подробнее остановимся на реализации последнего метода. Если первичная очередь не пуста и ее длина достигла значения МИГ, объект Shop пытается препоручить как можно больше клиентов одному из свободных клерков. После того как клерк выбран, ему посылается сообщение, соответствующее методу 5, с двумя параметрами: указателем на первичную очередь, чтобы клерк мог скопировать часть ее клиентов во вторичную, и количеством клиентов, заказы у которых магазин предписывает принять клерку. Возвращает же он объекту Shop указатель на клиента первичной очереди, который теперь становится в этой очереди первым, то есть на новую голову связного списка. Первичную очередь Shop продвигает сам. Все эти действия выполняет метод-диспетчер run().
Методы класса Shop:
· прибытие нового клиента из внешнего потока и постановка ею в первичную очередь;
· выбор клерка, который должен принять заказ. Метод выбирает случайным образом одного клерка из числа свободных в данный момент.
3. Реализация модели
Имитационное моделирование это процесс конструирования модели реальной системы и постановки экспериментов на этой модели с целью либо понять поведение системы, либо оценить (в рамках ограничений) различные стратегии, обеспечивающие функционирование системы. Имитационное моделирование является экспериментальной и прикладной методологией, которая:
· описывает поведение системы;
· строит теории и гипотезы, которые могут объяснить наблюдаемое поведение;
· использует эти теории для предсказания будущего поведения системы, то есть тех воздействий, которые могут быть вызваны изменениями в системе или изменениями способов ее функционирования.[1]
При выполнении данной программы генерируются число занятых клерков, среднее время периода занятости клерка, средняя длина первичной очереди, среднее число клиентов в магазине, среднее время пребывания клиента в магазине, средний объем одного заказа. Другими словами, в имитационном эксперименте входные данные «пропускаются» через логическую структуру, чей ответ «подражает» ответы реальной системы на входные данные. Требуется составить алгоритм, и реализовать его. Для моделирования системы группового обслуживания с несколькими этапами и двойной очередью (работа оптового магазина), был выбран высокоуровневый язык программирования C++ и написана программа на этом языке, позволяющая в полной мере отразить функционирование системы. Для проведения анализа зависимостей некоторых показателей друг от друга была использована программа gnuplot.
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