Newsgroup: it.comp.lang.visual-basic
Titolo: ..algoritmo..Carico di un camion.

Sto facendo un piccolo programma che attraverso un algortimo trova la
migliore soluzione su come caricare un camion.
Allora: io ho un vettore di integer, e so che contiene il peso di ogni collo
.
Non so quanti colli saranno, ma con un ubound(vettore) siamo a cavallo.
L'utente inserisce il massimo peso supportato dal camion e io devo trovare
il modo di inserire il piů peso possibile >= al peso massimo supportato.
Quindi dovrei provare tutte le possibile combinazioni e la prima che trovo
che corrisponde al peso massimo č quella adatta, altrimenti quella che piů
si avvicina.
Devo anche salvare il numero dell'indice di quei colli che saranno poi la
soluzione ottimale.
Il tutto ipotizzando che i colli sono tutti dello stesso volume (quindi non
mi importa molto se inserisco un unico collo che pesa quanto il massimo
consentito o 10000 colli) e che sul camion ho volume infinito.
Sapreste darmi una mano per piacere?
Grazie mille in anticipo.
Lawrence.
p.s. Non č per lavoro..sarebbe un programma didattico.

 
Algoritmo dello zaino.
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 Lawrence.
Il tuo problema non č di cosě semplice soluzione, tempo fa mi era stato
proposto un problema simile, dovevo fare a fette dei tubi in base a degli
spessori richiesti sprecandone il meno possibile.
L' algoritmo per trovare effettivamente la combinazione migliore comporta
calcoli matematici piuttosto complessi, stiamo ancora aspettando l' analisi
dell' ing. matematico incaricato, io ci ho rinunciato.
Potresti adottare una "forza bruta" creandoti tutte le combinazioni
possibili e poi trovarti la migliore, ma come puoi ben capire se i fattori
aumentano anche di poco il calcolo diventa gigantesco.
Se vuoi provare a documentarti vai sul buon google e cerca "Calcolo
euristico".
Buona fortuna, Ciao, DY.


Bello, ora me lo studio un po' magari serve anche a risolvere il mio
problema...
Ciao e grazie.

MarLaw wrote:
<snip>
Usa la programmazione genetica.
Maggiori informazioni le trovi in rete, io
purtroppo non me ne intendo tanto da
poterti dare riferimenti più precisi.
Andrea

...

Suppongo per un attimo che tu debba inserire un peso *inferiore* al
carico massimo e il piů vicino possibile.
Un modo č: ordinare i colli per peso, dal piů pesante al meno pesante;
quindi scandisci questa matrice caricando sul camion il piů pesante
elemento
che hai in matrice, che non superi il carico massimo; quando lo hai
caricato lo togli dalla matrice degli ordinati e cerchi un nuovo
elemento che non sfondi il camion, e continui finchč non ci sono piů
elementi che possono stare sul camion.
Se usi le collection č piů comodo l'ordinamento e la rimozione...
Ciao

 Ciao
Questa è quella che avevo fatto.
Ed era quella richiesta dal mio professore..ma pensandoci non era in
assoluto la migliore.
Guarda questo esempio:
Ho un camion con carico massimo di 30 quintali.
Ho 4 pacchi.
3 da 10 quintali
1 da 21 quintali.
Con quella "procedura" carichiamo il camion di "soli" 21 quintali..quando
era possibile riempirlo fino all'orlo.
Ne abbiamo 9 non utilizzati.
Ciao ;))

 Algoritmo dello zaino.
in pseudo parole (definirlo pseudo codice č offensivo per chi legge:-)):
ordini i pacchi dal piu pesante al piů leggero;
ripeti
    carichi il primo che ha peso <= al max supportato
    max supportato = max supportato - peso del pacco caricato
finche non hai finito la lista dei pacchi o max supportato =0
non hai sempre la soluzione ottima ma č un buon metodo per farlo in tempi
ragionevoli.
ciao tommy

...

Certo, ma se esegui l'algoritmo fino in fondo, il prossimo camion sara pieno.
E puoi sempre ordinare per peso anche i camion alla fine del processo...
Ciao