L'algoritmo giusto per ottenere una combinazione perfetta

0

Sto lavorando a un progetto di autoapprendimento ma non riesco a trovare una risposta affidabile.

Ecco l'offerta:

Comincio con bastoncini da 500 cm. Ho ordini da clienti che vogliono bastoncini più piccoli. Sono disposto a tagliare il mio stick da 500 cm in ben 7 pezzi.

Come posso determinare quale combinazione di ordini dei clienti utilizzare per ciascuna levetta per ridurre al minimo gli sprechi?

Ecco alcuni esempi di dati dell'ordine cliente:

+-----------+--------+
| Firm Name | Length |
+-----------+--------+
| "firm1",  | 34,    |
| "firm2",  | 43,    |
| "firm3",  | 52,    |
| "firm4",  | 61,    |
| "firm5",  | 62,    |
     ...
| "firm26", | 102,   |
| "firm27", | 152,   |
| "firm28", | 153,   |
| "firm29", | 163,   |
| "firm30", | 202,   |
+-----------+--------+

La parte importante è che l'algoritmo dovrebbe ridurre al minimo lo scarto.

Ho pensato che potevo usare un algoritmo genetico ma non restituisce ogni volta la soluzione corretta.

L'importante è che tutti gli ordini di lavoro su pezzi devono essere di 500 cm in totale. O dovrebbe essere vicino a quella lunghezza in base alla lunghezza del rifiuto dato. La quantità potrebbe essere superiore all'ordine e può essere messa in stock.

    
posta Valour 01.10.2014 - 14:52
fonte

3 risposte

3

Questo particolare problema è una variazione su un problema ben noto (e ben studiato) noto come problema di taglio delle scorte .

Nella classica definizione di questo problema, considera di avere ampi rotoli di prodotto di una certa larghezza. Hai bisogno di tagliarli in rotoli di larghezza inferiore con spreco minimo (e cambi di coltello):

Ilmotivopercuiquestoècosìbenstudiatoèchehaenormiimpattisuiprocessiindustrialiconanchepiccoliguadagnidiefficienza.Sipresentaincarta(rotolidicarta),film(rotolidipellicola)eindustriedimetalloconvariazioniinteressantiaggiuntiveperciascunodiessi(iltagliodellacartainformatoA4comportaduetaglisumacchinediversechepossonoaverespecifichediverse(unapiùeconomicaL'industriadelvetrohaunaltroproblemasimilenotocome problema di ghigliottina perché deve essere tagliato in pezzi rettangolari anziché funzionare con i rotoli.

Questo problema è anche equivalente al problema dello zaino.

Conoscendo queste cose, ci sono una serie di algoritmi diversi che tentano di risolvere questa classe di problemi che si sovrappongono a troppi simboli matematici funky, congetture e altri documenti.

Le risposte abbastanza buone sono possibili rapidamente, le risposte perfette richiedono molto tempo perché dovrai enumerare la maggior parte se non tutte le possibilità.

    
risposta data 01.10.2014 - 19:21
fonte
0

Ho fatto un po 'di lavoro in una classe di sistemi operativi universitari sull'assegnazione di blocchi di memoria con file di dimensioni diverse usando gli algoritmi best-fit, worst-fit, first-fit, che se ci pensate è essenzialmente lo stesso processo per questo problema. Il tema generale era senza conoscere tutte le richieste prima del tempo, non è possibile esaminare tutti gli orientamenti possibili e trovare il "minimo" scarto. Puoi avvicinarti usando qualcosa come best-fit ma poi un diverso insieme di ordini potrebbe renderlo peggio del primo e così via, dato che non puoi garantire di guardare avanti abbastanza da ottimizzare tutto in un sistema realistico.

Solo fare alcune situazioni veloci con pochi stick e pochi ordini e variando l'ordine in cui arrivano gli ordini dovrebbe spiegare perché qualsiasi algoritmo che hai potrebbe non restituire sempre la soluzione 'più corretta'.

    
risposta data 01.10.2014 - 19:07
fonte
0

Stai chiedendo di una classe di problemi equivalenti, ad esempio l'algoritmo di bin-packing (che è NP difficile vedere link ). Non è possibile garantire una soluzione perfetta per qualsiasi numero di clienti e si blocca in un lasso di tempo (ragionevole) lineare. Ciò che puoi fare è usare l'euristica per ottenere una soluzione "best effort".

Dai un'occhiata al packing dei contenitori e pensa a come mappare il tuo problema alle solite soluzioni best effort è probabilmente l'approccio migliore.

    
risposta data 01.10.2014 - 19:38
fonte

Leggi altre domande sui tag