Пытаюсь оптимизировать следующую задачку: Есть коробка с определённым размером (например, 40х50х30 (см)), в которую упаковываются коробки поменьше (например, 7х18х4 (см)). Необходимо определить сколько максимально поместится маленьких коробок в большую коробку. Очевидно, что при решении задачи "в лоб" (делением длины, ширины и высоты большой и малой коробки, соответственно) получим неоптимальное решение: поместится 70 маленьких коробок в полупустой большой; если же расположить маленькие коробки поперек большой, то влезет уже 98 коробок, что намного эффективнее. (Файл с примером приложил).
Если есть какие-либо идеи, то буду рад послушать. Заранее спасибо!
Уже после того, как написал, понял, что можно в формулу добавить все варианты деления размеров большой коробки на малую и выбрать максимальное произведение. Но.. нет ли более элегантного решения?
У Вас результат получился всего 98, меня просто при ручной раскладке 114 (если можно крутить маленькие коробки и не заморачиваться с количеством комбинаций) - первый ряд: - сторона 40 - 10х4; сторона 50 - 7х7 итого 70 шт - второй ряд (высота остаток от первого ряда 12) сторона - 40 - 18х2; сторона 50 - 7х7; в высоту 4х3 итого 2х7х3 = 42 - в оставшееся расстояние по стороне 40 (40-18х2) войдет ешё две коробки итого 70 + 42 + 2 = 114
Благодарю, друзья! Все три варианта рабочие. msi2102, моя вина, не уточнил, что раскладка должна быть одинаковой для всех маленьких коробок, такое уж требование фасовки..( Но эффективность наполнения значительно выше у Вас, надо будет подумать как бы это внедрить с технической стороны. И как теперь для каждой позиции такое просчитать автоматически
Я тут немного побаловался. Сделал многослойную загрузку коробки. Позволяет максимально загрузить один слой, потом с поворотом коробочек второй слой и с новым поворотом третью порцию. Пока не разбирался, как полностью оптимизировать. Сделал, чтобы можно было на выбор в каждом слое воспользоваться одним из двух алгоритмов оптимизации. Значения от 0 до 7. Можно сделать четвёртый слой, формулы протягиваемые, но встретится ли такая комбинация, неизвестно. Если оставить 0, то покажет оптимальную загрузку при одинаковом расположении коробочек.