Никто математиков уже давно не упрекает. Одни над ними одни смеются, другие ругают матом.
Представьте себе заводик/фабрику, на которой есть прямоугольный раскрой материала. Задача у них ставится следующим образом: сколько можно сэкономить на отходах и сколько это будет стоить. Для того чтобы вообще что-то произошло, инженер, скажем в течение года, должен собрать информацию, какие были заготовки и как их раскроили. Ну, в крайнем случае, должен вестись учет отходов. Вот эта самая база по фактическому раскрою – исходная точка для начала математических работ. Если собрать данные со 100 заводов/фабрик, то потенциальная сумма получится внушительной - можно основательно потратиться на создание системы оптимизации раскроя, получив хорошие деньги за основательную работу. Буржуи так и делают и даже не в рамках одной корпорации – берите выше, отсюда и зарплаты у ихних ученых.
Вопрос об абсолютном оптимальном раскрое вообще не стоит, так как стоимость необходимого для этого компьютерного оборудования может многократно превзойти саму экономию при раскрое. Суть методов, которые применяются для подобных задач, одинакова: вероятностное снижение основания экспоненты трудоемкости. Хотя число шагов
и
растет экспоненциально с ростом
, но основание
все-таки предпочтительнее основания
.
Обычно ядро решения таких задач содержит в себе метод ветвей и границ и «хренову тучу» суть полиномиальных алгоритмов, применение которых могут снизить основание экспоненты роста. Это и линейное программирование, и «распространение ограничений», и «энергетический критерий» сжатия границ переменных расположения элементов на листе, и «энергопредшествование», и всевозможные эвристики ветвления и быстрого получения хорошего решения, и т.д. Даже задача о рюкзаке может быть прямо применена. Скажем, размеры всех нарезаемых листов кратны 100, а разрезаемый лист 12745x94853. Ясно, можно рассматривать задачу с листом 12700x94800. Этот метод снижения размерности можно обобщить и решать рюкзаком. Метод ветвей и границ, который в каждом узле что-то «химичит» (сжимает значения переменных, находит допустимые решения, добавляет отсекающие ограничения и т.п.) получил название «метода ветвей и отсечений». Никакого противоречия между «точными» и «эвристическими» методами никогда не существовало – все это укладывается в единую схему поиска.
Подлость заключается в том, что используемые полиномиальные алгоритмы не гарантируют экспоненциального снижения сложности, а могут еще и ухудшить трудоемкость. Т.е. будет полный перебор и еще и применение бесполезных полиномиальных алгоритмов, которые ничего не дают. К счастью, вероятность такого сценария минимальна, если проверка алгоритмов делается на реальной базе задач раскроя. Если данные для проверки сделаны генератором – проблемы практически гарантированы. Обычно ядро оптимизации содержит «ключи», позволяющие включать/выключать различные возможности, и подобрать наиболее подходящий и устойчивый вариант поиска наилучшего раскроя в конкретных условиях.
А теперь реальность, связанная с придурками (модератор, сделай мне замечание за правду). Извиняюсь, - с нашими «профессиональными» математиками. [Вырезано самоцензурой] . Инженер c завода/фабрики тоже учился у наших математиков. Разумеется, он сам захочет решить эту задачу, которую в мире (а то и во вселенной!) никто толком решать не умеет. О сборе данных, конечно, даже не позаботится. Очевидно, что ничего хорошего у него не выйдет – слишком сложно. И сам ничего сделать не может, и другим не даст заработать. И так 100 инженеров на всех 100 заводах/фабриках. Лично сталкивался с такой ситуацией: сидит этот инженер, получает зарплату, отвлекает других, меня не пускает на предприятие, а в это время это самое предприятие продолжает нести убытки. Вот так у нас обстоит дело с высокими технологиями и прочим раскроем материала....