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

Существует такая статистика: 20% кода выполняется 80% времени. Точность ее
вряд ли полностью соответствует реальному положению вещей, а вот общий смысл
довольно интересен: получается, что оптимизация всего приложения – занятие
неблагодарное и глупое, а реальные результаты может дать только оптимизация тех
20% приложения, которые выполняются дольше всего. Причем найти эти 20% не так уж
и сложно.

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

Простейшее профилирование можно произвести голыми руками (и ниже я покажу,
как это сделать), однако лучше положиться на сообщество, представители которого
уже создали все необходимые инструменты. Первый и наиболее популярный инструмент
носит имя GNU Profiler (или gprof). Он испокон веков используется для
профилирования кода, генерируемого компилятором GCC. Второй - GNU Coverage
testing tool (gcov), утилита для более детального анализа производительности.
Третий - набор инструментов отладки и профилирования под общим именем Google
Performance Tools (сокращенно GPT). Ну а четвертый - это Valgrind, который хоть
и предназначен для поиска ошибок работы с памятью, но содержит в своем арсенале
ряд утилит для анализа производительности программ.

Начнем, как и полагается, с классики.

GNU Profiler

GNU Profiler (gprof) - один из старейших профайлеров, доступных для
операционных систем типа UNIX. Он входит в состав пакета gcc, и потому может
быть использован для профилирования программ, написанных на любом поддерживаемом
им языке (а это не только C/C++, но и Objective-C, Ada, Java).

Сам по себе gprof не является инструментом профилирования, а лишь позволяет
отобразить профильную статистику, которая накапливается приложением во время
работы (само собой разумеется, по умолчанию никакое приложение этого не делает,
но может начать, если собрать программу с аргументом "-pg").

Рассмотрим, как это работает в реальных условиях. Чтобы ощутить все
достоинства gprof, мы применим ее не к какому-нибудь абстрактному, искусственно
созданному приложению, а к самому настоящему повседневно используемому. Пусть
это будет gzip.

Получаем и распаковываем исходники архиватора:

$ wget www.gzip.org/gzip-1.3.3.tar.gz
$ tar -xzf gzip-1.3.3.tar.gz
$ cd gzip-1.3.3

Устанавливаем инструменты, необходимые для сборки (в Ubuntu это делается
через инсталляцию мета-пакета build-essential):

$ sudo apt-get install build-essential

Запускаем конфигуратор сборки, передав в переменной окружения CFLAGS аргумент
"-pg":

$ CFLAGS="-pg" ./configure

Компилируем программу:

Теперь у нас есть бинарник gzip, способный вести статистику своего
исполнения. Каждый его запуск будет сопровождаться генерацией файла gmon.out:


$ ls -l gmon.out
-rw-r--r-- 1 j1m j1m 24406 2010-11-19 14:47 gmon.out

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

$ gprof ./gzip gmon.out > gzip-profile.txt

Наиболее важная часть полученного файла показана на скриншоте.

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

Попробуем проанализировать отчет. Первой в списке идет функция deflate,
которая была вызвана всего один раз, но "сожрала" 29% всего времени исполнения
программы. Это реализация алгоритма компрессии, и, если бы перед нами стояла
задача оптимизировать gzip, мы должны были бы начать именно с нее. 22% времени
ушло на исполнение функции longest_match, но, в отличие от deflate, она была
вызвана аж 450 613 081 раз, поэтому каждый отдельный вызов функции занимал
ничтожное количество времени. Это второй кандидат на оптимизацию. Функция
fill_window отняла 13% всего времени и была вызвана "всего" 22 180 раз.
Возможно, и в этом случае оптимизация могла бы дать результаты.

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

Столбцы содержат следующую информацию (слева направо): индекс (index, он есть
только в первичной строке и, по сути, ничего не значит); процент времени,
который уходит на выполнение функции (% time); количество времени, затрачиваемое
на ее выполнение в секундах (self); количество времени, затрачиваемое на
выполнение функции и всех вызываемых ею функций (children); количество вызовов
функции (called) и ее имя (name).

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

GNU Coverage testing tool

Кроме gprof, компилятор GCC имеет в своем составе еще один инструмент
профилирования, который позволяет получить более детальный отчет о выполнении
приложения. Утилита называется gcov и предназначена для генерации так
называемого аннотированного исходного кода, который напротив каждой строки
содержит количество ее исполнений. Это может понадобиться для более глубокого
изучения проблем приложения, когда функции, виновные в "тормозах", найдены, а
суть проблемы так и остается неясна (например, непонятно, какая строка в
многократно вложенном цикле внутри длиннющей функции несет ответственность за
аномальное падение производительности).

Gcov не может полагаться на статистику, генерируемую приложением при сборке с
флагом "-pg", и требует пересборки с флагами "-fprofile-arcs" и "-ftest-coverage":

$ CFLAGS="-fprofile-arcs -ftest-coverage"
./configure && make

$ ./gzip ~/ubuntu-10.10-desktop-i386.iso

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

$ gcov deflate.c
File "deflate.c"
Lines executed:76.98% of 139
deflate.c:creating "deflate.c.gcov"

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

Google Performance Tools

Google Performance Tools (сокращенно GPT) - это разработка сотрудников Google,
предназначенная для поиска утечек памяти и узких мест приложений. Как и gprof,
GPT не является внешней по отношению к тестируемому приложению программой и
заставляет его самостоятельно вести статистику своего исполнения. Однако
используется для этого не внедренный на этапе сборки приложения код, а
библиотеки, которые могут быть прилинкованы к приложению во время сборки или
подключены при запуске.

Всего разработчикам доступно две подключаемых библиотеки: tcmalloc (которая,
по уверению авторов GPT, представляет собой самую быструю на свете реализацию
функции malloc, а также позволяет производить анализ того, как память
расходуется, выделяется и течет) и profiler, генерирующая отчет о выполнении
программы, наподобие gprof. Также в комплект входит утилита pprof,
предназначенная для анализа и визуализации накопленных данных.

Исходный код, а также rpm- и deb-пакеты всего этого набора доступны на
официальной страничке (code.google.com/p/google-perftools), однако я бы не
советовал заморачиваться с ручной установкой, так как набор доступен в
стандартных репозиториях Fedora и Ubuntu, и его можно установить одной простой
командой:

$ sudo apt-get install google-perftools \libgoogle-perftools0
libgoogle-perftools-dev

$ LD_PRELOAD=/usr/lib/libprofiler.so.0.0.0 \
CPUPROFILE=gzip-profile.log ./gzip \
/home/j1m/ubuntu-10.10-desktop-i386.iso

Однако сами гугловцы не советуют применять этот метод (очевидно из-за проблем
с программами, написанными на C++), рекомендуя линковать библиотеку во время
сборки. Что ж, не будем спорить.

Для экспериментов возьмем все тот же gzip и повторно пересоберем его,
слинковав бинарник с нужной библиотекой:

$ cd ~/gzip-1.3.3
$ make clean
$ ./configure
$ LDFLAGS="-lprofiler" ./configure && make

Теперь gzip вновь готов вести лог своего исполнения, но не будет делать этого
по умолчанию. Чтобы активировать профайлер, необходимо объявить переменную
окружения CPUPFOFILE и присвоить ей путь до файла профиля:

$ CPUPROFILE=gzip-cpu-profile.log ./gzip \
~/ubuntu-10.10-desktop-i386.iso
PROFILE: interrupts/evictions/bytes = 4696/946/91976

Как и в случае с gprof, получившийся отчет имеет бинарную форму и может быть
прочитан только с использованием специальной утилиты. В GPT ее роль выполняет
perl-скрипт pprof (в Ubuntu во избежание путаницы с другой одноименной утилитой
он переименован в google-pprof), который может генерировать не только таблицы и
аннотированные исходники на манер gcov, но и визуальные графы вызовов. Всего
существует 11 типов вывода этой утилиты, за каждым из которых закреплен
соответствующий аргумент командной строки:

  1. Текстовый (--text) - таблица, подобная выводу gprof;
  2. Callgrind (--callgrind) - вывод в формате, совместимом с утилитой kcachegrind (из пакета valgrind);
  3. Графический (--gv) - граф вызовов, немедленно отображаемый на экране;
  4. Листинг (--list=) - аннотированный листинг указанной функции;
  5. Дизассемблированный листинг (--disasm=) - аннотированный
    дизассемблированный листинг указанной функции;
  6. Символьный (--symbols) - листинг декодированных символьных имен;
  7. Графический файл (--dot, --ps, --pdf, --gif) - граф вызовов, сохраняемый
    в файл;
  8. Сырой (--raw) - подготовка бинарного файла профиля к передаче по сети
    (перекодируется с помощью печатаемых символов).

Наибольший интерес для нас представляют текстовый ("--text") и графический
("--gv") типы вызовов. Только они могут дать полную информацию о выполнении
приложения и всех его проблемных местах. Текстовый вывод генерируется следующим
образом:

$ google-pprof --text ./gzip gzip-cpu-profile.log

Как видно на скриншоте, вывод представляет собой таблицу с перечислением всех
функций и затрат на их исполнение. На первый взгляд она кажется очень похожей на
таблицу, генерируемую утилитой gprof, но это не так. Будучи всего лишь
библиотекой, GPT не может вести статистику исполнения программы так же детально
и точно, как это делает код, внедренный прямо в приложение. Поэтому вместо
записи всех фактов вызова и выхода из функций (поведение программы, собранной с
флагом "-pg"), GPT применяет метод, называемый сэмплированием. Сто раз в секунду
библиотека активирует специальную функцию, в задачи которой входит сбор данных о
том, в какой точке в текущий момент происходит выполнение программы, и запись
этих данных в буфер. По завершению работы программы из этих данных формируется и
записывается на диск профильный файл.

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

Во всем остальном таблица сильно напоминает вывод gprof: по функции на
строку, по показателю на столбец. Всего столбцов шесть:

  1. Количество проверок для данной функции;
  2. Процент проверок на все остальные функции программы;
  3. Количество проверок для данной функции и всех ее потомков;
  4. То же число в процентах от общего количества проверок;
  5. Имя функции.

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

Несомненным достоинством GPT перед gprof является умение представлять
информацию в графическом виде. Для активации этой функции pprof следует
запускать с флагом "--gv" (кстати, для показа графа будет использована
одноименная утилита):

$ google-pprof --gv ./gzip gzip-cpu-profile.log

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

Еще одно достоинство GPT заключается в способности использовать разные уровни
детализации для вывода данных, позволяя пользователю самому выбирать единицы
дробления. По умолчанию в качестве такой единицы используется функция, поэтому
любой вывод pprof логически разделен на функции. Однако при желании в качестве
единицы дробления можно использовать строки исходного кода (аргумент "--lines"),
файлы ("--files") или даже физические адреса памяти ("--addresses"). Благодаря
такой функциональности GPT очень удобно использовать для поиска узких мест в
больших приложениях, когда сначала ты анализируешь производительность на уровне
отдельных файлов, затем переходишь к функциям и, наконец, находишь проблемное
место на уровне исходного кода или адресов памяти.

И последнее. Как я уже говорил выше, GPT - это не только хороший профайлер,
но и инструмент для поиска утечек памяти, поэтому у него есть один очень
приятный побочный эффект в виде способности к анализу потребления памяти
приложением. Для этого приложение должно быть собрано или запущено с поддержкой
библиотеки tcmalloc, а в переменную HEAPPROFILE записан адрес для размещения
профильного файла. Например:

$ LD_PRELOAD=/usr/lib/libtcmalloc.so.0.0.0 \
HEAPPROFILE=gzip-heap-profile.log \
./gzip ~/ubuntu-10.10-desktop-i386.iso
Starting tracking the heap
Dumping heap profile to gzip-heap-profile.log.0001.heap (Exiting)

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

При необходимости эту информацию можно получить в графическом виде, а также
изменить единицы дробления. Библиотека может быть настроена с помощью различных
переменных окружения, наиболее полезная из которых носит имя HEAP_PROFILE_MMAP.
Она включает профилирование для системного вызова mmap (по умолчанию GPT
собирает статистику только для вызовов malloc, calloc, realloc и new).

Пара слов о Valgrind

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

  1. Cachegrind - позволяет собирать статистику по попаданию данных и
    инструкций программы в кэш первого и второго уровней процессора (мощный и
    сложный инструмент, который полезен при выполнении профилирования
    низкоуровневого кода).
  2. Massif - профайлер кучи, схожий по функциональности с аналогом из пакета GPT.
  3. Callgrind - профайлер, во многом похожий на таковой в gprof и GPT.

По умолчанию в качестве основного плагина Valgrind использует memcheck
(отладчик памяти), поэтому для его запуска в режиме профилирования необходимо
указать нужный плагин вручную. Например:

$ valgrind --tool=callgrind ./program

После этого в текущем каталоге будет создан файл с именем
callgrind.out.PID-программы, который можно проанализировать с помощью утилиты
callgrind_annotate или графической программы kcachegrind (устанавливается
отдельно). Я не буду расписывать формат генерируемых этими программами данных
(он хорошо представлен в одноименных man-страницах), скажу лишь, что
callgrind_annotate лучше запускать с флагом "--auto", чтобы он смог
самостоятельно найти файлы исходных текстов программы.

Для анализа расхода памяти Valgrind следует запускать с аргументом "--tool=massif".
После чего в текущем каталоге появится файл massif.out.PID-программы, который
может быть проанализирован с помощью утилиты ms_print. В отличие от pprof, она
умеет выводить данные не только в виде стандартной таблицы, но и генерировать
красивые ascii-art графики.

Выводы

Такие инструменты, как gprof, gcov и GPT, позволяют провести анализ работы
приложения и выявить все его узкие места вплоть до отдельной процессорной
инструкции, а подключив к процессу профилирования еще и Valgrind, можно добиться
удивительных результатов.

INFO

По умолчанию gprof не выводит профильной информации для функций
библиотеки libc, но ситуацию можно исправить, установив пакет libc6-prof и
собрав тестируемое с библиотекой libc_p: "export LD_FLAGS="-lc_p"".

Активировать профайлер GPT можно не только с помощью переменной окружения
CPUPROFILE, но и обрамив тестируемый участок кода функциями ProfilerStart()
и ProfilerStop(), которые объявлены в google/profiler.h.

WARNING

Из-за требований к безопасности GPT не сработает в отношении приложений с
установленным битом SUID.

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

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

Что такое bottleneck

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


Bottleneck — узкое место в производственном процессе

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

Существует два типа узких мест:

  1. Краткосрочные узкие места — вызваны временными проблемами. Хороший пример — больничный или отпуск ключевых сотрудников. Никто в команде не может полноценно заменить их, и работа останавливается. На производстве это может быть поломка одного из группы станков, когда его нагрузка распределяется между рабочим оборудованием.
  2. Долгосрочные узкие места — действуют постоянно. Например, постоянная задержка месячных отчетов в компании из-за того, что один человек должен обработать огромное количество информации, которая поступит к нему лавиной в самом конце месяца.

Как определить bottleneck в производственном процессе

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

Очереди и заторы

Процесс на производственной линии, который собирает перед собой самую большую очередь из единиц незавершенного производства, обычно является бутылочным горлышком. Такой способ поиска bottleneck подходит для штучного конвейерного производства, например, на линии разлива. Хорошо видно, в каком месте линии скапливаются бутылки, и какой механизм имеет недостаточную мощность, часто ломается или обслуживается неопытным оператором. Если на линии несколько мест скопления, то ситуация сложнее, и нужно использовать дополнительные методы, чтобы найти самое критичное узкое место.

Пропускная способность

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

Полная мощность

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

Ожидание

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

Кроме наблюдения за производством, для выявления узких мест используются такие инструменты:

Value Stream Mapping — карта создания потоков ценности

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

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

Как уменьшить влияние узких мест

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

Первый подход

Увеличение мощности существующих узких мест.

Существует несколько способов увеличить мощность узких мест:

  1. Добавьте ресурсы в ограничивающий процесс. Необязательно нанимать новых сотрудников. Кросс-функциональное обучение персонала может уменьшить влияние узких мест с незначительными затратами. В таком случае рабочие будут обслуживать сразу несколько станций и облегчать прохождение узких мест.
  2. Обеспечьте бесперебойную подачу деталей на узкое место. Всегда следите за незавершенным производством перед узким местом, управляйте подачей ресурсов на станцию bottleneck, учитывайте овертаймы, в течение которых оборудование также всегда должно иметь детали для обработки.
  3. Убедитесь, что узкое место работает только с качественными деталями. Не тратьте мощность и время работы узкого места на обработку брака. Размещайте точки контроля качества перед станциями bottleneck. Это повысит пропускную способность процесса.
  4. Проверьте график производства. Если в процессе выпускается несколько разных продуктов, которые требуют разного времени работы bottleneck, скорректируйте график производства так, чтобы общий спрос на bottleneck уменьшился
  5. Увеличьте время работы ограничивающего оборудования. Пусть bottleneck работает дольше, чем другое оборудование. Назначьте оператора, который будет обслуживать процесс во время обеденных перерывов, плановых простоев и, если нужно, сверхурочно. Хотя этот метод не уменьшит время цикла, он будет поддерживать работу bottleneck пока остальное оборудование будет простаивать.
  6. Сократите простои. Избегайте плановых и внеплановых простоев. Если оборудование bottleneck выйдет из строя во время рабочего процесса, немедленно отправьте ремонтную бригаду, чтобы починить и запустить его. Также постарайтесь сократить время переналадки оборудования с одного продукта на другой.
  7. Усовершенствуйте процесс именно в узком месте. Используйте VSM, чтобы устранить действия, не добавляющие ценности, и сократить время на добавление ценности, избавившись от потерь. В итоге вы получите более короткое время цикла.
  8. Перераспределите нагрузку на bottleneck. Если возможно, разделите операцию на части и назначьте их на другие ресурсы. В итоге вы получите более короткий цикл и возросшую мощность.


Второй подход

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

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


Третий подход

Сокращение неиспользуемой мощности.

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


Примеры bottleneck вне производства

Транспорт

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

Компьютерные сети

Медленный WiFi-роутер, подключенный к эффективной сети с высокой пропускной способностью, является узким местом.

Коммуникация

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

Программное обеспечение

В приложения тоже есть узкие места — это элементы кода, на которых программа «тормозит», заставляя пользователя ждать.

"Железо" компьютера

Узкие места в компьютере — это ограничения аппаратных средств, при которых мощность всей системы ограничивается одним компонентом. Часто процессор рассматривается как ограничивающий компонент для видеокарты.

Бюрократия

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

Вердикт

Узкие места в производстве, менеджменте и жизни — это точки потенциальных улучшений.

Расширение bottleneck даст ощутимый прирост производительности и эффективности.

А не обращать внимания на ограничивающие элементы системы — значит недополучать прибыль и работать хуже своих возможностей.

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

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

Любой начальник производства регулярно задается вопросом «Сможет ли он сделать все запланированные заказы в срок . Достаточно ли для этого производственных мощностей предприятия? Насколько напряженной предполагается работа в этом плановом периоде?»

В данном ролике будут продемонстрированы модули системы TCS , позволяющие, во-первых, рассчитать и проанализировать объёмные показатели загрузки оборудования в интересующий временной период, а во-вторых, визуализировать календарный план производства в виде диаграммы Ганта с одновременным отображением загрузки интересующего оборудования.

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

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

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

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

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

Итак, самая ранняя дата запуска партии – 18 февраля, самая поздняя дата выпуска – 23 марта 2010 года.

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

Также, в системе TCS ведется информация о станочном парке предприятия, т.е. реальном количестве каждой модели оборудования и их наличие в подразделениях. Например, у нас на первом участке седьмого цеха расположены пресс Amada и пресс FINN-POWER, на втором участке оборудование для сварки, на третьем столы для сборки и контроля.

Для оценки выполнимости данного плана используем модуль "" системы TCS . Установим даты начала и конца периода, в который предполагается выполнять запланированные работы, а именно 18 февраля и 23 марта 2010 года. Выполним расчёт.

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

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

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

Чтобы быстро выявить потенциальные узкие места нашего производственного плана достаточно ввести пороговое значение загрузки . Введем 70%, считая, что оборудование, загрузка которого в плановом периоде превышает 70-80%, составляет так называемую группу риска. Скроем строки с меньшей загрузкой. В нашем примере только гидравлический координатно-револьверный пресс FINN-POWER загрузится более чем на 70%, т.е. для плана на март, он является тем самым узким местом.

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

Изучим, на какое оборудование также следует обратить особое внимание. Вводим пороговое значение 50% и просто раскрасим такие строки в выбранный цвет. К FINN-POWER добавился листогибочный пресс Amada , его расчётная загрузка составляет 57%. Все остальные цеха и оборудование в них загружены не так сильно и, скорее всего, не потребуют к себе повышенного внимания плановика.

Таким образом, используя модуль "", можно сделать следующие выводы:

Осуществим или не осуществим, принципиально, наш план. Критерием этой оценки будет превышение 100% загрузки по какой-либо модели. Если где-то загрузка более 100%, то не помогут никакие современные методы оптимизации производственного расписания. В этом случае надо увеличивать фонд работы оборудования, т.е. либо увеличивать временной период, либо нанимать дополнительный персонал, который будет трудиться во вторую смену, либо запускать рядом второй экземпляр оборудования.
План нашего примера не имеет ни одной позиции, у которой значение загрузки превышало бы 100%. Значит, по крайней мере, теоретически, заданный объём работ возможно выполнить в установленные сроки на имеющемся оборудовании. Осуществим или не осуществим план в реалиях нашего производства. Данная оценка также позволяет сделать вывод о выполнимости представленного плана, но не теоретически, как первая, а ближе к жизни и индивидуальным особенностям каждого производства. Например, очевидно, что загрузка оборудования в 99%, позволит выполнить план, только при условиях работы без сбоев, задержек и простоев, когда все системы продублированы и на предприятии работают роботы. В реальности же сбои и задержки регулярно случаются по разным причинам. То материал во время не привезли, то станок не наладили, то рабочий заболел, то авария в электросети и т.д. и т.п. Поэтому на каждом предприятии, даже для разных цехов и участков этого предприятия или разного вида работ этот критерий имеет различное значение. Например, для одного участка критической считается загрузка в 80%, а для другого – 60%.
Т.е. для каждого типа работ или участка можно выполнить сравнение с соответствующим индивидуальным пороговым значением, которое опытным плановикам обычно известно из практики. Соответствует ли структура существующего на предприятии станочного парка производственной программе. Такой вывод будет особенно полезен для предприятий, имеющих стабильную производственную программу, т.е. производственный план которых можно построить заранее, и он не подвержен сильным изменениям из месяца в месяц.
В нашем примере большинство моделей оборудования не загружено и на 40%, в то время как загрузка пресса FINN-POWER достигает критического значения. Если бы подобное положение дел имело место в серийном производстве, то для увеличения объема производства, нам следовало бы купить в первую очередь именно заготовительное оборудование.

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

Реальная мощность - максимальный объем выпуска с учетом состояния оборудования, поломок и ремонтов, процента брака, процента выполнения норм выработки, потерь рабочего времени.

Варианты оценки мощностей применяются для различных задач в разных ситуациях (см. таблицу 1).

Таблица 1.

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

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

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

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

Ограничения - внутренние и внешние.

Внутренние:

  • ограничения по оборудованию - по полезному фонду времени работы оборудования.
  • ограничения по персоналу - по численности и профессиональному составу основных и вспомогательных рабочих.
  • ограничения по рынку.

1.3.Информационная база

Для оценки производственных возможностей необходима информация (см. таблицу 2):

Таблица 2.

Информация Назначение информации Документ \ источник информации
Состав продукции (ассортимент) Определение укрупненного ассортимента (наиболее распространенных видов продукции)
Плановое количество продукции Проведение расчета: определение фонда времени работы оборудования на весь плановый объем выпуска Годовой (месячный) план выпуска (продаж) \ планово-экономические (финансово-экономические) службы
Перечень оборудования по цехам: заготовительное, механообработка, сборочное и др. Количество оборудования каждого вида. Агрегирование в группы Ведомость, перечень, список и т.п.\ Отдел главного технолога, отдел оборудования; при отсутствии - бухгалтерия.
Нормо-часы работы оборудования на единицу продукции Определение фонда времени работы оборудования Утвержденные нормо-часы \ ОГТ
Коэффициент выполнения норм выработки Корректировка фонда времени работы оборудования с учетом коэффициента выполнения норм выработки Коэффициенты выполнения норм выработки \ ОГТ + ОТиЗ
Фактический и плановый баланс рабочего времени Определение потребности в персонале с учетом потерь рабочего времени План-отчет по использованию фонда рабочего времени \ ОТиЗ

2. Методика расчета

2.1. Этапы

Схема оценки производственных возможностей

2.2. Этап 1 - сбор информации

Нормо-часы станочного времени, получаемые от ОГТ, должны учитывать: состояние оборудование, коэффициент выполнения норм выработки.

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

2.3. Этап 2 - оценка ограничений по оборудованию и персоналу

По оборудованию

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

    21день*12месяцев*16час*0.8*кол-во единиц оборудования,

где 21 день - среднее число рабочих дней в месяце,
16 час - режим работы в 2 смены, приемлемость режима 24 часа оговаривается с ОГТ и ПДО; возможны варианты - 2 смены по 12 часов.
0.8 - поправка на время начала-окончания работ, на время в ремонте. Оценка является экспертной, согласуется с ОГТ.

Затем полезный фонд времени оценивается с учетом количества оборудования.

Итоговая таблица должна содержать информацию (см. таблицу 3):

таблица 3.

Наименование оборудования
Показатели Цех Ток вц 200 Ток вц 300 Ток с ЧПУ Раст диам шп до 125 мм Раст диам шп св 125 мм
10 12 7 9 2
Кол-во установленного оборудования (ед) 7 4 1
Кол-во установленного оборудования (ед) 5
Кол-во установленного оборудования (ед) 3 3 2 4 3
Кол-во установленного оборудования (ед) 2 14 12 20 7 6
33 22 33 9 9
Фонд врем. В 2 смены цех 10 10 40643 23708 29567 6774 0
Фонд врем. В 2 смены цех 7 7 13548 3387 0 0 0
Фонд врем. В 2 смены цех 5 5 0 0 0 0 0
Фонд врем. В 2 смены цех 3 3 10161 6774 13141 0 10161
Фонд врем. В 2 смены цех 2 2 47416 40643 65705 23708 20321
Всего фонд времени 111767 74511 108414 30482 30482

По персоналу

а) по численности и фонду времени

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

  1. Фактическая численность рабочих трансформируется в полезный фонд рабочего времени как: численность*8часов*21день*12месяцев (в нормо-часах).
  2. Сумма нормо-часов корректируются на поправочный коэффициент с учетом баланса рабочего времени (планового или фактического).

Расчет поправочного коэффициента:

[полезный фонд рабочего времени (час)] + [предпраздничные сокращенные дни (час)] + [внутрисменные простои (час)] = [бюджет рабочего времени (час)] ;

[бюджет рабочего времени (час)] / [продолжительность смены (8 час)] = [явочный фонд рабочего времени (дни)];

[явочный фонд рабочего времени (дни)] + [неявки на работу (дни)] = [номинальный фонд рабочего времени (дни)];

[номинальный фонд рабочего времени (дни)] / [полезный фонд рабочего времени (дни)] = поправочный коэффициент.

    Пример 1.
    Плановый полезный фонд времени 1 рабочего составляет 3024 часа (12часов*21день*12месяцев, где продолжительность смены 12 часов) .

    Соотношение номинального и полезного фонда времени составляет 1,19 (для примера). Плановый фонд времени с учетом потерь составляет 3586 часов (3024*1,19) .
    Необходимая численность с учетом потерь времени 1,19 рабочего при работе по 12 часов (3586часов/12месяцев/21день/12часов) или 1 рабочий при работе по 14 часов (3586часов/12месяцев/21день/14часов) .

б) по фонду времени с учетом профессионального состава

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

Таблица 4.

Профессии Продукция (например, станок)
Цех № 1 Цех № 2
н/ч Числ план Числ факт н/ч числ план Числ факт
Токари 129,5 1 59 0,3
Токари ЧПУ 6,6 7
Фрезеровщики 76,1 0,4 27,4
Сверловщики 33,8 0,2 31,8
Расточники 9 0,1
Долбежники 1,4
Зуборезные 15 0,1
Зубошлифовальные 3,4
Итого 379,3 2,4 238 0,3

Итоги подводятся в расчете на изделие - по группам профессий рассчитывается сумма нормо-часов и плановая численность (в примере итог должен быть рассчитан по строке).

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

в) оценка структурного дефицита

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

-27=-81167/12/21/12 (условия 12-часовой смены)
24=81167/3387
, где 3387 часов - полезный фонд времени работы 1 станка.

Итог первого этапа расчета - реальная мощность

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

Таблица 5.

Оборудование Полезный фонд времени работы оборудования Реальный фонд времени работы персонала (с учетом потерь) Итоговый фонд времени
Ток вц 200 111 767 69 927 69 927
Ток вц 300 74 511 57 697 57 697
Ток вц 500 57 577 31 989 31 989
Ток с ЧПУ 108 414 53 564 53 564
Ток карус 27 095 27 095 27 095
Ток револв 6 774 7 112 6 774
Коорд раст 10 161 3 696 3 696
Гориз раст 10 161 539 539
Прод строг 3387
Итого 470 810 318 511 301 898

2.4. Этап 3 - оценка альтернативных производственных программ с учетом узких мест

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

Допущения

  1. Основным допущением является выход за границы предметно-замкнутого производства, то есть поправочный коэффициент (см. п.2.3., в примере - 0,8) должен предусматривать затраты времени на переналадку оборудования.
  2. Оценка возможностей первоначально производится без учета ограничений по рынку.
  3. Принято условно, что доля станочного времени, направляемая на производство запасных частей для оборудования, составляет 20%.

Постановка задачи представляется в формализованном виде:

Где:
X i - количество изделия i.
a i,j - норма станочного времени на изготовление изделия i на оборудовании j
b j - общий фонд времени работы оборудования j

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

3) Допущение относительно запасных частей достаточно условно, необходим сбор информации о трудоемкости изготовления запчастей (в нормо-часах станочного времени и в трудоемкости персонала). Кроме того, необходимо формирование базы данных об объемах производства и продаж запчастей, что позволит произвести их группировку. Основаниями группировки могут быть: наиболее "продаваемые" запчасти, сходные по трудоемкости, по маршрутам изготовления и т.д. Формирование базы данных по запчастям обеспечит более точное планирование.

Итог расчета

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

    Пример. Расчет по станку СБШ

    Номенклатура выпускаемой продукции Цех Ток вц 200 Ток вц 300 Ток вц 500 Ток с ЧПУ Ток карус Ток револв Раст диам шп до 125 мм Раст диам шп св 125 мм
    СБШ 10 180 61,7 58,6 38,2 16,9
    СБШ 7 6,6 0,7
    СБШ 5
    СБШ 2 126,60 196,00 139,20 160,00 183,00 83,30 144,70
    СБШ 5
    СБШ 3 111,6 63,7 13 26 46 30,4 81,7
    Общий фонд времени по СБШ 424,8 322,1 210,8 224,2 229 30,4 100,2 226,4
    З/части цех 10 10 78 38 41 23 0 0 10 0
    З/части цех 7 7 2 0 0 0 0 0 0 0
    З/части цех 5 5 0 0 0 0 0 0 0 0
    З/части цех 3 3 67 38 8 16 28 18 0 49
    Запчасти цех 2 2 38 59 42 48 55 0 25 43
    Кол-во установленного оборудования ВСЕГО (ед) 33 22 17 33 8 2 9 9
    Всего фонд времени 111771 74514 57579 108418 27096 6774 30483 30483
    Итого количество станков 183 163 191 349 87 139 226 96

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

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

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

Время загрузки оборудования Таблица 6.

СБШ (Цех 10) СБШ (Цех 7) СБШ (Цех 5) СБШ (Цех 2) З/части цех 3 Запчасти цех 2
Оборудование \ кол-во продукции 30 30 30 30 20 20 Итого время загрузки Ограничения Общий фонд времени
Ток вц 200 180 6,6 126,60 1,64 11,54 69 927 111 767
Ток вц 300 61,7 0,7 196,00 1,24 2,12 57 697 74 511
Ток вц 500 58,6 139,20 1,66 0,18 31 989 57 577
Раст диам шп до 125 мм 16,9 83,30 0 1,94 30 468 30 482
Раст диам шп св 125 мм 144,70 1,36 2,92 23 524 30 482
Коорд раст 23 0 0 3 696 10 161
Гориз раст 3,1 1,02 0 539 10 161
Прод фрез 23 120,80 0,5 1,32 27 087 27 095
Верт гор фрез 35,1 9,2 220,40 0,86 2,16 51 771 104 993
Трубонарезн. 0 0 0 20 321
Попер строг 0,32 0 33 3 387
Прод строг 0,6 0 0 84 3 387
Итого 487 917 54,98% 887 396

2.5. Этап 4 - оценка альтернативных производственных программ с учетом узких мест и ограничений по рынку

Оценка ограничений по рынку определяется по каждой группе продукции совместно с отделом маркетинга.

Целевая функция при этом - максимизация маржинальной прибыли.

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

Итог расчета

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

Таблица 7

Маржинальная прибыль - 258 234 (тыс.руб.)


Оборудование
Ток вц 200 180 65,2 67,2 19,9 8,2 0,10 50,00 80,14
Ток вц 300 61,7 22,83 33,4 9,8 6,2 7,30 32,126
Трубонарезн. 0
Попер строг 1,6 0
Прод строг 0

Расчет оптимального выпуска позволяет определить величину загрузки оборудования на программу и, соответственно, выявить "лишнее" оборудование (см.табл.8).

Таблица 8

Оборудование Время работы оборудования (час) Ограничения Общий фонд времени (час) Всего оборудования (ед) Излишек\Дефицит оборудования
Ток вц 200 61 171 111 767 33 14
Ток вц 300 41 555 74 511 22 9
Трубонарезн. 0 20 321 6 6
Попер строг 301 3 387 1 0
Прод строг 45 3386,88 1 0
Ограничения по количеству 410 852 47,76% 860 268 263 115

Расшивка узких мест

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

Расшивка узких мест производится путем определения минимальных отклонений между ограничениями по фонду времени и расчетным (оптимальным) временем загрузки, например:

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

3. Типовые задачи, в которых применяется оценка производственных возможностей

3.1. Составная часть оценки бизнеса

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

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

Наиболее часто применяемыми видами (стандартами) стоимости, отражающими источники образования дохода, являются:

Обоснованная рыночная стоимость.

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

Инвестиционная стоимость.

Это обоснованная стоимость предприятия для конкретного или предполагаемого владельца. Учитывает прирост прибыли от использования ноу-хау, планов реорганизации и др. предполагаемого владельца.

Ликвидационная стоимость.

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

Помимо стандартов стоимости применяются стандарты оценки: рыночный, доходный, на основе активов. Можно сформировать матрицу стандартов "стоимость-оценка", в которой будет позиционироваться методика оценки производственных возможностей.

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

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

Укрупненная схема оценки стоимости бизнеса

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

Сценарии

1. сохранение динамики объемов производства, структуры ассортимента, величины расходов на ремонт оборудования;
2. максимальная загрузка производства с учетом ограничений по рынку с вариантами:

    2.1. максимальный выпуск сочетается с ростом расходов на ремонт оборудования
    2.2. стабильный уровень расходов на ремонт, постепенное выбытие оборудования, сокращение выпуска
    2.3. инвестиции в замену оборудования, стабильный или растущий выпуск.

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

Задачам оценки бизнеса с точки зрения доходного подхода близки задачи стратегического планирования. Аналогично методика оценки производственных возможностей может применяться и в стратегическом планировании.

3.2. Стратегическое бизнес-планирование, перспективное планирование

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

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

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

Методика апробирована на машиностроительном предприятии.

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

  1. Произведена ревизия норм станочного времени, не менявшихся в течении 10 лет. Нормы пересмотрены и вновь утверждены. Пересмотр норм произведен с учетом состояния оборудования.
  2. Разработаны нормы трудоемкости в профессиональной и поцеховой разбивке в расчете на конкретные изделия. Подобные нормы ранее отсутствовали, предприятие признало целесообразность создания и поддержания в актуальном состоянии такой базы.

Сноски

1 См. определения: Р.Стивенсон "Управление производством"- М.: - Бином.-1999. - с. 226.

2 См. определения: Н.И.Новицкий "Организация производства на предприятиях"- М.: -Финансы и статистика.-2001. - с. 89.

3 См. определения Савицкая Г.В. Анализ хозяйственной деятельности предприятия. Минск.-ООО "Новое знание".2001. - с..384.

4 Для расчета можно использовать программу "What"sBest!" (модель "Prodmix", адрес http://www.lindo.com/licwbf.html).

5 Более подробно см., например, 1) "Экономические аспекты оценки стоимости и эксплуатации недвижимости и действующего бизнеса на основе доходного подхода" Ю.Козырь.- ., 2) "Введение в оценку стоимости бизнеса" В.Павловец.- , 3) "О методологии оценки ОАО "Мосэнерго" и полученных результатах" - Независимый экспертно-оценочный центр. -

Руководитель направления производственных решений, СофтБаланс

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

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

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

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

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

Борьба с просроченными заказами на производстве - пожалуй, основная проблема любого завода. «У нас слишком много заказов, поэтому мы не успеваем » - основное объяснение, которое можно слышать от менеджеров по производству. Так ли это? В большинстве случаев при детальном анализе бизнес-процессов того или иного производственного предприятия мы видим, что ключевая проблема - не в повышенной загрузке («коммерческий департамент заключил слишком много контрактов ») и не в автоматизированной системе (когда ее вообще нет или когда «система не работает »), а - в рациональном планировании производства до уровня конкретного станка .

«Узкие места» и их роль в рациональном планировании производства

Первый шаг в решении проблем пропускной способности производства - это найти «узкие места » (англ. - «bottleneck», дословно - «бутылочное горлышко»). Согласно Голдратту, под «узким местом» понимается рабочий центр (станок, рабочее место, линия), пропускная способность которого меньше или равна потребности в нем со стороны запросов рынка (выраженной, например, в объеме текущего портфеля заказов). В 90% производств есть такие рабочие центры. В зависимости от специфики той или иной отрасли, это могут быть как рабочие места ручной обработки, так и самые современные станки с ЧПУ.

Главный признак «узкого места» - это сравнительно большие очереди деталей и полуфабрикатов на входе станка или рабочего места. «Перед какими станками самая длинная очередь деталей и полуфабрикатов? На каком этапе производственного цикла наблюдается максимальное время пролеживания? Между какими точками маршрута наблюдается максимальный остаток незавершенного производства? » - ответив на эти вопросы, мы приблизимся к определению «узких мест» на производстве. Вычислив такие рабочие центры, можно приступать к следующему шагу - эффективному производственному менеджменту, основанному на посменном планировании «от узких мест» .

Минимизация - «узких мест» на производстве может обеспечиваться следующими организационными мероприятиями:

  • Метод предварительного планирования

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

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

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

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

Рисунок 1.

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

  • Использование приоритетов заказов. Цветовая маркировка партий и штрихкодирование

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

Рисунок 2.

Приоритеты заказов, назначенные коммерческим отделом или начальником производства (в зависимости от специфики бизнес-процессов), - влияют на визуальную маркировку всех материалов и полуфабрикатов (деталей и сборочных единиц - ДСЕ), которая - в дальнейшем становится ориентиром - приоритетности обработки для рабочих на всем маршруте производства.

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

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

  • код и наименование полуфабриката;
  • код и наименование конечной продукции;
  • номер и статус заказа;
  • код подразделения и обрабатывающего рабочего центра;
  • плановое время подачи на обрабатывающий рабочий центр.

Таким образом, при выпуске сменных заданий в системе посменного планирования (как правило - часть MES-системы, от англ. «Manufacturing Enterprise Solution»), оператор системы (или, как вариант, диспетчер) одновременно выпускает этикетки на продукцию, получаемую на конкретном рассматриваемом рабочем центре. По завершении изготовления деталей первого передела, этикетка крепится к детали, и все ее дальнейшие перемещения по маршруту производства отмечаются на рабочем месте учета движения материальных потоков, имеющем сканер штрихкода (СШК).

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

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

Детальное посменное планирование. Общая концепция

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

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

  • Объемно-календарные (стратегические) планы производства;
  • План выпуска по заказам;
  • Индивидуальные внеплановые выпуски продукции;

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

НСИ для посменного планирования состоит из двух разделов:

  • Нормативный состав изделия;
  • Технология изготовления.

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

Помимо данных планов, графика работы оборудования и НСИ, современная система посменного планирования также использует в качестве входной информации время переналадки и учитывает плановых ремонтов и обслуживания. Общая схема входной информации, используемой системой посменного планирования, представлена ниже:

Рисунок 3

Общий алгоритм формирования посменных планов

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

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

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

  • Максимальная мощность грузопотока (объем перерабатываемых ТМЦ в единицу времени в натуральных показателях).
  • Минимизация времени переналадки.
  • Минимизация времени транспортировки (между рабочими центрами и подразделениями).
  • По приоритетам заказов.

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

  • FCFS (first come, first served - «первой поступила, первой обслужена»);
  • LCFS (last come, first served - «последней поступила, первой обслужена»);
  • SPT (shortest processing time - выбор в первую очередь коротких операций);
  • LPT (longest processing time - выбор в первую очередь длительных операций);
  • STPT (shortest total processing time remaining - выбор операций в порядке, обратном оставшемуся времени исполнения маршрута);
  • EDD (earliest due date - выбор операции с наиболее ранним сроком выполнения);
  • STR/OP (slack time remaining per operation - первыми выполняются операции маршрутов с наименьшим запасом времени в расчете на одну операцию);
  • CR (critical ratio - первыми выполняются операции маршрутов с наименьшим критическим отношением, рассчитываемым по формуле:

ВремяДоЗавершенияМаршрута / ДлительностьОперацийМаршрута)

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

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

Заключение

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

В данной статье тезисно приведены основные возможности систем посменного планирования (как правило - входящих в состав MES-систем) без привязки к конкретному разработчику или решению - для того, чтобы на уровне концепции показать важность подхода, как базы для автоматизации. Каким бы ни был объект автоматизации - сама система посменного планирования всегда остается инструментом в достижении конечной цели производственного предприятия. А конечная цель производственного предприятия - это приносить прибыль (Элияху Голдратт, бизнес-роман «Цель», 1984г.).



error: Content is protected !!