Странная, но практичная оптимизация упаковки в бункер
Я пытаюсь написать приложение, которое генерирует рисунок для разделенной панели.
У меня есть N ячеек (2D прямоугольники) (N <= 40) Для каждой ячейки существует минимальная высота (minHeight [i]) и минимальная ширина (minWidth [i]). Сама панель также имеет ограничение MAXIMUM_HEIGHT.
Эти N ячеек должны быть расположены в сетке по столбцам так, чтобы вышеуказанные ограничения выполнялись для каждой ячейки.
Кроме того, ширина каждого столбца определяется максимальным значением minWidths каждого блока в этом столбце.
Кроме того, высота каждого столбца должна быть одинаковой. Это решает высоту панели
Мы можем добавить запасные ячейки в пустое пространство, оставленное в любом столбце, или мы можем увеличить высоту / ширину любой ячейки сверх указанного минимума. Однако мы не можем вращать ни одну из ячеек.
OBJECTIVE: TO MINIMIZE TOTAL PANEL WIDTH.
В настоящее время я реализовал это, просто игнорируя ширину ячеек в моей оптимизации. Я просто выбираю ячейку с наибольшим значением minHeight и пытаюсь разместить ее на своей панели. Однако это не гарантирует оптимального решения.
Могу ли я стать лучше, чем это?
EDIT 1: MAXIMUM_HEIGHT панели = 2100 мм, диапазон минимальной ширины (от 350 до 800 мм), диапазон минимальной высоты (от 225 до 2100 мм)
РЕДАКТИРОВАТЬ 2: ЗАДАЧА ЗАДАЧИ: МИНИМИЗИРОВАТЬ ШИРИНУ ПАНЕЛИ (не области панели) .I '