Jak utworzyć zoptymalizowaną funkcję pakowania w Pythonie?

Otrzymałem zadanie stworzenia modułu wysyłkowego dla systemu sklepu internetowego. Może to być trochę przesadzone, ale naprawdę chciałbym stworzyć taki, który może dowiedzieć się, jak spakować paczki w najbardziej zoptymalizowany sposób. Po nauce programowania po prostu robiąc to, jest to obszar, w którym nie mam jeszcze wiedzy - jeszcze! W każdym razie mogę podać krótki opis rzeczywistego problemu.

Tak więc, gdy użytkownicy w sklepach internetowych będą mieli x produktów w koszyku o różnych rozmiarach i wadze. Chcę więc podać tę listę produktów i pozwolić jej dowiedzieć się, jak te produkty powinny być pakowane w paczkę (i).

maksymalna długość paczki: 100maksymalna szerokość paczki: 50maksymalna wysokość paczki: 50maksymalna waga paczki: 20

Każdy produkt ma również wagę, długość, szerokość i wysokość.

Ponieważ paczki i produkty są w zasadzie pudełkami, sądzę, że byłoby to dość skomplikowane, ponieważ istnieją różne sposoby umieszczania produktów w paczce. Moim celem nie jest stworzenie idealnej funkcji pakowania, ale chciałbym zrobić coś lepszego niż tylko wprowadzenie produktów do paczki, aż do osiągnięcia limitu.

Nie oczekuję, że zrobicie to dla mnie, ale chciałbym zapytać o trzy rzeczy.

Gdzie mogę znaleźć dobre zasoby internetowe, które nauczą mnie podstawowych potrzeb?Czy są jakieś rodzime narzędzia Pythona, które byłyby przydatne?Kilka wskazówek na temat tego, co muszę wiedzieć, pułapek itp

Tak jak powiedziałem, nie planuję, aby było to idealne i w 100% zoptymalizowane, ale chciałbym skończyć z czymś, co się zbliży. Nienawidziłbym, gdyby użytkownicy czuli, że opłata za wysyłanie będzie znacznie wyższa niż jest w rzeczywistości.