Модель транспортного цеха

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

«Транспортный цех объединения обслуживает три филиала А, В и С. Грузовики перевозят изделия из А в В и из В в С, возвращаясь затем в А без груза. Погрузка в А занимает 20 мин, переезд из А в В длится 30 мин, разгрузка и погрузка в В – 40 мин, переезд в С – 30 мин, разгрузка в С – 20 мин и переезд в А – 20 мин. Если к моменту погрузки в А или в В отсутствуют изделия, грузовики уходят дальше по маршруту. Изделия в А выпускаются партиями по 1000 штук через 20 ± 3 мин, в В – такими же партиями через 20 ± 5 мин. На линии работают 8 грузовиков, каждый перевозит по 1000 изделий. В начальный момент все грузовики находятся в А.

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

Схема движения 8-ми грузовиков транспортного цеха изображена на рис.11*.

Рис.11*

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

Предварительный анализ процесса перевозок показывает, что в самом начале обязательно несколько перегонов будут пустыми. Из пункта А все 8 грузовиков уйдут порожняком; пока они дойдут до пункта В, в нем появится одна партия. Один гру­зовик остановится на 20 мин для погрузки, остальные уйдут пустыми в пункт С и т.д.

Постепенно все грузовики рассосредоточатся по маршруту и частота пустых перегонов снизится.

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

Предположим, что грузовики в стационарном режиме (т.е. достаточно времени спустя от начала процесса) движутся без пустых перегонов. Тогда один грузовик делает один круг за время, равное 160 минутам, т.к. 30 + 30 + 20 = 80 мин уходит на переезды между пунктами, и 20 + 40 + 20 = 80 мин – на погрузку и разгрузку в пунктах А, В и С. Итого время на один круг маршрута составляет 80 + 80 = 160 мин.

За 160 мин грузовик перевезет тогда 2 партии изделий, одну партию – в среднем за 80 мин. Следовательно, 8 грузовиков будут перевозить одну партию в среднем за 80/8 = 10 мин. Это время равно среднему времени между выпуском партий изделий: в пункте А партии выпускаются в среднем через 20 мин, и так же в пункте В. Вместе два пункта выдают одно изделие в среднем через 10 мин.

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

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

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

Увеличить ресурс перевозок можно, увеличивая число грузовиков, или увеличивая длительность одной смены грузовиков по сравнению со сменой производства изделий, или, например, формируя время от времени дополнительные рейсы грузовиков.

В начальный момент времени все блоки GENERATE начинают выполняться одновременно. Поэтому во всех сегментах модели (разделенных комментариями) транзакты движутся - в модельном времени - одновременно. Взаимодействия между первым и вторым сегментами осуществляются через ячейки X1 и X2. Во втором сегменте эти ячейки пополняются (товар производится), в первом их содержимое разбирается транзактами (продукция развозится). В первом сегменте из блока GENERATE одновременно выходит 8 транзактов в нулевой момент времени. Но логически один из них приходит в блок TEST прежде других (хотя и в один и тот же момент времени). Он может «забрать груз». Следующий транзакт, приходящий в тот же момент модельного времени, но логически после первого, может «не застать груз» и из блока BEG TEST сразу уйти «в путь к В».

5 EMPTY VARIABLE N3-N4+N12-N13 ;число пустых перегонов
10 GENERATE ,,,8 ;выход 8-ми грузовиков
20 ASSIGN 1,0 ;помечаем грузовики как пустые
30 BEG TEST G X1,0,GOTOB ;проверка наличия груза в п.А
40 SAVEVALUE 1-,1 ;забрать груз для погрузки
50 ADVANCE 20 ;задержка 20 мин для погрузки
60 ASSIGN 1,1 ;помечаем: грузовик с грузом
70 GOTOB ADVANCE 30 ;30 мин переезд в п.В
80 RAZGR TEST G P1,0,POGR ;проверка: нужно разгружаться?
90 ADVANCE 20 ;разгрузка 20 мин
100 ASSIGN 1,0 ;помечаем грузовик как пустой
110 POGR TEST G X2,0,GOTOC ;проверка наличия груза в п.В
120 SAVEVALUE 2-,1 ;забрать груз для погрузки
130 ADVANCE 20 ;разгрузка 20 мин
140 ASSIGN 1,1 ;помечаем: грузовик с грузом
150 GOTOC ADVANCE 30 ;30 мин переезд в п.С
160 TEST G P1,0,GOTOA ;проверка: нужно разгружаться?
170 ADVANCE 20 ;разгрузка 20 мин
180 ASSIGN 1,0 ;грузовик пуст
190 GOTOA ADVANCE 20 ;20 мин переезд в п.А
200 TRANSFER ,BEG ;начинаем новый круг
*** Производство перевозимой продукции ***
210 GENERATE 20,3 ;выпуск партий в п. А
220 SAVEVALUE 1+,1 ;число партий – в ячейке X1
230 TERMINATE
240 GENERATE 20,5 ;выпуск партий в п. В
250 SAVEVALUE 2+,1 ;число партий – в ячейке X2
260 TERMINATE
*** Таймер для останова процесса моделирования ***
270 GENERATE 480 ;одна смена = 480 мин.
280 TERMINATE 1

Отчет по исследованию.

START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 480.000 28 0 0
NAME VALUE
BEG 3.000
EMPTY 10000.000
GOTOA 19.000
GOTOB 7.000
GOTOC 15.000
POGR 11.000
RAZGR 8.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 8 0 0
2 ASSIGN 8 0 0
BEG 3 TEST 32 0 0
4 SAVEVALUE 20 0 0
5 ADVANCE 20 0 0
6 ASSIGN 20 0 0
GOTOB 7 ADVANCE 32 1 0
RAZGR 8 TEST 31 0 0
9 ADVANCE 19 0 0
10 ASSIGN 19 0 0
POGR 11 TEST 31 0 0
12 SAVEVALUE 23 0 0
13 ADVANCE 23 2 0
14 ASSIGN 21 0 0
GOTOC 15 ADVANCE 29 1 0
16 TEST 28 0 0
17 ADVANCE 20 4 0
18 ASSIGN 16 0 0
GOTOA 19 ADVANCE 24 0 0
20 TRANSFER 24 0 0
21 GENERATE 24 0 0
22 SAVEVALUE 24 0 0
23 TERMINATE 24 0 0
24 GENERATE 24 0 0
25 SAVEVALUE 24 0 0
26 TERMINATE 24 0 0
27 GENERATE 1 0 0
28 TERMINATE 1 0 0
SAVEVALUE RETRY VALUE
1 0 4.000
2 0 1.000

Ячейки X1 и X2 общедоступны для всех транзактов, как и продукция в пп. А и В является общей для всех грузовиков. Значения этих двух ячеек изменяются в блоках SAVEVALUE. Значение параметра транзакта P1 у каждого транзакта свое, как и состояние каждого грузовика - индивидуальное.

В строке 5 описана переменная, значение которой в любой момент модельного времени равно числу пустых перегонов грузовиков. Эта переменная вычисляется через СЧА Nj, который равен числу транзактов, вошедших в блок номер j. Число пустых перегонов равно сумме числа пустых перегонов на пути АВ и числа пустых перегонов на пути ВС. Число пустых перегонов на пути АВ определяется как N3 –N4, т.е. как число грузовиков, прибывших в п.А и проверивших наличие в нем груза, минус число грузовиков, заставших в п.А груз и, соответственно, загруженных. Аналогично определяется число пустых перегонов между пунктами В и С, равное N12 – N13.

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

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

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

Моделируя таким образом смену за сменой (используя для возврата модели в исходное состояние команду CLEAR), находим, что число пустых перегонов грузовиков равно 11 или 12. При этом остаток не перевезенной продукции X1 + X2 составляет от 3 до 5 партий изделий.

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

Поэтому посмотрим, что будет, если мы будем выпускать грузовики в рейс один за другим с интервалом в 20 мин, – т.е. через такое время, которое в сред-нем нужно для выпуска новой партии продукции.

Для этого в блок GENERATE ,,,8 внесем изменение – запишем его как GENERATE 20,,,8, что соответствует выходу грузовиков друг за другом через 20 мин.

Моделируя этот вариант расписания, находим, что число пустых перегонов за смену сократилось до 2-х, но число не перевезенных партий за смену в среднем несколько возросло – примерно на 1 – 2 партии по той, очевидно, причине, что каждый грузовик в среднем вышел в смену более чем на час позже, чем в первом варианте.

Особенности планирования эксперимента с моделями СМО при коэффициенте загрузки, равном единице, подсказывают нам, что в задаче о перевозках имеется тонкость, состоящая в том, что средняя длина очереди, – т.е. среднее число не перевезенных партий изделий – с течением времени будет стремиться к бесконечности. Чтобы проверить это предположение, проведем моделирование процесса перевозок с условием, что производство продукции и движение грузовиков осуществляются непрерывно в течение бесконечного времени. Это соответствует тому, как если бы грузовики, перевозя продукцию, в конце смены «замирали» в том месте пути, в котором их застало окончание смены. Следующую смену они начинали бы тогда именно из этой точки. Кроме того, при таком моделировании сохраняется задел изделий в пунктах производства.

Моделируя смену за сменой без сбрасывания результатов командой CLEAR, получим для 100 смен подряд, следующие результаты. Число пустых перегонов - во всех 100 сменах - в каждой смене равно 2. Число не перевезенных партий продукции меняется от смены к смене следующим образом: оно составляет последовательно 5,9,9, … ,10,11,14, …,7.

Из этого опыта может сложиться впечатление, что в стационарном процессе при таком расписании, – когда грузовики выходят в первый рейс через 20 мин друг за другом – среднее число пустых перегонов за смену сократилось в среднем с 12 до 2, и что количество не перевезенных партий составляет в среднем около 9 – 10 за 100 смен.

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

Так, число пустых перегонов за 10000 смен составляет уже около 49, а число не перевезенных партий изделий – около 321.

Разумеется, обнаруженная тонкость, связанная с ростом очередей, имеет исключительно теоретическое значение. Вряд ли кто-либо из сотрудников транспортного цеха на практике обеспокоился бы из-за того, что имеется вероятность накопления очереди на 20 поездок восьми грузовиков, если цех проработает в неизменных условиях в течение 10000 дней, - т.е. в течение почти 30 лет.

Можно разрабатывать десятки вариантов модели перевозки грузов по филиалам А, В и С.

Например, можно обратить внимание на то, что смена по производству продукции может закончиться раньше, чем смена грузовиков по ее перевозке. Это значит, что необходимо уточнить правило моделирования перевозок. Тогда мы должны будем выпускать грузовики друг за другом через 20 мин, филиалы в пп. А и В должны будут работать в модели ровно 8 час, и грузовики должны будут делать ровно три круга, начинающихся и кончающихся в п. А. Это означает, что грузовики могут заканчивать свою смену позже, чем филиалы.

Однако, моделируя такой вариант, мы обнаружим, что грузовики в среднем делают свою смену – три круга – ровно за 480 мин (т.е. 8 час), и что со временем по-прежнему возрастает как число пустых перегонов, так и число не перевезенных партий изделий.

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

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

Грузовики следует выпускать через 20 мин друг за другом.

Каждый грузовик должен сделать три круга и вернуться в исходный п. А.

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

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

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

Однако следует обратить внимание на то, что эти выводы возникают не иначе, как в процессе моделирования: мы формализуем задачу, анализируем ее, программируем имитационную модель. … И вдруг, на каком-то этапе, обнаруживаем, что мы уже знаем решение задачи, хотя еще не получили всех необходимых численных результатов имитационного эксперимента.

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

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

Расскажи друзьям