2009-07-23 9 views
16

Quindi mi è stato assegnato il compito di creare un modulo di spedizione per un sistema di webshop. Potrebbe essere un po 'eccessivo, ma mi piacerebbe davvero crearne uno in grado di capire come imballare i pacchi nel modo più ottimizzato. Avendo imparato la programmazione semplicemente facendolo, questo è un settore in cui non ho alcuna conoscenza - ancora! Ad ogni modo posso solo dare una breve descrizione del problema reale.Come creare una funzione di pacchettizzazione ottimizzata in python?

Così, quando gli utenti utilizzano roba nei negozi online, avranno prodotti x nel loro carrello con dimensioni e peso variabili. Quindi voglio dare quell'elenco di prodotti alla funzione e far capire come questi prodotti dovrebbero essere confezionati in pacchi.

  • lunghezza massima di pacchi: larghezza 100
  • massimo delle parcelle: altezza 50
  • massimo delle parcelle: peso 50
  • massimo delle parcelle: 20

Ogni prodotto ha un peso , lunghezza, larghezza e altezza pure.

Poiché pacchi e prodotti sono fondamentalmente scatole, immagino che sarebbe piuttosto complesso, poiché ci sono diversi modi per inserire i prodotti all'interno del pacco. Il mio obiettivo non è quello di realizzare la perfetta funzione di impacchettamento, ma mi piacerebbe fare qualcosa di meglio che mettere semplicemente i prodotti all'interno del pacco fino a quando non si raggiunge un limite.

Ora, non mi aspetto che voi ragazzi lo facciate per me, ma quello che vorrei chiedere sono tre cose.

  1. Dove posso trovare buone risorse online che mi insegnino le basi necessarie?
  2. Esistono alcuni strumenti Python nativi che potrebbero essere utili?
  3. Alcune indicazioni di quello che ho bisogno di essere a conoscenza di, trappole ecc

Come ho detto, non ho intenzione per questo di essere perfetto e il 100% ottimizzata, ma vorrei finire con qualcosa quello verrà vicino Mi dispiacerebbe se gli utenti sentissero che la commissione di spedizione sarebbe molto più alta di quanto sia effettivamente.

+0

Wow - è necessario per risolvere un problema di zaino per il vostro giorno di lavoro? Ti invidio :-) –

risposta

5

Il fatto che tu abbia altezza, lunghezza e larghezza rende più difficile di un semplice problema con lo zaino. Ecco una discussione interessante su un 3D knapsack problem.

Ecco uno paper on the topic degli stessi ragazzi.

6

Questo è il tipico knapsack problem. Molte soluzioni per diverse lingue sono disponibili al Rosetta Code.

+0

Non è vero? Il problema dello zaino specifica che hai un contenitore della dimensione di x, e devi adattare gli elementi per massimizzare la somma della proprietà dell'oggetto y. Ciò che Googletorp vuole è come imballarlo nel modo più efficace, incluso il posizionamento degli articoli. – Yacoby

+0

È stata una lettura interessante, ma non risolverà esattamente quello che sto guardando, poiché guarda solo al volume. Dati 7 prodotti che sono 51x26x26, sarei in grado di adattarli solo a uno di quelli in un pacco, ma usando il calcolo del volume tutti i 7 si adatterebbero in un pacco. – googletorp

+1

Ok, il problema dello "zaino" tipico ha solo una dimensione (volume). Il problema illustrato qui avrebbe quattro dimensioni, tre per lo spazio e una per il peso. Questo è ancora il problema dello zaino, solo un po 'più complicato. – Bombe

2

Questo sembra un buon problema a cui applicare the simplex algorithm o una sorta di genetic algorithm. Se non hai mai sentito parlare di quest'ultimo, ti consiglio vivamente di leggere su di loro. Come posso vedere dalla tua domanda, stai facendo questo miglioramento perché ti piace far funzionare le cose in modo ottimale, e non perché ti è stato detto di farlo. Immagina quando dici che hai applicato una tecnica di Intelligenza Artificiale per risolvere il loro problema!

Ci sono molti algoritmi semplici che risolvono il problema, ma questa può essere una grande opportunità per imparare un calcolo evolutivo. Alcuni link interessanti su algoritmi genetici [tutti, sentitevi liberi di modificare e aggiungere]:

  1. These pages introduce some fundamentals of genetic algorithms.
  2. Genetic Algorithms in Plain English

fortuna con quello!
Manuel

+0

Non sono sicuro del motivo per cui si preoccuperebbe di usare un algoritmo genetico, poiché esistono algoritmi migliori che sono più adatti alla sua situazione particolare. – pg1989

0

Questa una vecchia questione, ma solo nel caso in cui qualcuno inciampa su questo ... c'è libreria Python chiamato pyshipping che risolve questo problema:

https://pypi.python.org/pypi/pyShipping

Problemi correlati