Fattibile con excell?
Ciao a tutti.. tempo fa, in un post, chiedevo se fosse possibile con VB risolvere il problema che ora vi posto; Io avevo cominciato a scrivere pagine di programma, perchè conoscendo poche funzioni, sono costretto ad usare sempre le solite e semplici procedure che conosco, dopo 3 pagine, esausto, ho interrotto. E per fortuna, perchè poi, vedendo svolgere il compito manualmente mi sono reso conto che il programam sarebbe dovto essere molto più complesso del previsto.
Adesso mi chiedo se è possibile svolgerlo con excell. Lo scrivo in forma semplificata
per fare un certo lavoro mi servono
50 tubi di ferro da 4,75 metri
100 da 3 metri
80 da 1 metro
120 da 30 CENTIMETRI
250 da 8,68 METRI
Poichè il ferro lo compro a fili di 12 metri ciascuno, e non voglio realizzare sprechi, come lo devo tagliare per utilizzarlo al meglio?
GRAZIE
Adesso mi chiedo se è possibile svolgerlo con excell. Lo scrivo in forma semplificata
per fare un certo lavoro mi servono
50 tubi di ferro da 4,75 metri
100 da 3 metri
80 da 1 metro
120 da 30 CENTIMETRI
250 da 8,68 METRI
Poichè il ferro lo compro a fili di 12 metri ciascuno, e non voglio realizzare sprechi, come lo devo tagliare per utilizzarlo al meglio?
GRAZIE
Risposte
"matematicoestinto":
Lo scrivo in forma semplificata
per fare un certo lavoro mi servono
50 tubi di ferro da 4,75 metri
100 da 3 metri
80 da 1 metro
120 da 30 CENTIMETRI
250 da 8,68 METRI
Poichè il ferro lo compro a fili di 12 metri ciascuno, e non voglio realizzare sprechi, come lo devo tagliare per utilizzarlo al meglio?
GRAZIE
Farlo in xls o in VB è praticamente la stessa cosa anzi, VB offre qualche strumento in + che puo' rendere il programma + semplice, ma quelli di base sono gli stessi (con lievi differenze di sintassi).
Forse nel scriverlo in forma semplificata hai saltato qualche informazione importante. Cosa vuol dire come lo devo tagliare? Perforza tutti della stessa misura o anche di misure diverse? Spiegati meglio, buttato così sembra un programma di poche righe....
Ciao!
Facciamo finta che con dei tub da 12 metri debba ottenere 3 tubi di 4 metri, uno di 7 m e uno di 5 m
è logico che il modo più conveniente è tagliare il primo tubo in segmenti 4 4 4; e l'altro in segmenti 7 5.
In queto modo uso al meglio solo 2 tubi. Ma se taglio il primo in segmenti 5 4 ; il secondo 7 4 e il terzo 4, in questo caso ne ho usati 3
Il problema è combinarli nel modo più convenietne.
A presto
è logico che il modo più conveniente è tagliare il primo tubo in segmenti 4 4 4; e l'altro in segmenti 7 5.
In queto modo uso al meglio solo 2 tubi. Ma se taglio il primo in segmenti 5 4 ; il secondo 7 4 e il terzo 4, in questo caso ne ho usati 3
Il problema è combinarli nel modo più convenietne.
A presto
"matematicoestinto":
Facciamo finta che con dei tub da 12 metri debba ottenere 3 tubi di 4 metri, uno di 7 m e uno di 5 m
è logico che il modo più conveniente è tagliare il primo tubo in segmenti 4 4 4; e l'altro in segmenti 7 5.
In queto modo uso al meglio solo 2 tubi. Ma se taglio il primo in segmenti 5 4 ; il secondo 7 4 e il terzo 4, in questo caso ne ho usati 3
Il problema è combinarli nel modo più convenietne.
A presto
Azz... la cosa si fa + complicata...
Quindi, ponendo che i 5 formati si chiamino a, b, c, d, e,
dovrai fare:
50a
100b
80c
120d
250e
Visto che sono tutti multipli di 10 si può semplificare come
5a
10b
8c
12d
25e
per un totale di 60 tubi. Anche le dimensione devono essere divise per 10, quindi i tubi iniziale sono da 1,2m.
La logica semplice è: immaginare di avere un vettore di 60 elementi (60 tubi). Ogni elemento di questo vettore conterrà un riferimento ad un tipo di tubo (ovvero una delle lettere a,b,c,d,e). Mischiare tutti gli elementi in modo da trovare tutte le combinazioni possibili; per ogni combinazione, partendo dal primo elemento del vettore, sommare i valori in modo da non superare 1,2m. Se per esempio all'elemento 4 si supera 1,2m, vuol dire che i primi 3 elementi usano un tubo, quindi partendo dall'elemento 4 si guardano gli elementi successivi fino a quando non si superano ancora i 1,2m. Quando si arriva all'ultimo elemento si sa quanti tubi sono stati utilizzati. Se questo numero di tubi è il minore trovato finora, allora si salva il vettore in un vettore di appoggio che sarà quello che conterrà alla fine la migliore combinazione.
Per scrivere un programma del genere basta mezzora, il problema è che occorrerà attendere giorni prima di poter vedere il risultato, visto che le possibili combinazioni se non sbaglio sono 60^60! Quindi questa, pur essendo funzionante, non è la soluzione richiesta.
Il programma va risolto non trovando tutte le possibili combinazioni, prima va risolto matematicamente (e a me non viene in mente nessuna formula che ci possa aiutare)