Скачать

Система управления запасами с неудовлетворительным спросом

Товарно-материальный запас - это запас какого-либо ресурса или предметов, используемых в организации.

С точки зрения практики проблема управления запасами является чрезвычайно серьезной. Потери, которые несут предприятия (особенно промышленные) вследствие нерационального управления запасами, очень велики. Плохо, когда запас мал, недостаточен. Это может привести к нарушению ритмичности производства, росту себестоимости продукции, срыву сроков выполнения работ по договорам, потере прибыли. Однако же, крайне нежелательной является и ситуация, когда запас чрезмерно велик. В этом случае происходит "замораживание" оборотных средств организации. В результате те деньги, которые могли бы "работать", приносить доход покоятся на складах в виде запасов сырья, материалов, комплектующих.

Для эффективного решения проблем, связанных с управлением товарно-материальными запасами требуется применение соответствующих методов. Такие методы существуют, однако, к сожалению, на практике (особенно в России) они пока не находят должного распространения.

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

"...Слишком многие предприятия, к сожалению, управляют запасами совершенно неудовлетворительно; это говорит о том, что руководство не осознает всей важности материально-технических запасов производства. Но еще чаще бывает, что осознание проблемы существует. Не хватает понимания того, что надо делать и как это делать".

Итак, управление запасами на рациональной основе - весьма актуальная задача. Определяющее значение при построении системы управления запасами имеет характер потребности в хранимом продукте.

В настоящее время решение задач повышения эффективности управления предприятием невозможно без применения современных вычислительных систем и программных комплексов. Как показывает практика, автоматизация управления предприятием без инноваций в собственно сами методы управления не дает значительного эффекта. Необходима адаптация, проработка методик и моделей управления, в том числе и управления запасами.

Внедрение математических моделей, алгоритмов, предназначенных для решения задачи управления запасами и новых информационных технологий, позволяет автоматизировать процесс получения оптимального решения для многопродуктового ассортимента современного торгового предприятия.

Моделирование – один из способов исследования и устранения проблем, возникающих в окружающем нас мире. Говоря более строго, модель является реальным или абстрактным объектом, который заменяет (представляет) объект исследования в процессе его изучения, находится в отношении сходства с последним (аналогия, физическое подобие и т.п.) и более удобен для экспериментов. Наиболее естественная и важная сфера применения моделирования – анализ сложных систем, в том числе социотехнических (производственных, финансовых и т.д.).

Традиционно различают аналитическое и имитационное моделирование.

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

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

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

Объект исследования: система управления запасами с неудовлетворительным спросом

Предмет исследования: внедрение имитационных моделей, предназначенных для решения задачи управления запасами.

Целью выполнения данной курсовой работы является получение навыков системного исследования реальной динамической сложной системы посредством разработки её имитационной модели. В качестве таковой взята система управления запасами на предприятии.

Задачи:

1. Изучить учебно-методическую и научную литературу по теме исследования.

2. Изучить GPSS World.

3. Поставить и решить конкретную задачу по управления запасами с неудовлетворительным спросом с помощью GPSS World.

Курсовая работа состоит из двух глав и списка литературы.


ГЛАВА 1

Система имитационного моделирования GPSS WORD

1.1. Общие сведения

имитационное моделирование товарный материальный запас

Дискретно-событийное моделирование обязано своим рождением Дж. Гордону, который в начале 1960-х спроектировал и реализовал на мэйнфреймах IBM систему GPSS. Основной объект в этой системе – пассивный транзакт (заявка на обслуживание), который может определенным образом представлять собой работников, детали, сырье, документы, сигналы и т.п. «Перемещаясь» по модели, транзакты становятся в очереди к одноканальным и многоканальным устройствам, захватывают и освобождают эти устройства, расщепляются, уничтожаются и т.д. Таким образом, дискретно-событийную модель можно рассматривать как глобальную схему обслуживания заявок. Аналитические результаты для большого количества частных случаев таких моделей рассматриваются в теории массового обслуживания.

Сегодня существует целый ряд инструментов, поддерживающих такой подход в моделировании: GPSS/PC, GPSS/H, GPSS World, Object GPSS, Arena, SimProcess, Enterprise Dynamics, Auto-Mod и др.

GPSS World – типичный современный представитель GPSS-семейства, реализованный для работы в среде MS Windows. Наличие встроенных инструментов статистической обработки результатов моделирования, встроенного языка программирования расчетов PLUS и др. позволяет создавать средствами GPSS World не только простые обучающие модели, но и более полезные приложения. Однако следует заметить, что GPSS/PC и Simpas предназначены для работы в операционной системе MS-DOS. Поэтому имеются ограничения, которые в ряде случаев не позволяют осуществить разработку и эксплуатацию моделей сложных систем с требуемой степенью детализации.

Отмеченных недостатков практически не имеет новая общецелевая система моделирования GPSS World, разработанная компанией Minuteman (США). Эта система является развитием GPSS/PC, но приобрела комбинированный характер, т.е. может моделировать как дискретные, так и непрерывные процессы. Эти возможности обеспечиваются как новыми объектами языка GPSS, так и включёнными в состав GPSS World языка Plus – языка программирования низкого уровня. Этот язык сделал GPSS World более открытой системой и позволяет взаимодействовать с другими приложениями, а также создавать пользователями свои библиотеки процедур. Язык Plus вместе с другими инструментальными средствами GPSS World позволил автоматизировать весь цикл исследований от разработки моделей до выработки рекомендаций за счёт новых функций планирования экспериментов и обработки статистики. Наконец, GPSS World работает в операционной системе Windows и максимально ориентирована на использование современных технологий, обеспечивающих высокую интерактивность и визуальное представление информации.

Несмотря на изначальную ориентацию GPSS на моделирование систем массового обслуживания, система оказалась удивительно долгоживущей и способной к развитию. Трудоемкость описания моделируемых систем в терминах бизнес-процессов может быть снижена за счет применения таких продуктов, как Object GPSS или ISS 2000. В частности, созданный в НТУУ «КПИ» под руководством В.Н. Томашевского пакет ISS 2000 представляет собой лингвистический процессор, с помощью которого пользователь в диалоговом режиме создает автоматически GPSS-программу и запускает ее на выполнение.


1.2. Моделирование в системе GPSS

1.2.1. Основы построения и принципы функционирования языка имитационного моделирования

Модель разрабатывается на языке GPSS и состоит из операторов, а объект "Модель" создается при помощи встроенного текстового редактора. Объект "Процесс моделирования" - это результат трансляции модели. Далее процесс моделирования запускается с помощью команд GPSS. По завершении моделирования, как правило, автоматически создается объект "Отчет".

Текстовый объект (текстовый файл GPSS World) предназначен для упрощения разработки больших моделей и создания библиотеки исходных текстов. То есть модель может быть разделена на наборы операторов, представляющие собой отдельные текстовые файлы, а затем объектом "Процесс моделирования" собрана из них. Объект "Процесс моделирования" может также создавать новые текстовые файлы с фрагментами модели, результатами моделирования, а также считывать и записывать данные в текстовые файлы.

GPSS World предназначена для имитационного моделирования систем с дискретными и непрерывными процессами. Языком моделирования в ней является язык GPSS, улучшенный встроенным языком программирования низкого уровня PLUS. Язык GPSS построен в предположении, что модель сложной системы можно представить совокупностью элементов и логических правил их взаимодействия в процессе функционирования моделируемой системы. Набор абстрактных элементов, называемых объектами, небольшой. Также набор логических правил ограничен и может быть описан стандартными операциями. Комплекс программ, описывающих функционирование объектов и выполняющих логические операции, является основой для создания программной модели.

Кроме этого комплекса в составе GPSS World имеется программа-планировщик, выполняющая следующие функции:

· обеспечение продвижения по заданным разработчиком маршрутам динамических объектов, называемых транзактами;

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

· регистрация статистической информации о функционировании модели;

· продвижение модельного времени в процессе моделирования системы.

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

Объекты в моделируемой системе предназначены для различных целей. Совершенно не обязательно, чтобы в одной модели участвовали все типы объектов. Необходимо лишь наличие блоков и транзактов, иначе модель работать не будет.

Объекты подразделяются на 7 категорий и 15 типов, которые представлены в Таблице №1 (Приложение 1)

Рассмотрим назначение объектов GPSS.

Динамическими объектами являются транзакты, которые создаются в определенных точках модели, продвигаются планировщиком через блоки, а затем уничтожаются. Транзакты являются аналогами единиц - потоков в реальной системе. Они могут представлять собой различные элементы даже в одной модели. С каждым транзактом связаны параметры, которые используются для конкретных данных. Каждый транзакт может иметь любое число параметров. Параметры нумеруются или им даются имена. Номера параметров и имена используются для ссылок на значения, присвоенные параметрам. Транзактам может присваиваться приоритет. Приоритет определяет предпочтение, которое получает транзакт, когда он и другие транзакты претендуют на один и тот же ресурс.

Объекты аппаратной категории - это абстрактные элементы, на которые может быть декомпозирована реальная система. Воздействуя на эти объекты, транзакты могут изменять их состояние и влиять на движение других транзактов. К объектам этого типа относятся одноканальные устройства, памяти (многоканальные устройства) и логические ключи.

Одноканальные устройства (ОКУ) представляют собой оборудование, которое в любой момент времени может быть занято только одним транзактом. Например, один канал передачи данных, одноканальный ремонтный орган, один станок изготовления деталей, одно транспортное средство.

Многоканальные устройства (МКУ) предназначены для имитации оборудования, осуществляющего параллельную обработку. Они могут быть использованы одновременно несколькими тран-зактами. МКУ можно использовать в качестве аналога, например, многоканального ремонтного органа, нескольких каналов связи.

Для моделирования такого оборудования, как переключатели, имеющие только два состояния, в GPSS используются логические ключи.

Операционные объекты, т. е. блоки, задают логику функционирования модели системы и определяют пути движения транзактов между объектами аппаратной категории. В блоках могут происходить события четырех основных типов:

1. создание или уничтожение транзактов;

2. изменение числового атрибута объекта;

3. задержка транзакта на определенный период времени;

4. изменение маршрута движения транзакта в модели. Версия GPSS, реализованная в системе GPSS World, содержит 53 типа блоков.

В зависимости от назначения блоки подразделяются на несколько групп.

1. Блоки, осуществляющие модификацию атрибутов транзак-тов:

o генерирование и уничтожение транзактов GENERATE, SPLIT, TERMINATE, ASSEMBLE;

o временная задержка ADVANCE;

o синхронизация движения двух MATCH и нескольких GATHER транзактов;

o изменение приоритета транзакта PRIORITY;

o изменение параметров транзактов ASSIGN, INDEX, MARK, PLUS.

2. Блоки, изменяющие последовательность движения транзак-тов (блоки передачи управления): DISPLACE, TRANSFER, LOOP, TEST, GATE.

3. Блоки, связанные с группирующей категорией: ADOPT, ALTER, EXAMINE, JOIN, REMOVE, SCAN.

4. Блоки, описывающие объекты аппаратной категории:

o одноканальные устройства (технические средства) SEIZE, RELEASE, PREEMPT, RETURN, FUNAVAIL, FAVAIL;

o многоканальные устройства (памяти) ENTER, LEAVE, SAVAIL, SUNAVAIL;

o ключи (логические переключатели) LOGIC.

5. Блоки, сохраняющие необходимые значения для дальнейшего использования: SAVEVALUE, MSAVEVALUE.

6. Блоки для получения статистических результатов:

o очереди QUEUE, DEPART;

o таблицы TABULATE.

7. Блоки для организации списка пользователя: LINK, UNLINK.

8. Блоки для организации ввода-вывода:

o открытие/закрытие файла: OPEN/CLOSE;

o считывание/запись в файл: READ/WRITE;

o установка позиции текущей строки: SEEK.

9. Специальные блоки: BUFFER, COUNT, EXECUTE, INTEGRATION, SELECT, TRACE, UNTRACE.

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

Переменные представляют собой сложные выражения, которые включают константы, системные числовые атрибуты (СЧА), библиотечные арифметические функции, арифметические и логические операции.

Выражения могут применяться в переменных и операторах GPSS. При применении в переменных выражения определяются командами GPSS. При применении в операторах GPSS выражения определяются как часть языка PLUS.

Каждому объекту соответствуют атрибуты, описывающие его состояние в данный момент времени. Они доступны для использования в течение всего процесса моделирования и называются системными числовыми атрибутами (СЧА). Например, объект вычислительной категории - генератор случайных чисел имеет СЧА RNn - число, вычисляемое генератором равномерно распределенных случайных чисел номер n; у объекта динамической категории - транзакта СЧА: PR - приоритет обрабатываемого в данный момент транзакта; Pi - значение i-го параметра активного транзакта и др. Всего в GPSS World имеется свыше 50 СЧА.

Булевы переменные позволяют пользователю проверять в одном блоке GPSS одновременно несколько условий, исходя из состояния или значения этих условий и их атрибутов.

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

Кроме библиотечных арифметических функций GPSS World имеет 24 встроенных генератора случайных чисел.

Объекты запоминающей категории обеспечивают обращения к сохраняемым значениям. Ячейки сохраняемых величин и матрицы ячеек сохраняемых величин используются для сохранения некоторой числовой информации. Любой активный транзакт может произвести запись информации в эти объекты. Впоследствии записанную в эти объекты информацию может считать любой транзакт. Матрицы могут иметь до шести измерений.

К статистическим объектам относятся очереди и таблицы. В любой системе движение потока транзактов может быть задержано из-за недоступности устройств. В этом случае задержанные транзакты ставятся в очередь - еще один тип объектов GPSS. Учет этих очередей составляет одну из основных функций планировщика. Планировщик автоматически накапливает определенную статистику относительно устройств и очередей. Кроме этого пользователь может собирать дополнительную статистическую информацию, указав специальные точки в модели.

Для облегчения табулирования статистической информации в GPSS предусмотрен специальный объект - таблица. Таблицы используются для получения выборочных распределений некоторых случайных величин. Таблица состоит из частотных классов (диапазонов значений), куда заносится число попаданий конкретного числового атрибута в каждый, тот или иной, частотный класс. Для каждой таблицы вычисляется также математическое ожидание и среднеквадратическое отклонение.

К группирующей категории относятся три типа объектов: числовая группа, группа транзактов и списки.

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

1. текущих событий;

2. будущих событий;

3. задержки ОКУ или МКУ;

4. отложенных прерываний ОКУ;

5. пользователя.

Одноканальное устройство имеет:

· список отложенных прерываний - список транзактов, ожидающих занятия ОКУ по приоритету;

· список прерываний - список транзактов, обслуживание которых данным ОКУ было прервано;

· список задержки - список транзактов, ожидающих занятия ОКУ в порядке приоритета;

· список повторных попыток - список транзактов, ожидающих изменения состояния ОКУ.

Многоканальное устройство имеет:

· список задержки - список транзактов в порядке приоритета, ожидающих возможность занять освободившиеся каналы МКУ;

· список повторных попыток - список транзактов, ожидающих изменения состояния МКУ.

Список пользователя содержит транзакты, удаленные пользователем из списка текущих событий и помещенные в список пользователя как временно неактивные. Списки пользователя используются для организации очередей с дисциплинами, отличными от дисциплины "первым пришел - первым обслужен".


1.2.2 Построение моделей с устройствами

Для представления собственно обслуживания используются определенные элементы. Такими элементами могут быть либо люди, либо какие-то предметы. Независимо от этого подобные элементы в GPSS называют объектами аппаратной категории, к которой относят одноканальные (ОКУ) и многоканальные устройства (МКУ) и логические ключи.

Рассмотрение методов построения моделей с устройствами начнем с имитации функционирования ОКУ.

При моделировании возможны следующие режимы организации функционирования ОКУ:

· занятие ОКУ и его освобождение;

· прерывание обслуживания ОКУ;

· недоступность ОКУ и восстановление доступности.

1.2.2.1 Организация поступления транзактов в модель и удаления транзактов из нее

Потоки, существующие в реальных системах, в моделях имитируют транзакты.

1.2.2.1.1. Поступление транзактов в модель

GENERATE - это блок, через который транзакты входят в модель. Блок GENERATE имеет следующий формат записи:

GENERATE (A),(B),(C),(D),(E)

Скобки ( ) означают, что данный операнд является необязательным. Не существует ограничений на число различных блоков GENERATE в одной модели.

Интервалы времени между последовательными появлениями транзактов блока GENERATE называют интервалом поступления. Все разработчики должны задавать спецификацию распределения интервалов времени поступления в блоке GENERATE. Информация, необходимая для этого, задается операндами А и B. Все возможные виды распределения интервалов времени поступления в GPSS делят на равномерно распределенные и все другие виды распределения.

Операнд А - средний интервал времени между последовательными поступлениями транзактов в модель.

Операнд B - задает модификатор, который изменяет значения интервала генерации транзактов по сравнению с интервалом, указанным операндом А. Есть два типа модификаторов: модификатор-интервал и модификатор-функция.

С помощью модификатора-интервала задается равномерный закон распределения времени между генерацией транзактов.

Операнды А и B могут быть именем, положительным числом, выражением в скобках или непосредственно СЧА.

При вычислении разности значений (А-В), заданных операндами А и B, получается нижняя граница интервала, а при вычислении суммы (А+В) - верхняя граница. После генерации очередного транзакта выбирается число из полученного интервала, это и будет значение времени, через которое следующий транзакт выйдет из блока GENERATE.

Когда операнды А и B задают в виде констант (B - модификатор-интервал), они должны быть неотрицательными числами, т. е. интервал времени может быть выражен числами, например, 4.1,…,12.7. Предположим, что транзакт входит в модель - блок GENERATE - в момент модельного времени 25.6. После того, как этот транзакт попадет в следующий блок модели, планировщик GPSS разыграет случайное значение из распределения интервалов времени, равного 8.4±4.3.

Пусть разыгранным значением будет число 9.7. Тогда планировщик планирует приход следующего транзакта в блок GENERATE в момент времени 25.6+9.7=35.3.

Операнды А и В не обязательно должны быть заданы. Когда один или оба операнда не указаны, по умолчанию предполагается их нулевое значение. Например, А=16.4, В=0. Поскольку операнд В=0, то интервалы времени распределены равномерно, 16.4±0, т. е. интервал времени поступления равен 16.4. Это пример того, как может быть задано детерминированное значение интервалов времени.

Более сложные интервалы времени поступления транзактов (не по равномерному закону) могут быть заданы с использованием модификатора-функции или встроенных генераторов случайных чисел. Под действием модификатора-функции значение операнда А умножается на значение функции, заданной операндом В.

При любом способе вычисления интервала времени значение операнда В не должно превышать значения операнда А, в противном случае в блоке GENERATE может быть получен отрицательный интервал времени, который вызовет останов по ошибке "Отрицательное время задержки".

Рассмотрим три дополнительных операнда: С - смещение интервалов, D - ограничитель, Е - уровень приоритета.

Смещение интервалов (первоначальная задержка) С - это момент времени, в который в блоке GENERATE должен появиться первый транзакт. После этого первого прихода все остальные приходы транзактов возникают в соответствии с распределением интервалов времени, задаваемых операндами А и B. Операнд С можно использовать как для ускорения, так и для замедления прихода первого транзакта или для указания прихода в нужный момент времени. Начальная задержка может быть меньше, равна или больше среднего времени, заданного операндом А. Когда операнд С не используется, интервалы генерирования определяются операндами А и B (они не оказывают влияния на задержку). Операнд С может быть таким же как и операнды А и B.

Операнд D задает граничное значение общего числа транзактов, которые могут войти в модель через данный блок GENERATE в течение времени моделирования. Когда это число достигнуто, данный блок GENERATE перестает быть активным. Если не определено граничное значение (операнд D не используется), блок GENERATE остается активным в течение всего времени моделирования, т. е. по умолчанию ограничения на количество создаваемых транзактов нет.

Операнд Е устанавливает класс приоритета каждого из транзактов, входящих в модель через данный блок GENERATE. Для задания приоритетов c целью повышения эффективности работы GPSS World рекомендуется использовать последовательность целых чисел 0, 1, 2, 3,… вместо, например, 37, 43, 88, 122,... Чем выше число, тем выше приоритет. Если операнд Е не используется, по умолчанию приоритет генерируемых данным блоком GENERATE транзактов равен нулю.

Операнды D и Е могут задаваться также как и операнды А, B и С, но при этом принимать значения только целых положительных и целых чисел соответственно.

В любом блоке GENERATE должен быть обязательно задан либо операнд А, либо операнд D. Нельзя использовать в качествеоперанда параметры транзактов. Необходимо также помнить, что транзакт не должен входить в блок GENERATE. Если транзакт пытается это делать, возникает ошибка выполнения. Приведем примеры записи блоков GENERATE:

с операндом А

1. GENERATE      38.6

2. GENERATE      X$IntPostTran

3. GENERATE      MX$VrPost(3,6)

4. GENERATE      V$Prom

5. GENERATE      (Exponential(11,0,X$Mat))

6. GENERATE      IntPostTran

с операндами А и B

7. GENERATE      73.25,X$Otk

8. GENERATE      X$Sredne,FN2

9. GENERATE      Sredne,FN4

10. GENERATE      (V$Post+7.1),FN$Mod

с операндами А и C

11. GENERATE      7.3,,4.1

12. GENERATE      7.3,,X$VrSm

13. GENERATE      V$IntP,,MX2(X$Stroka,X$Stolbez)

14. GENERATE      (Normal(3,X$Sre,X$SreOtk)),,Sme

с операндами А, B, E

15. GENERATE       13.3,2.8,,,1

16. GENERATE       (Normal(8,X$Sr,X$SrOtk)),Post,,1

17. GENERATE       V$IntPostTran,(V1-12.3),,12

Приведенные примеры демонстрируют различные способы задания операндов блока GENERATE. Однако при этом нужно помнить следующее.

В начальный момент времени в каждом блоке GENERATE производится подготовка к выходу одного транзакта. На этой стадии модель еще полностью не инициализирована для выполнения, т. е. не все переменные получили значения. Но описанные в блоке GENERATE, должны быть уже определены - инициализированы. Поэтому в модели блоку GENERATE должны предшествовать команды определения EQU, INITIAL, FUNCTION, VARIABLE, FVARIABLE. Это делается для того, чтобы СЧА в блоке GENERATE, который ссылается на них, давали нужные для ввода транзактов в модель результаты.

Например:

SrIntPost       EQU          47.2

StanOtkl        EQU          28.6

INITIAL    X$KolTrans,43

. . .

GENERATE SrIntPost,StOtk,,X$KolTrans

Как видно из примера, блоку GENERATE предшествуют присвоения командой EQU именам числовых значений и командой INITIAL начального значения сохраняемой ячейке с именем Kol-Trans.


1.2.2.1.2. Удаление транзактов из модели и завершение моделирования

Транзакты удаляются из модели, попадая в блок TERMINATE (завершить). Блоки TERMINATE всегда позволяют войти всем транзактам, которые пытаются это сделать. В модели может быть любое число блоков TERMINATE. Блок имеет следующий формат записи:

TERMINATE     (A)

Значением операнда А является число единиц, на которое блок TERMINATE уменьшает содержимое счетчика завершения, определяющего момент окончания моделирования. Операнд А может быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*<параметр>. По умолчанию значение операнда А равно нулю. В этом случае транзакт уничтожается, а значение счетчика завершения не меняется.

Счетчик завершения представляет собой ячейку памяти с именем TG1, которая хранит положительное целое число. Это число записывается в ячейку TG1 командой START в начале процесса моделирования.

В процессе моделирования транзакты попадают в блок TERMINATE и в соответствии со значением операнда А вычитают определенное число из счетчика завершения. При достижении содержимым счетчика нуля моделирование завершается. В модели может быть много блоков TERMINATE, но счетчик завершения только один.

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

Рассмотрим пример, в котором блок TERMINATE и команда START используются для управления временем моделирования. Предположим, что разработчик выбрал в качестве единицы времени 1 мин. Он хочет промоделировать поведение системы в течение 10 часов, затем моделирование должно быть закончено. За единицу модельного времени возьмем 1 мин, тогда время моделирования равно 10*60=600 единицам.

Любая модель на GPSS состоит из одного или нескольких сегментов. Для управления временем моделирования разработчик (см. блок-диаграмму):

1. включает в модель сегмент из блоков GENERATE и TERMINATE;

2. в блоке TERMINATE в качестве операнда А использует 1;

3. во всех прочих блоках TERMINATE модели использует операнд А по умолчанию (однако возможны и другие варианты, т. е. и в других блоках TERMINATE операнд А может быть 1).

В процессе моделирования транзакты, которые двигаются в других сегментах модели, время от времени выводятся из модели в других блоках TERMINATE, но они не оказывают воздействия на счетчик завершения. В момент модельного времени 600 транзакт в приведенном выше сегменте попадает в блок GENERATE и сразу же переходит в следующий блок TERMINATE.

Поскольку операнд А блока содержит 1, то из счетчика завершения вычитается 1. Предположим, что в команде START было указано число 10, т. е. десять прогонов модели, и в счетчик завершений записано число 10: TG1 = 10. После первого вычитания содержимое ячейки TG1 = 9, т. е. не равно нулю. Поэтому моделирование продолжается. После десяти прогонов, т. е. вычитания десяти единиц, TG1 = 0. Планировщик прекращает моделирование.

Команда START используется для запуска процесса моделирования. Она имеет следующий формат записи:

START             A,(B),C,(D)

http://www.intuit.ru/department/calculate/compmodel/6/06_30.gif

Операнд А задает значение счетчика завершения, определяющего момент окончания прогона модели. Может быть только целым положительным числом. Операнд B - операнд вывода статистики. Он может быть NP ("нет вывода данных") либо опущен. При задании NP стандартный отчет не выводится. По умолчанию выводится стандартный отчет. Операнд С не используется и сохранен для совместимости с описаниями ранних версий GPSS. Операнд D определяет необходимость вывода содержимого списков событий. Если операнд D указать любым положительным целым числом, например, 1, то списки текущих и будущих событий включаются в стандартный отчет и выводятся. Если операнд D опущен, то по умолчанию списки в стандартном отчете не выводятся.

Команду START можно сразу указывать в конце программы модели при ее подготовке и в таком виде записывать на магнитный носитель. Тогда после трансляции модели, т. е. создания объекта "процесс моделирования", сразу начинается моделирование. Этот же оператор можно вводить в программу модели в интерактивном режиме.

Однако может возникнуть необходимость завершить моделирование не по истечении какого-то времени, а после обработки определенного количества транзактов, имитирующих, например, изготовленные детали, переданные по каналу связи сообщения и т. д. В этом случае сегмент задания времени моделирования не нужен. Для организации такого способа завершения моделирования необходимо сделать следующее. В блоках TERMINATE, которые выводят из модели транзакты, имеющие смысл тех же изготовленных деталей или переданных сообщений, указать число, на которое уменьшается счетчик завершения моделирования. В команде START также указать число, деление которого на указанное в блоке TERMINATE число даст требуемое количество изготовленных деталей или переданных сообщений. Например, требуется завершить моделирование после изготовления 100 деталей. В модели это может быть так:

. . .

TERMINATE     1

. . .

TERMINATE     1

. . .

TERMINATE

START             100

Блоков TERMINATE, которые выводят из модели транзакты, соответствующие изготовленным деталям, может быть несколько. Все эти блоки должны иметь 1 в качестве операнда А. У остальных блоков TERMINATE, если они есть в модели, операнд А должен быть опущен.


ГЛАВА 2

МОДЕЛИРОВАНИЕ СИСТЕМЫ УПРАВЛЕНИЯ ЗАПАСАМИ С НЕУДОВЛЕТВОРИТЕЛЬНЫМ СПРОСОМ

2.1 Постановка задачи

Необходимо промоделировать работу склада материалов на предприятии. Вместимость склада составляет 5000 единиц материала. Возможна поставка на склад с периодичностью 5 дней в размере 1500 единиц материала. Начальный запас материалов на складе составляет 1000 единиц. Ежедневный спрос материала варьирует в пределах от 35 до 55 единиц с равной вероятностью. Если текущий запас равен или больше 1200, то никакой поставки материалов на склад в течение недели не производят. Требуется смоделировать работу склада материалов в течение 100 дней.

2.2 Описание модели

Для моделирования работы склада необходимо сформировать входные потоки заказов материала на склад, определить спрос материалов со склада и временной интервал моделирования работы склада. Но перед этим необходимо выбрать единицу измерения времени. Для нашего моделирования работы склада возьмём в качестве единицы измерения времени день.

2.2.1 Создание имитационной модели:

Построим заголовок модели:

;GPSSW Upr_zapasom.GRS

*****************************

*     Управление моделями   *

*****************************

Создадим четыре сектора:

* Определение входных данных.

RMULT         413

Zapas             STORAGE         2500     ; Вместимость склада.

Zapas             TABLE               S$Zapas,100,100,20 ; Гистограмма запаса.

Material         VARIABLE        Nach_ur-S$Zapas        ; Размер заказа.

Spros_m        VARIABLE        RN1@20+35      ; Размер ежедневного спроса.

Nach_ur         EQU                   1500     ; Начальный уровень запаса.

Postavka        EQU                   1300     ; Размер поставки.

****************************************

*Моделировнаие процесса поставки материала на склад.

GENERATE  5,,,,1                              ; Поставка через 5 дней.

TEST L          S$Zapas,Postavka,Out  ; Нужна ли поставка.

ASSIGN         2,V$Material                 ; Размер заказа в P2.

ADVANCE    5                                    ; Интервал поставки.

ENTER          Zapas,P2                        ; Увеличить запас на Р2.

Out TERMINATE                                          ; Завершение заказа.

*********************************************

* Моделировнаие текущего запаса с учётом спроса.

GENERATE  1                                    ; Генерирование дня.

ASSIGN         1,V$Spros_m                ; Размер спроса в Р1.

TABULATE  Zapas                             ; Запись тек. запаса.

TEST GE       S$Zapas,P1,Zapasout    ; Можно ли заказать.

LEAVE          Zapas,P1                        ; Уменьшить запас на Р1.

TERMINATE                           1                   ; Завершение дня.

Zapasout        TERMINATE     1                   ; Завершение дня.

*********************************************

* Установление начального размера запаса.

GENERATE  ,,,1,10                            ; Начальный запас.

ENTER          Zapas,Nach_ur              ; Установка нач. запаса.

TERMINATE                                                ; Завершение установки.

*********************************************

Оператор RMULT определяет начальное число для генератора случайных чисел.

Оператор STORAGE (Накопитель) с меткой Zapas определяет вместимость склада 2500 единиц.

Оператор TABLE с меткой Zapas предназначен для формирования таблицы текущего (ежедневного) уровня запаса на складе. Текущий уровень запаса определяется с помощью стандартного числового атрибута S$Zapas.

Оператор VARIABLE c меткой Material определяет количество материала как разность начального и текущего запаса.

О