Я пытаюсь написать приложение, которое создает чертеж для разделенной панели.
У меня есть 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: ЦЕЛЬ ПРОБЛЕМЫ: МИНИМИРОВАТЬ ШИРИНУ ПАНЕЛИ (не панель).