---
id: planner
title: Планирование
---

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

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

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

- Набор исходных объектов
- Алгоритм входного контроля
- Абстрактный техпроцесс
- Конкретная программа техпроцесса
- Набор финальных объектов
- Алгоритм выходного контроля

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

*  1. Уяснить задачу
      *  1.а Если цель - реализация некоторой функции, то подобрать систему, наилучшим образом реализующую эту функцию с учетом доступных ресурсов и перейти к 1.б. 
      *  1.б Если цель – изделие как таковое, то обеспечить полноту его описания (отсканировать образец, проверить наличие документации, запросить или сгенерировать недостающее) и переходить к п.2
*  2. Выделить и классифицировать компоненты изделия: 
      *  1 Те которые есть (присутствуют на складе и не зарезервированы под другие проекты)
      *  0 Те которых нет 
            *  01 Те что легче купить (так или иначе получить извне), чем сделать. Для некоторых АПС (космических или слишком сиьно ушедших технологически вперед от окружающей среды) эта опция может оказаться недоступной. 
            *  00 Те что легче сделать, чем купить 
                  *  001 Те что можно сделать имеющимися ресурсами 
                  *  000 Те, для изготовления которых нужны дополнительные ТС 
*  3. Пока в стратегии участвуют ресурсы, относящиеся к последнему пункту, вводить в граф дополнительные ТС и выполнять пункт 1.а для них. 
*  4. Составить порядок преобразования ресурсов для получения компонентов категории 00. (то есть, свести все компоненты к ресурсам). 
*  5. Если в стратегии есть ресурсы категории 01, то заказать их.
*  6. Осуществить все намеченные преобразования

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

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

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

Конкретный же алгоритм планирования ресурсов может состоять, например, в следующем:

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

Когда дело доходит до выполнения операций, на их основе раздаются задания контроллерам, например:

- transport(2132, 321) (из ячейки 2132 и поместить в ячейку 321)
- process(233) (выполнить алгоритм тестирования 233 и выдать заключение о годности изделия True или False)
- process(88865) (провести лазерный раскрой согласно файлу)

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

