Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Matematica e VB

Spero che qualcuno mi possa aiutare (non ci sono riusciti nemmeno professori
di matematica)
Devo fare dei calcoli di "ottimizzazione tagli", mi spiego:
Ho delle barre metalliche di lunghezza prefissata dalle quali devo tagliare
un numero di pezzi di lunghezza variabile e il programma che devo fare deve
ripartirmi tutti questi pezzi per il numero di barre facendo in modo che
abbia il meno scarto possibile, cioč che da ogni barra mi rimanga un pezzo
il piů piccolo possibile
Example:
Ogni barra č lunga 6500 mm
I pezzi da tagliare sono:
6 pezzi da 2275 mm
3 pezzi da 1350 mm
4 pezzi da 1475 mm
2 pezzi da 1250 mm
2 pezzi da 1425 mm
1 pezzi da 1200 mm
2 pezzi da 1450 mm
1 pezzi da 650 mm.
Sapendo che ci vogliono in tutto 6 barre da 6500 mm, devo ripartire in
maniera ottimale i tagli
In ogni caso vi ringrazio infinitamente....
Bye :-)))

 Bye :-))) 
Ciao,
questo e' un tipico problema di n-p completezza, cioe' bisogna avere delle
conoscenze di algoritmi molto approfondite. Io studio Informatica, e
questo discorso viene fatto alla fine del corso di algoritmi. E' per
questo che neanche i tuoi professori sono tiusciti a risolverlo. Come
riferimeti bibliografici posso darti il mio libro di testo, solo che costa
circa 120.000 ed e' in inglese. Ci dovrebbe essere anche una versione in
italiano, ma non so il titolo ne la casa editrice.
Introduction to Languages and the Theory of Computation
       di John C. Martin. Editore Mc Graw Hill
Spero di esserti stato di aiuto
Ciao
Bastianelli Simone

Ho letto il quesito e devo dire che a prima vista sembra facile... ma non č
cosě!!
Io provo a risolverlo... spero di darti una risposta entro 'sta sera!
Bye
^_^ Gianni


prova a cercare in giro 'problema dello zaino' e/o 'knapsack' e/o
'brancch & bound'
quello che ti e' stato presentato e' un classico problema di ricerca
operativa noto come problema dello zaino , anche se la tua e' la
versione multipla 
sarebbe moolto piu' semplice se avessi una unica sbarra da 6*6500 mm
chiaramente una ricerca esaustiva della soluzione e' impraticabile

 ha scritto nel messaggio
news:vFcc6.56$L94....@twister2.tin.it...

Potresti calcolarti tutte le combinazioni possibili; per ogni combinazione
calcolare lo scarto per ogni barra quindi calcoli  la combinazione con
scarto che ha in sequenza gli scarti minori ...
Spero di non aver detto una cacchiata ...
Saluti

 Ogni barra è lunga 6500 mm


 Saluti
Lo so, ci avevo pensato, a livello manuale (block notes e calcolatrice) va
bene,
perň (vista la mia "enorme" bravura in matematica) non riesco a trovare il
modo di
implementarlo col piccě
Ciao Fox!!!
~Salvo~

Ti ringrazio, ma purtroppo l'inglese non è che sia proprio il mio forte,
preferisco
il nostro buon, vecchio, caro Italiano.
L'avevo immaginato che era un problema maledettamente duro :-(((
Beh, grazie comunque. Ciao
~Salvo~


 chiaramente una ricerca esaustiva della soluzione e' impraticabile
Saluti
~Salvo~

 ha scritto nel messaggio
news:94s22j$et22s$1...@ID-63501.news.dfncis.de...


 chiaramente una ricerca esaustiva della soluzione e' impraticabile
E' un problema abbastanza noto in letteratura: dovrebbe essere una variante
del knapsack, nota anche come packaging binario. Se non ricordo male la
soluzione per la soluzione esatta si usa branch&bound, per una approssimata
delle euristiche.
Se non ricordo male in
S. Martello, P. Toth "Knapsack problems: algorithms and computer
implementations" John Wiley & Sons Ltd, 1990.
e' analizzato il problema e proposte alcune soluzioni.
Saluti
Alessandro <locaduck>

> Zio Sam:

Se proprio non sei costretto a usare un linguaggio, perche' non prendi in
considerazione il Risolutore di Excel?
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

Ogni barra è lunga 6500 mm
[snap]
Il tuo problema è riconducibile all'algoritmo "best-fit ordered".
In realtà il problema non è risolvibile, si può solo trovare una risposta
"approssimativamente" ottimale.
Il problema è simile a quello di far stare un tot di files in meno dischetti
possibili.
Cerca sul sito comune la mia app. DiskPack.
C'è il sorgente dell'algoritmo.
Ciao

 Ogni barra è lunga 6500 mm


di matematica)
E' un tipico problema di ottimizzazione, che noi facciamo negli esami
di Ricerca Operativa e/o Algoritmi di Ottimizzazione.
Una soluzione generale al problema e' *molto* difficile da dare.
Quando gli elementi sono relativamente pochi, come sono i tuoi, puoi
cercare di ragionarci "a naso" e studiare una tua soluzione nel caso
particolare, che pero' non saprei dirti quale puo' essere.
Cosi' di getto, io metterei in fila i pezzi per lunghezza, poi
proverei ad utilizzare i piu' lunghi per quanto possibile e a riempire
le rimanenze con quelli piu' corti.
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-IV --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD

implementations" John Wiley & Sons Ltd, 1990.
Cioe' il mio professore di Ricerca Operativa e il suo assistente, 2
iene da paura all'esame :)
La teoria si capisce in modo relativamente chiaro comprando i loro
libri di teoria e --ancora meglio-- di esercizi.
Pero' molto preparati...


possibili e poi.....
No, non puoi. Sono una cifra esageratamente alta le combinazioni da
provare. Metti, poi, che debba ricalcolare il problema aggiungendo un
pezzo e la complessita' aumenta ancora in modo drammatico.


scarto minore possibile!
No, ne da' uno che non e' neanche lontano dal migliore possibile, a
meno di non essere *MOLTO* fortunati. Quello e' il procedimento piu'
intuitivo e veloce da implementare, ma purtroppo da' risultati
relativamente scarsi.
Siccome si fa molto presto ad implementarlo, provalo e guarda a cosa
arrivi.


se il risolutore di excel non dice "cacchiate" questa dovrebbe essere la
migliore soluzione:
                          bar1    bar2    bar3   bar4   bar5   bar6
tot.pezzi
t.a   2275             0         1         2        1        0        2
6
t.b   1350             1         0         0        2        0        0
3
t.c   1475             2         1         0        0        1        0
4
t.d   1250             0         1         0        0        1        0
2
t.e   1425             0         0         1        0        1        0
2
t.f    1200             0         0         0        0        0        1
1
t.g   1450             0         0         0        1        1        0
2
t.h     650             0         0         0        0        1        0
1
comporrai delle barre lunghe rispettivamente 4300 - 5000 - 5975 - 6425 -
6250 -5750.
in sostanza quello ho cercato è creare in base ai dati tre barre la cui
sommatoria sia quella maggiore possibile....
sinceramente devo verificare ancora alcune cose che nello svolgimento delle
iterazioni da parte del risolutore mi
sono rimaste quantomeno dubbie!!!!
perciò se vuoi taglia, ma non voglio responsabilità !!!!       :-))))
Un saluto a tutto il n.g