Моделирование в проектировании сложных систем

Автор: Пользователь скрыл имя, 04 Ноября 2012 в 14:28, курс лекций

Описание работы

Дисциплина «Моделирование в проектировании сложных систем» рассматривает вопросы применения имитационного моделирования при проектировании сложных технических и других систем, к которым относятся гибкие производственные системы (ГПС), их подсистемы, и другие объекты дискретного производства, а также транспортные, информационные, банковские, торговые, и т.п. системы, в основе которых с точки зрения моделей лежат системы массового обслуживания.

Работа содержит 1 файл

МОДЕЛИРОВАНИЕ В ПРОЕКТИРОВАНИИ (на печать).docx

— 542.67 Кб (Скачать)

 

GNORM = GNORMСТ.ОТ. #  SNORM + GNORMМ.ОЖ. ,

 

где GNORM – выборка из нормального распределения; SNORM – выборка из нормированного нормального распределения, имеющего нулевое матожидание и единичное стандартное отклонение; GNORMСТ.ОТ и  GNORMМ.ОЖ. – реальные стандартное отклонение и матожидание соответственно.

Нормированная выборка задается функцией типа С с именем SNORM с использованием 25 пар чисел:

  SNORM FUNCTION     RN1,  C25

0, –5 /.00003, –4 /.00135, –3 /.00621, –2.5 /.02275, –2 /.06681, –1.5

.11507, –1.2 /.15866, –1 /.21186, –.8 /.27425, –.6 /.34458, –.4 /.42074,–.2

.5, 0 /.57926, .2 /.65542, .4 /.72575, .6 /.78814, .8 /.84134, 1/.88493, 1.2

.93319, 1.5 /.97725, 2 /.99379, 2.5 /.99865, 3 /.99997, 4 / 1,5

 

При использовании этого  закона распределения определяется арифметическая переменная GNORM, например, при стандартном отклонении GNORMСТ.ОТ. = 5  и матожидании GNORMМ.ОЖ. = 30  следующим образом:

 

GNORM FVARIABLE    5#FN$ SNORM + 30

 

Далее в программе делается ссылка на эту переменную, например:

 

GENERATE V $ GNORM

 

В связи с тем, что часто  реальные случайные величины (временные  интервалы и т.п.) положительны, необходимо следить за тем, чтобы матожидание по меньшей мере в 5 раз превышало стандартное отклонение.

Нормальное распределение  можно промоделировать с помощью  библиотечного генератора с использованием оператора NORMAL. Его формат:

 

NORMAL (А, В, С)

 

В А указывается номер генератора случайных чисел, в В – среднее значение, в С – стандартное отклонение. Например, для рассмотренного случая:

 

GENERATE      (NORMAL (1, 30, 5))

4.6. Булевы переменные, проверка числовых выражений

 

Булева переменная предназначена  для вычисления логических выражений, которые могут принимать одно из двух значений: «истина» или «ложь» (величина которого 1 или 0 соответственно). Эта переменная определяется командой  BVARIABLE (булева переменная). Ее формат:

 

<имя>  BVARIABLE  <выражение>

 

В поле метки указывается  символическое имя, в поле операндов  – выражение. В выражении могут  использоваться операторы трех типов: логические, отношения и булевы.

логические операторы  используются для ссылок на логическое состояние устройств, МКУ и ключей. Наиболее распространенные операторы:

 

FVj – устройство используется (1), в противном случае – 0;

FIj – устройство прервано (1), в противном случае – 0;

SFj – МКУ заполнено (1), в противном случае – 0;

SEj – МКУ пусто (1), в противном случае – 0;

LSj – ключ включен (1), в противном случае – 0;

операторы отношения сравнивают численные величины:

'G' – больше,

'GE' – больше или равно,

'E' – равно,

'NE' – не равно,

'LE' – меньше или равно,

'L' – меньше.

Булевы  операторы  выполняют условия: 'AND' – И, 'OR' – ИЛИ.

Порядок выполнения: логические операторы и операторы отношения, затем – булевы операторы. Если есть круглые скобки, то сначала производятся вычисления в них. Например, выражение

 

KAPPA BVARIABLE  C1 'GE' 500 ' AND' LS $ ALFA

 

истинно, если относительное  модельное время больше или равно 500 и логический ключ ALFA включен.

В случае, если булева переменная задана через арифметическую переменную, то значение булевой переменной 0, если арифметическая переменная равна 0, в остальных случаях значение булевой переменной равно 1.

Булева переменная имеет  СЧА: BVj, для приведенного примера это BV$KAPPA.

Блок TEST проверяет соотношение между операндами А и В через дополнительный операнд Х, который может принимать такие же значения, как и операторы отношении (только апострофы не ставятся). Формат блока: 

TEST X  A, B, [C]

 

Графическое изображение:

Этот блок может работать в двух режимах: отказа (клапана) и  условного перехода. В первом режиме операнд С не используется. Транзакт пойдет в следующий оператор только при выполнении условия, заданного операндом Х. Например, при записи TEST  E   Q1, 10  транзакт пойдет дальше, когда содержимое очереди № 1 будет равно 10. Во втором режиме в случае выполнения условия транзакт пойдет в следующий оператор, а в случае невыполнения – по метке, указанной в операнде С. Например,  TEST  G P5, V$AAA, MET1 означает, что при условии, когда значение пятого параметра вошедшего тракзакта больше значения арифметической переменной ААА, транзакт пойдет в следующий оператор, если нет – то по адресу МЕТ1.

Блок TEST может использоваться и для проверки булевых переменных. Например, TEST E   BV $ DDD, 1 означает, что транзакт пойдет в следующий оператор, только тогда, когда значение булевой переменной DDD станет равным единице.

Примеры

Пример 4.1. Пусть производственный участок работает 1 смену (28800 с). Поступающие детали подчиняются пуассоновскому закону с интенсивностью 12 поступлений в час (т.е. 300 с на 1 поступление). Обработка на одном станке с экспоненциальным временем, но среднее время t зависит от количества деталей в очереди : при отсутствии очереди t=330 c; при = 1 и 2 время t=300 c; при = 3; 4; 5  t=270 c; при 6  t=240 c.

Программа модели при единице  модельного времени, равной 1 с, будет иметь вид:

 

QVEF  FUNCTION  Q$ABC, D4

0,330 / 2, 300 / 5, 270 / 6, 240

GENERATE  (EXPONENTIAL (1, 0, 300))

QUEUE  abc

seize   oto

depart  abc

ADVANCE  (EXPONENTIAL (1,0, FN$QVEF))

RELEASE  OTO

TERMINATE

GENERATE  28800

TERMINATE  1

START  1

Эта программа чувствительна  к длине очереди  .

Пример 4.2. Рассмотрим процесс сборки деталей с обжигом (см. пример 3.3). Пусть время сборки (30 ± 5) мин, время обжига (8 ± 2) мин, зарплата сборщика 30 единиц в день, стоимость печи 80 единиц в день, стоимость детали – 5 единиц. Рассчитать среднюю дневную прибыль, в одном прогоне модели исследовать случаи с четырьмя, пятью и шестью сборщиками. Модельное время – 1 неделя.

Определим операнд D в блоке GENERATE косвенно через сохраняемую величину с именем RAB.

Средняя дневная прибыль = 5 # число ежедневно изготовленных деталей – дневные расходы.

Если в поле метки блока RELEASE OTO  записать имя PLAN, то N $ PLAN есть число готовых деталей за весь плановый период, т.е. за 5 дней, а N $ PLAN/5 – за 1 день.

Затраты за 1 день = стоимость  печи (80) + зарплата рабочих (30 # X$RAB).

Следовательно, дневная прибыль, выраженная арифметической переменной с именем PRIB будет:

 

PRIB         VARIABLE  5 # N$PLAN / 5–80–30 # X$RAB

 

Для подсчета средней дневной  выручки в модуль таймера поместим блок SAVEVALUE с операндами А = INDEX и В = V$PRIB.

 

INITIAL  X$RAB, 4

PRIB  VARIABLE  5#N$PLAN/5–80–30#X$RAB

GENERATE  ,,, X$RAB

SBOR  ADVANCE  30, 5

SEIZE   OTO

ADVANCE  8, 2

PLAN  RELEASE  OTO

TRANSFER  , SBOR

GENERATE  2400

SAVEVALUE INDEX, V$PRIB

TERMINATE  1

START  1

INITIAL  X$RAB, 5

CLEAR  OFF

START  1

INITIAL  X$RAB, 6

CLEAR  OFF

START  1

 

Выходные данные, касающиеся прибыли:

 

SAVEVALUE VALUE  SAVEVALUE VALUE

    RAB         4      INDEX     35

    RAB         5      INDEX     50

    RAB         6      INDEX     35 

 

 

 

Эта статистика показывает, что при пяти сборщиках будет  наибольшая дневная прибыль.

 

 

 

 

 

 

5. использование  средств рационального построения  моделей

 

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

5.1.  Параметры  транзактов,  изменение их значений  и уровня   приоритетов

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

Для задания значений параметров используют блок ASSIGN (назначить). Его формат и графическое изображение:

В операнде А указывается имя параметра (число, СЧА, СЧА* параметр и может быть знак «+» или «–»   в зависимости от режимов: замещения, приращения, уменьшения). В операнде В указывается новое значение, в С – модификатор–функция. Например:

 

ASSIGN 1, 285

ASSIGN АВС+, Q10

 

В первом случае значение параметра  № 1 вошедшего транзакта заменяется на число 285, во втором – к значению вошедшего транзакта с именем АВС прибавляется значение текущего содержимого очереди № 10.

Для задания в транзакт или его параметр абсолютного модельного времени используют блок MARK (отметить). Формат и графическое изображение блока:

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

Есть и другие блоки  для изменения значения параметров транзакта [1].

Для изменения уровня приоритета транзакта применяют блок PRIORITY  (установить приоритет). Формат и графическое изображение:

В операнде А указывается новый уровень приоритета (целое число, СЧА, СЧА*СЧА).

В операнде В может быть указан режим BU (т.е. BUFFER), когда транзакты переводятся в список текущих событий для возобновления просмотра этого списка.

5.2. Системы с параллельно  работающими идентичными  устройствами  и раздельными очередями

Часто возникают ситуации, когда в системе с несколькими  очередями и устройствами реализуется  такая дисциплина обслуживания: если одно из устройств свободно, то транзакт занимает его, если все устройства заняты, то транзакт присоединяется к самой короткой очереди. Такую стратегию можно промоделировать с помощью блока SELECT (выбрать) в условном режиме. Формат блока и графическое изображение:

 

В условном режиме операнд Х может принимать значения: G, GE, E, L, LE, NE, MIN, MAX, NE.MAX, NE.MIN. Здесь первые шесть значений аналогичны значениям операнда Х блока TEST. Символы MAX и MIN означают наибольшее 
и наименьшее значения, NE.MAX и NE.MIN – ненаибольшее и ненаименьшее значения.

При использовании блока SELECT в логическом режиме операнд Х принимает значения, определяющие логические условия работы устройств и МКУ (с ними можно ознакомиться в [1]).

Операнды задают: E – групповое имя (СЧА) проверяемых объектов; B и  
C – наименьший и наибольший номера из проверяемых объектов; D – значение, с которым сравнивается атрибут (в случае, когда X = MIN (MAX) и X = NE.MIN (NE.MAX), D – не задается); A – номер параметра, в который заносится номер найденного типа группы; F – метка оператора, куда пойдет транзакт, если искомый объект не обнаружен.

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

 

.

.

.

SELECT Е  2, 1, 8, 0, F, ALFA

ABC  QUEUE  P2

SEIZE   P2

.

.

.

ALFA  SELECT MIN  2, 1, 8, ,Q

TRANSFER  , ABC

.

.

.

 

В этом фрагменте устройства (с 1 по 8) проверяются на предмет свободы (F→E→O),  если такое устройство есть, то его номер записывается во второй параметр активного транзакта, он проходит дальше (с нулевым вхождением в очередь) и попадает в свободное устройство с именем, определенным в Р2, и т.д.

Если свободного устройства нет, то транзакт идет по метке ALFA к блоку SELECT в режиме MIN и после проверки содержимого очередей (Q) с первой по восьмую, присоединяется к наименьшей через оператор  TRANSFER  , АВС  
(номер минимальной очереди фиксируется также во втором параметре активного транзакта). При этом будет сформирована статистика относительно всех восьми устройств и очередей к ним, хотя в программе используется одна последовательность операторов.

5.3. Моделирование таблиц

При исследовании систем возникает  необходимость определения для  какой–либо выборки среднего значения, стандартного отклонения, количества элементов, попадающих в установленные  интервалы и т.п. информации. Такая  табуляция осуществляется с использованием операторов TABLE (таблица) и TABULATE (табулировать).

Команда TABLE имеет формат:

 

<имя>  TABLE А, В, С, D

 

В поле метки  записывается символическое имя  таблицы. В операнде А задается СЧА табулируемого элемента, в В – верхний предел первого интервала, в С – ширина промежуточных интервалов, в D – общее число интервалов. Например, MET1   TABLE   M1, 10, 10, 8  задает таблицу с именем MET1 для табулирования времени пребывания в модели активного транзакта М1 при верхней границе первого значения интервала, равного 10, ширине интервалов в  
100 единиц и общем числе интервалов таблицы, равном 8. Эта команда описывается в начале программы.

Блок  TABULATE имеет формат и графическое изображение:

В операнде А указывается имя таблицы, в которую заносятся табулируемые значения. В операнде В указывается весовой коэффициент, т.е. количество единиц, заносимых в интервал таблицы, по умолчанию – это значение равно единице.

Для использования  описанной ранее таблицы этот блок будет:

Информация о работе Моделирование в проектировании сложных систем