Еще в первый год работы в «Симботике» я придумал невероятно сложный, но очень элегантный математический алгоритм, который планировал красивые и устойчивые палеты, собранные из коробок разной длины, ширины и высоты: квадратных и прямоугольных, широких и плоских, высоких и узких. Все они эффективно укладывались на свои места. Я также руководил небольшой командой, превратившей этот алгоритм в рабочий код для нашего первого автоматизированного склада в Ньюбурге. Фактически это спасло еще совсем молодую компанию, когда в ее пилотном проекте, на том самом складе в Ньюбурге, все шло наперекосяк. Вся система работала на малую долю от запланированной производительности, палеты на выходе (до внедрения моего алгоритма) были маленькими и корявыми, и компания вот-вот могла остаться без финансирования. Успешное внедрение нового алгоритма палетизации убедило Рика, главного спонсора и владельца компании (также прибывшего в этот августовский день с визитом на склад «Кока-Колы»), что проект не безнадежен. Следующие два проекта не требовали палетизации, и эта тема на несколько лет ушла на второй план. Я занимался другими задачами, связанными с нашей системой следующего поколения.
Когда же мы подписали контракт с «Кока-Колой» в 2015 г., построение палет на отгрузку в магазины вновь стало одной из важнейших компонент автоматизации. Но софтвер для планов палет теперь делали другие люди. Предполагалось, что они будут опираться на мои алгоритмы, но перепишут софтвер с нуля и на другом языке – C# (в отличие от C++ в первоначальном варианте). И еще добавят множество деталей, актуальных для новых автоматизированных систем «Симботика», а также специфичных для упаковок напитков, проходивших через склады «Кока-Колы».
Результат пока что ужасал. Это была пародия на тот алгоритм, который я сделал пять лет назад и который очень хорошо работал в Ньюбурге. Было больно смотреть на уродцев, вылезавших из палетизационной ячейки. Иной раз, когда робот подхватывал большую коробку, чтобы положить ее на палету, замирало сердце. Это было почти лотереей: куда он поставит ее сейчас? Интуитивно угадывалось наиболее подходящее место – пустой угол или зияющее пространство между двумя упаковками. Но предательский ухват робота взмывал выше и водружал свою ношу поверх другой коробки, вместо намного более логичного места рядом с ней. Очередной прокол. Нижнее пространство оставалось пустым, а сверху нарастала шаткая пирамида из упаковок. И рядом с ней – другая пирамида, отделенная от первой узкой улочкой, как в средневековом городе. Если это нагромождение в целости и сохранности выйдет из палетизационной ячейки, покачиваясь неустойчивыми стенами из упаковок с тяжелыми бутылками, – это уже можно будет считать удачей. Но опасность подстерегала палету и дальше. Она могла обрушиться на цепном конвейере по пути от ячейки до вилочного погрузчика и на вилочном погрузчике по пути в фуру. Или внутри фуры по пути в магазин. По прибытии в магазин это заставит чертыхаться как приемщика, не получившего заказанный товар в сохранности, так и водителя фуры, которому придется вычищать хлам из лопнувших банок и бутылок и отмывать пол от чавкающей липкой жидкости.
Операторы погрузчиков, видя на своих вилках очередную неустойчивую, готовую завалиться набок палету, морщились и ругались: им предстояло вручную поправлять ее, а за эту работу им не доплачивали. Они отвозили палету в сторону, разрезали верхнюю часть стягивающей пленки, переставляли коробки на пустые места пониже, подгоняли их плотнее друг к другу, впихивали внутрь те, что торчали наружу, и затем вручную заматывали верх палеты такой же пленкой, какую использовал оборачивающий автомат внутри ячейки.