Как создать оптимизированную функцию упаковки в python?

Поэтому мне была поручена задача создания модуля доставки для интернет-системы. Это может быть немного перебор, но я бы очень хотел создать тот, который может определить, как пакет пакетов по наиболее оптимизированному пути. Изучив программирование, просто сделав это, это область, в которой я еще не знаю. В любом случае я могу просто дать краткое описание реальной проблемы.

Поэтому, когда пользователи по материалам на веб-сайтах будут иметь x продуктов в своей корзине с различными размерами и весом. Поэтому я хочу предоставить этот список продуктов функции и дать понять, как эти продукты должны быть упакованы в пакеты (ы).

  • максимальная длина посылки: 100
  • максимальная ширина посылки: 50
  • максимальная высота посылки: 50
  • максимальный вес посылки: 20

Каждый продукт имеет вес, длину, ширину и высоту.

Поскольку посылки и продукты - это в основном ящики, я предполагаю, что это будет довольно сложно, так как есть разные способы размещения продуктов внутри пакета. Моя цель не в том, чтобы сделать идеальную функцию упаковки, но я хотел бы сделать что-то лучше, чем просто поместить продукты внутри пакета, пока не будет достигнут предел.

Теперь я не ожидаю, что вы, ребята, сделаете это для меня, но то, что я хотел бы спросить, - это три вещи.

  • Где я могу найти хорошие онлайн-ресурсы, которые научат меня основам, необходимым?
  • Есть ли какие-нибудь встроенные инструменты python, которые будут полезны?
  • Некоторые указатели на то, что мне нужно знать, подводные камни и т.д.

Как я уже сказал, я не планирую, чтобы это было идеально и 100% оптимизировано, но я хотел бы закончить что-то, что будет близко. Я бы не хотел, если пользователи почувствуют, что плата за отправку будет намного выше, чем она есть.

Ответы

Ответ 1

Тот факт, что у вас есть высота, длина и ширина, усложняет задачу простого рюкзака. Здесь интересное обсуждение проблемы 3D-рюкзака.

Здесь бумага по теме теми же парнями.

Ответ 3

Это кажется хорошей проблемой для применения симплекс-алгоритма или своего рода генетический алгоритм. Если вы никогда не слышали о последнем, я настоятельно рекомендую вам прочитать о них. Как я вижу из вашего вопроса, вы делаете это улучшение, потому что вам нравится делать вещи оптимально, а не потому, что вам сказали это сделать. Представьте, когда вы скажете им, что вы применили метод искусственного интеллекта для решения своей проблемы!

Существует много алгоритмов прямой перемотки, которые решают вашу проблему, но это может стать отличной возможностью для изучения эволюционных вычислений. Некоторые интересные ссылки о генетических алгоритмах [все, не стесняйтесь редактировать и добавлять]:

Удача с этим!
Manuel