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

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

· текущая длина первичной очереди (вычисляемое поле).

Отношения дружественности между классами построены следующим образом: друзьями класса Client являются Clerk и Shop, другом класса Clerk - класс Shop.

2.3 События и методы

Каждому из пяти возможных состояний клерка соответствует событие, в результате которого он покидает это состояние и переходит в другое. Каждому событию, в свою очередь, сопоставлен отдельный метод. Перечислим эти события:

1. Прибытие клерка на склад.

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.

К-во Просмотров: 268
Бесплатно скачать Курсовая работа: Имитационное моделирование группового обслуживания с несколькими этапами и двойной очередью: работа оптового магазина