- •Содержание
- •1. Содержательная постановка задачи синтеза оптимальных расписаний параллельно-последовательной обслуживающей системы.
- •2. Постановка задачи оптимизации расписаний параллельной системы с задержками поступления заявок
- •3. Редукция задачи оптимизации расписаний параллельной системы в задачу частично-целочисленного линейного программирования
- •4. Бикритериальная упрощенная формулировка задачи синтеза расписаний параллельной системы и алгоритм решения
- •5. Декомпозиционные приближенные алгоритмы оптимизации расписаний параллельной системы с задержками поступления заявок. Жадный алгоритм и бикритериальное приближение.
- •6. Динамическое программирование с отсевом вариантов в оптимизации расписаний параллельной системы с задержками поступления заявок
- •7. Последовательные многостадийные обслуживающие системы. Моделирование на смешанных сетях.
- •8. Модификации метода ветвей и границ оптимизации расписаний последовательных многостадийных обслуживающих систем (jsp)
- •9. Алгоритм неполной декомпозиции задач оптимизации расписаний последовательных обслуживающих систем.
- •10. Многостадийные параллельно-последовательные обслуживающие системы. Подходы к формализации задач управления.
- •11. Декомпозиционный алгоритм оптимизации расписаний многостадийных параллельно-последовательных обслуживающих систем
- •12. Приложение моделей и алгоритмов оптимизации расписаний многостадийных параллельно-последовательных систем.
- •13. Содержательная постановка задачи управления материальными потоками предприятия
- •14. Формальная постановка задачи оптимизации управления входными и выходными материальными потоками
- •15. Задача оптимизации поставок сырья и комплектующих на предприятии. Содержательная постановка.
- •16. Формальная постановка задачи оптимизации поставок
- •17. Определение оптимальных цен продаж в задаче оптимизации управления входными и выходными материальными потоками
- •18. Декомпозиционный алгоритм решения задачи оптимизации поставок
- •19. Программные средства (пс) оптимизации управления входными и выходными материальными потоками предприятия (целиком из монографии)
- •20. Пс оптимизации расписаний последовательных, параллельных и параллельно-последовательных систем
- •21. Имитационное моделирование производственных систем и процессов. Языки, системы им.
- •22. Основные блоки сим Арена и их атрибуты.
- •23. Основные операторы языка gpss.
- •24. Моделирование параллельных систем в сим Арена
- •25. Моделирование последовательных систем в сим Арена.
- •26. Моделирование параллельных систем в gpss world.
- •27 Моделирование последовательных систем в gpss world.
- •28. Среда ibm ilog cplex studio. Назначение, возможности, задачи моделирования, разрешимые и неразрешимые в этой среде.
- •29. Проекты ibm ilog cplex studio, состав, назначение компонент. Основные элементы языка opl.
- •Задача №1.
- •Задача №2. Job Shop
24. Моделирование параллельных систем в сим Арена
Рассмотрим параллельную систему, состоящую из двух неидентичных приборов, в которую на обслуживание с задержками поступают заявки.Заявки, входящие в агрегат, обслуживаются параллельно и имеют разное время обслуживания. Это означает, что прибородновременно может обслуживать более одной заявки,
Вариант последовательного обслуживания подобных заявок здесь не рассматривается, поскольку система в таком случае становится параллельно-последовательной.
Для того, чтобы смоделировать подобную параллельную систему в СИМ Арена, необходимо использование нескольких стандартных блоков, таких как:
Create |
Данный модуль (Create в переводе – “создать, создание”) является стартовым пунктом для объектов в имитационной модели. Объекты создаются с использованием времени между их прибытием, которое может задаваться случайно (Random), на основе специального списка (Schedule), константой (Constant) или одним из статистических распределений (Expression). После создания объекты покидают этот модуль, начиная движение по системе. Тип объектов также определяется в модуле Create. Типичное использование модуля:
|
||
Name |
Create 1 |
Имя (уникальный идентификатор) модуля. Автоматически имя модуля генерируется по форме “Название_модуля №_модуля”. Arena позволяет задавать любые (кроме одинаковых) имена (но только на латинице!). |
|
Entity Type |
Entity 1 |
Тип (или название типа) создаваемых объектов. Автоматически имя типа генерируется по форме “Entity №_типа ”. Arena позволяет задавать любые имена типов объектов. |
|
Type |
Random (Expo) |
Три данных параметра образуют поле “TimeBetweenArrivals” (“Время между прибытиями”).
Type – тип потока генерируемых объектов. Тип потока может быть выбран только из 4-х заданных:
Value – численное значение (неотрицательное), определяемое пользователем. (Используется только при выборе типов Random и Constant.)
ScheduleName – определяет имя используемого модуля Schedule. (Используется только при выборе типа Schedule.)
Expression – распределение (тип(параметры)) по которому будет генерироваться поток объектов. (Используется только при выборе типа Expression.) Статистические распределения, с которыми позволяет работать Arena, представлены в Приложении 3.
Units – используемые (для определения момента времени первого создания объектов (FirstCreation) и продолжительности пауз между их прибытиями в систему) единицы времени. (Не используется при выборе типа Schedule.) Arena позволяет задавать время в секундах (Seconds), минутах (Minutes), часах (Hours) и днях (Days). |
|
Value
|
1 |
||
Units |
Hours |
||
EntitiesperArrival |
1 |
Количество объектов, которые будут поступать в систему во время каждого момента прибытия. |
|
MaxArrivals |
Infinite |
Максимальное количество прибытий объектов, которое будет генерировать данный модуль. При достижении этого количества модуль прекратит генерацию. Параметр может принимать либо неотрицательные целочисленные значения, либо значение Infinite (бесконечность). |
|
FirstCreation |
0.0 |
Момент времени первого прибытия объектов в систему. (Не используется при выборе типа Schedule.) |
Process |
Данный модуль (в дословном переводе “процесс”) является модулем основной обработки объекта. В модуле определяются типы размещения и вывода ресурсов для обработки, тип отображения времени и стоимости обработки на объектах и, наконец, есть возможность определять иерархию процесса путём создания вложенной модели (субмодели). Типичное использование модуля:
|
||
Name |
Process 1 |
Имя (уникальный идентификатор) модуля. Автоматически имя генерируется по форме “Название_модуля №_модуля”. Arena позволяет задавать любые имена модулей. |
|
Type |
Standard |
Тип определения логики в пределах модуля. Существует два таких типа:
При выборе типа Submodel активным остаётся лишь поле ReportStatistics. Для определения логики вложенной модели следует кликнуть правой кнопкой мыши на изображении соответствующего блока Process и выбрать команду EditSubmodel, а для выхода из вложенного модуля на уровень выше – кликнуть правой кнопкой мыши на рабочей области субмодели и выбрать CloseSubmodel. |
|
Action |
Delay |
Action – параметр, от которого зависит логика модуля (вместе с параметрами Priority и Resources он составляет поле Logic).
Action – это тип обработки, которая происходит в пределах модуля. Arena предлагает 4 таких типа:
Priority – параметр, указывающий значение приоритета, которое используется, если в модели одновременно находятся объекты, ожидающие одинаковый ресурс. Может принимать значения High(1), Medium(2) и Low(3) – т.е. высокий(1), средний(2) и низкий(3) приоритет. (Не используется при выборе типов Delay и DelayRelease.)
Resources – лист ресурсов и ресурсных наборов, используемых для обработки объектов. (Не используется при выборе типа Delay.) Значения устанавливаются в одноимённом окне после нажатия кнопки Add (соответственно, редактируются и удаляются кнопками Edit и Delete). Окно Resources содержит определяющее поле Type (тип), которое имеет два значения – Resource (ресурс) и Set (набор ресурсов). При выборе Resource необходимо заполнить следующие поля:
При выборе Set заполняются поля:
SaveAttribute – указывается имя атрибута, который будет хранить индексный номер выбранного для использования ресурса. Этот атрибут далее может использоваться в качестве индекса (в поле SetIndex) при использовании в каком-либо (но работающем после) модуле правила SpecificMember.
Надо сказать, что зачастую после указания ресурсов и их наборов, их необходимо редактировать в соответствующих модулях Resources и Set. |
|
DelayType |
Triangular |
Тип распределения (или метод определения) значений задержки объектов в процессе обработки. В выпадающем списке данного поля представлено пять значений:
|
|
Units |
Hours |
Единицы времени значений задержки. Arena (как уже говорилось выше) позволяет задавать время в секундах (Seconds), минутах (Minutes), часах (Hours) и днях (Days). |
|
Allocation |
ValueAdded |
Определяет, как время и стоимость процесса обработки будут отображаться в объектах. Процесс может рассматриваться одним из пяти представленных ниже типов:
Различие между способами ValueAdded и Non-ValueAdded состоит в том, что значение ValueAdded отображается на объекте, а Non-ValueAdded – нет (т.е., например, если в модели производства продукции понадобилось выяснить время и стоимость процессов механической обработки объектов, то во всех соответствующих модулях следует установить способ ValueAdded, а во всех остальных – Non-ValueAdded).
|
|
Minimum |
.5 |
Назначение данных полей зависит от указанного в поле DelayType распределения, поэтому их описание находится выше – в описании DelayType. |
|
Value |
1 |
||
Maximum |
1.5 |
||
ReportStatistics |
yes |
Определение необходимости автоматического сбора статистических данных. (Два значения – yes(подтверждение сбора) и no (отрицание сбора).) |
Dispose |
Данный модуль (в дословном переводе “расположить”) является конечным пунктом для объектов в имитационной модели. Перед тем, как объект покинет модель, собранные о нём статистические данные могут быть записаны в итоговый отчёт – для этого необходимо подтвердить запись в поле RecordEntityStatistics. Типичное использование модуля:
|
|
Name |
Dispose 1 |
Имя (уникальный идентификатор) модуля. Автоматически имя генерируется по форме “Название_модуля №_модуля”. Arena позволяет задавать любые имена модулей. |
RecordEntityStatistics |
yes |
Определение необходимости записи статистических данных (два значения – yes (подтверждение сбора) и no (отрицание сбора)), которые включают в себя следующие показатели:
В отчёте каждый показатель представлен четырьмя числами:
|
Decide |
Данный модуль (в дословном переводе “решить, решение”) предназначен для имитации процесса принятия решений. Он включает возможность принятия решения на основе одного или нескольких условий (например, если тип объекта “Кредитная карта”) или одной или нескольких вероятностях (например, вероятность события 75% (соответственно, вероятность невыполнения события 25%)). Условия могут основываться на значении определённого атрибута или переменной, на типе объекта или заданном распределении. При выборе типов модуля 2-waybyChance и 2-waybyCondition существует два выхода из данного модуля: один для “истинных” объектов (удовлетворяющих условию), а другой – для “ложных” (не удовлетворяющих условию). При выборе типов модуля N-waybyChance и N-waybyCondition количество “истинных” выходов соответствует количеству указанных условий, а “ложный” выход остаётся в единственном количестве. Следует уточнить, что при выборе типа N-waybyChance сумма указанных вероятностей для “истинных” выходов не должна превышать 100%. Кроме того, для типов N-waybyChance и N-waybyCondition (в отличие от 2-waybyChance и 2-waybyCondition) не указывается количество выходящих “истинных” и “ложных” объектов. Типичное использование модуля:
|
|
Name |
Decide 1 |
Имя модуля. |
Type |
2-way by Condition |
Тип принятия решения, который выбирается из выпадающего списка с четырьмя значениями:
Attribute – условие, касающееся значения определённого атрибута. При выборе данного типа необходимо заполнить те же поля, что и в случае с переменной (т.е. с типом Variable). EntityType – условие, касающееся типа объекта. В данном случае объект выходит по “истинному” пути только тогда, когда его тип соответствует указанному в поле Named. Expression – условие, касающееся заданного выражения. Выражение, фактически представляющее собой само условие, записывается в поле Value, причём, в этом выражении обязательно должен содержаться математический оператор (аналогичный, одному из операторов поля Is типов Variable и Attribute), например Color<>Red (т.е. цвет не красный). N-waybyChance – решение с более чем одним “истинным” и одним “ложным” выходами, основывающееся на заданных в поле Percentages вероятностях каждого “истинного” выхода (сумма указанных вероятностей для “истинных” выходов не должна превышать 100%). N-way by Condition – решение с более чем одним “истинным” и одним “ложным” выходами, основывающееся на заданных в поле Conditions условиях для каждого “истинного” выхода. Условия задаются так же, как и при выборе типа 2-way by Condition. |
If |
Expression |
Данное поле активируется только при выборе типов 2-way by Condition и N-way by Condition и служит для задания условий (см. описание поля Type данного модуля). |
Value |
RemainingProcTime .lt. 20 |
Выражение, которым задаётся условие принятия решения. Запись “RemainingProcTime .lt. 20” означает, что значение параметра RemainingProcTime должно быть меньше 20 (минут). В данном случае вместо математического символа используется буквенное обозначение оператора (“.lt.” означает “lessthan”, т.е. “меньше, чем” (см. Приложение 1)). |
Resource (Basic Process) |
Данный модуль (в дословном переводе “ресурс”) используется для определения ресурсов в имитационной модели, включая определение стоимостных данных и состояния готовности (пригодности). Количество (запасы) ресурсов может быть фиксированным или изменяющимся по ходу имитации на основе указанного списка. Отказы (выходы из строя) ресурсов также могут быть заданы. Типичные объекты, описываемые в данном модуле:
|
||
Name |
Resource 1 |
Название ресурса. |
|
Type |
Fixed Capacity |
Метод (тип) определения количества (запасов) ресурса. Arena предоставляет два таких метода:
|
|
Capacity |
1 |
Количество ресурса, доступного для использования в процессе. Поле используется при выборе типа FixedCapacity.
При выборе типа BasedonSchedule вместо данного поля активизируются поля ScheduleName и ScheduleRule для указания в них названия списка и правила выбора его значений. Поле представлено ScheduleRule значениями Wait (“ожидание”), Ignore (“игнорирование”) и Preempt (“резервирование”), которые характеризуют когда произойдёт замена количества ресурса, если ресурс занят. |
|
Busy / Hour |
0.0 |
Часовая ставка использования ресурса в процессе. Ресурс считается использующимся только во время работы с объектом (как только ресурс выпускается, он становится простаивающим). |
|
Idle / Hour |
0.0 |
Часовая ставка простоя ресурса. |
|
Per Use |
0.0 |
Стоимость ресурса на основании использования, т.е. исчисляемая каждый раз, когда ресурс начинает использоваться для нового объекта. |
|
StateSetName |
|
Название набора состояний, в которых может пребывать ресурс (например, “занятый”, “свободный”, “обедающий” и т.д.). При заполнении данного поля появляется поле InitialState, в котором указывается начальное состояние ресурса. |
|
Failures |
0 rows |
Лист всех возможных выходов из строя ресурса. В листе Failures задаются названия “поломки” FailureName и правило FailureRule, аналогичное правилу ScheduleRule. |
|
ReportStatistics |
yes |
Определение необходимости автоматического сбора статистических данных. |
Для разветвлений процессов, т.е. описания ситуаций в которых одна операция предшествует многим, в моделях Arena используются блоки типа Separate. Поскольку данные блоки имеют только два выхода, для описания разветвлений с числом операций, непосредственно следующих за данной, более двух, приходится использовать связки из нескольких блоков Separate.
Блоки типа Batch служат для слияния (объединения) процессов. В нашем случае они задают отношение непосредственного предшествования нескольких операций данной. В качестве одного из атрибутов блока BatchиспользованBatchsize, в котором указывается число входов. Этот атрибут автоматически не устанавливается и должен быть задан вручную. Другой важный атрибут блока - SaveCriterion. В нашем случае необходимо указать last, Это позволяет не начинать выполнение последующих операций до завершения последней, входящей в блок операции. Это условие соответствует алгоритму критического пути. Любой блок Batch имеет очередь, что позволяет реализовывать и более сложные алгоритмы обработки.
Batch |
Данный модуль (в дословном переводе “партия”) представляет собой группировочный механизм в рамках имитационной модели. Партии объектов могут группироваться постоянно или временно. Временные партии в дальнейшем должны быть разбиты с использованием модуля Separate. Партии могут комплектоваться по заданному числу из всех поступающих объектов или на основе определённого атрибута. Объекты, поступающие в модуль, размещаются в очереди до тех пор, пока не накопится требуемое для партии число. Типичное использование модуля:
|
||
Name |
Batch 1 |
Имя модуля. |
|
Type |
Permanent |
Тип группировки объектов в партии. В выпадающем списке представлено два таких типа:
|
|
BatchSize |
10 |
Размер партии. Количество объектов в партии задаётся только численно. |
|
SaveCriterion |
Last |
Данное поле представлено выпадающим списком со значениями First, Last, Sum и Product.
Как только количество объектов в очереди достигает указанного размера партии, формируется “представительский” объект, который несёт характеристики объектов партии. Значения атрибутов представительского объекта зависят от указанного в поле SaveCriterion (“сохранение критерия (значения атрибута)”) значения и от типа группировки.
При типе Temporary представительский объект временно заменяет членов партии. Значения атрибутов Entity.VATime, Entity.NVATime, Entity.WaitTime, Entity.TranTime, Entity.OtherTime, Entity.VACost, Entity.NVACost, Entity.WaitCost, Entity.TranCost, Entity.OtherCost и Entity.HoldCostRate этого объекта устанавливаются равными нулю. Значение атрибута Entity.CreateTime устанавливается равным значению времени в тот момент, когда была создана группа (когда последний член группы вошёл в очередь). Значения атрибутов Entity.SerialNumber, Entity.Type, Entity.Picture, Entity.Station, Entity.Sequence и Entity.JobStep устанавливаются равными значениям этих же атрибутов у первого (последнего) члена партии при указании в поле SaveCriterion значений First, Sum или Product (Last). Значения атрибутов, введённых пользователем, зависят от значений в поле SaveCriterion. First (Last) означает, что значения таких атрибутов будут соответствовать значениям этих же атрибутов у первого (последнего) члена партии. Product означает, что значения таких атрибутов будут рассчитываться как произведение значений этих же атрибутов по всем членам партии. Sum означает то же, что и Product, только вместо произведения используется сумма.
При типе Permanent представительский объект полностью заменяет членов партии. Значения атрибутов Entity.VATime, Entity.NVATime, Entity.WaitTime, Entity.TranTime, Entity.OtherTime, Entity.VACost, Entity.NVACost, Entity.WaitCost, Entity.TranCost, Entity.OtherCost и Entity.HoldCostRate этого объекта устанавливаются равными сумме значений соответствующих атрибутов всех членов партии. Значение атрибута Entity.CreateTime устанавливается равным минимальному из значений этого атрибута среди членов группы. Значения атрибутов Entity.SerialNumber, Entity.Type, Entity.Picture, Entity.Station, Entity.Sequence и Entity.JobStep устанавливаются равными значениям этих же атрибутов у первого (последнего) члена партии при указании в поле SaveCriterion значений First, Sum или Product (Last). Значения атрибутов, введённых пользователем, зависят от значений в поле SaveCriterion. First (Last) означает, что значения таких атрибутов будут соответствовать значениям этих же атрибутов у первого (последнего) члена партии. Product означает, что значения таких атрибутов будут рассчитываться как произведение значений этих же атрибутов по всем членам партии. Sum означает то же, что и Product, только вместо произведения используется сумма. |
|
Rule |
AnyEntity |
Правило, по которому формируются партии из поступающих объектов. В выпадающем списке представлены правила:
|
Separate 1 |
Данный модуль (в переводе “отдельный, разделение”) используется для создания копий поступающих объектов или (как в данном случае) для разбиения предварительно сгруппированных в модуле Batch партий на отдельные объекты. В модуле задаются правила переноса стоимостных параметров на копии, количество создаваемых копий, а также правила задания значений атрибутов у отдельных членов разбиваемой партии. Когда разбивается приходящая в модуль группа, уничтожается сформированный в модуле Batch представительский объект, и восстанавливаются сформировавшие группу (изначальные) объекты. Восстановленные объекты выходят из модуля в той же последовательности, в которой они входили в партию. При создании копий из модуля выходят указанное количество копий объекта и сам оригинал. Типичное использование модуля:
|
|
Name |
Separate 1 |
Имя модуля. |
Type |
Split Existing Batch |
Тип обработки приходящих объектов:
Стоит также отметить, что при выборе типа DuplicateOriginal из модуля Separate существует два выхода – по одному для оригинала и для копий. |
MemberAttributes |
TakeAllRepresentativeValues |
Данное поле используется для определения того, как перенесутся атрибуты Entity.Type, Entity.Picture, Entity.Station, Entity.Sequence, Entity.Jobstep, Entity.HoldCostRate и все определённые пользователем атрибуты (все остальные атрибуты получат свои исходные значения) с представительского лица (объекта) на извлекаемые из партии объекты. Поле отображается только при выборе типа SplitExistingBatch. |