- •Индивидуальное задание
- •«Имитационное моделирование экономических процессов»
- •Санкт-Петербург
- •Введение
- •Постановка задачи имитационного моделирования. Цель моделирования.
- •Постановка задачи.
- •Построенная модель Декомпозиция модели и листинг программных кодов.
- •Класс активного объекта - Main.
- •Параметры
- •События
- •Диаграммы состояний
- •Вложенные объекты
- •Соединители
- •Презентация
- •Обработка результатов.
Класс активного объекта - Main.
В этом классе располагаются основные элементы управления, показатели, параметры, события, функции, среды, элементы статистики и презентации модели.
Действие при запуске модели:
Рассчитывается общее количествто рабочих:
WorkItog.setText(2*workersVultBody+workerAssembly+workerPack);
Задается план производства с помощью нормального закона распределения:
(int)Math.round((drob=Math.round(normal(15,300))));
Параметры
В
этом разделе находятся параметры,
которые генерируются, считаются и
непосредственно участвуют в управлении
моделью.
«TimeAssembly» - является целочисленным (тип int) параметром, который отвечает за среднее время сборки гитары.
«TimePack» - является целочисленным (тип int) параметром, который отвечает за среднее время упаковки гитары.
«TimeProdVultBody» - является целочисленным (тип int) параметром, который отвечает за среднее время производства корпуса гитары и грифа.
«hidbox1-9» - является булевым (тип boolean) параметром, который отвечает за отображение упакованных гитар.
«hiden» - является целочисленным (тип int) параметром, который отвечает за уход продукции со склада.
«intervalTime» - является целочисленным (тип int) параметром, который отвечает за отправление материалов в производственные цеха.
«kol» - является целочисленным (тип int) параметром, который отвечает за производственный план.
«p1» - является булевым (тип boolean) параметром, который отвечает за распределение материалов по производственным цехам.
«people1-5» - является булевым (тип boolean) параметром, который отвечает за отображение рабочих на модели.
«workerAssembly» - является целочисленным (тип int) параметром, который отвечает за количество рабочих в цехе сборки.
«workerPack» - является целочисленным (тип int) параметром, который отвечает за количество рабочих в отделе упаковки.
«workersVultBody» - является целочисленным (тип int) параметром, который отвечает за количество рабочих в производственных цехах.
События
В
этом разделе располагаются события
для планирования и выполнения различных
действий в модели.
«CalcTime» - событие, которое срабатывает, когда завершит работу последний отдел. Данное событие рассчитывает итоговое время выполнения плана. Действие:
timeBox.setText(format(getTime()/3600));
«CountPeople» - событие, необходимое для расчета общего количества рабочих.
WorkItog.setText(2*workersVultBody+workerAssembly+workerPack);
Диаграммы состояний
П
остроенная
диаграмма состояний позволяет отображать
готовую продукцию на складе и появление
грузового автомобиля, который увозит
гитары заказчику.
Вложенные объекты
Активные объекты могут содержать вложенные объекты – экземпляры других классов активных объектов – причем уровень вложенности может быть любым. Создавая вложенные объекты, формируется иерархия модели.
«sourceWood» - (тип Source) создает заявки. Обычно используется в качестве начальной точки потока заявок.
«
woodsvulture»
и «woodsbody»
- (тип Queue)
объект Queue
моделирует
очередь заявок, ожидающих приема
объектами, следующими за данным в
потоковой диаграмме, или же хранилище
заявок общего назначения.
«moveWoodByVult», «moveWoodByBody», «moveBody» , «moveVult» и «moveToPackaging» - (тип Conveyor) объект моделирует конвейер. Перемещает заявки по пути заданной длины с заданной скоростью (одинаковой для всех заявок), сохраняя их порядок и оставляя заданные промежутки между ними.
«Bodier», «Volter», «Packer» и «Assemblier» - (тип ResourcePool) задает набор ресурсов, которые могут захватываться и освобождаться заявками.
«departmentAssembly», «departmentVultBody» и «departmentVult» - (тип Assembler) этот блок позволяет осуществить сборку одной новой заявки из определенного числа заявок, пришедших из различных источников (до 5). Он может быть использован, например, для объединения различных этапов работы. Класс новой заявки, так же как и ее инициализация, определяется пользователем. Число заявок, которые должны поступить на каждый отдельно взятый порт для того, чтобы могла быть создана одна новая заявка, задается с помощью параметров объекта (Количество 1, Количество 2, и т.д.). Поступившие заявки ожидают поступления всех необходимых для сборки заявок. Как только новая заявка может быть собрана, начинается операция сборки. Время сборки задается в параметре Время задержки.
«departmentPack» - (тип Service) захватывает для заявки заданное количество ресурсов, задерживает заявку, а затем освобождает захваченные ею ресурсы (заданных указанным объектом ResourcePool).
«selectOutput» - (тип selectOutput) объект направляет входящие заявки в один из двух выходных портов в зависимости от выполнения заданного (детерминистического или заданного с помощью вероятностей) условия. Условие может зависеть как от заявки, так и от каких-то внешних факторов. Поступившая заявка покидает объект в тот же момент времени.
«moveOnTrack » - (тип Batch) Объект Batch преобразует заданное количество поступающих в объект заявок в одну заявку-партию. Этот объект содержит внутри очередь (объект типа Queue), в которой хранятся входящие заявки. При накоплении количества заявок, равного заданному Размеру партии, создается одна новая заявка (заявка-партия), которая мгновенно покидает объект.
«sink» - (тип Sink) уничтожает поступившие заявки. Обычно используется в качестве конечной точки потока заявок. Для того, чтобы заявки удалялись из модели и уничтожались, нужно соединить выходной порт последнего блока процессной диаграммы с портом объекта Sink или Exit.
