PDA

View Full Version : algoritmo di riduzione HELP!!


huntercity
09-06-2002, 16:25
' Ncolo sono le colonne del mio sistema in fase di sviluppo
' tmpColRid sono le colonne temporanee già inserite nel sistema ridotto
' Esiste è una variabile che mi dice se la colonna in fase di verifica
' alla fine della verifica è già coperta dal sistema (esiste=true) oppure no
' colonne è una matrice di 50000 x 8 elementi in cui memorizzo il mio sviluppo
' vettoreA,B,......H sono i vettori dove memorizzo i pronostici delle varie macchine
' in base alla posizione di arrivo A=1 ... H=8

sopra c'è la parte che crea le colonne

tmpColRid = Ncolo
Esiste = False

While (tmpColRid >= 1)
PuntiCol = 0
If colonne(tmpColRid, 1) = vettoreA(i1) Then PuntiCol = PuntiCol + 17
If colonne(tmpColRid, 2) = vettoreB(i2) Then PuntiCol = PuntiCol + 15
If colonne(tmpColRid, 3) = vettoreC(i3) Then PuntiCol = PuntiCol + 14
If colonne(tmpColRid, 4) = vettoreD(i4) Then PuntiCol = PuntiCol + 13
If colonne(tmpColRid, 5) = vettoreE(i5) Then PuntiCol = PuntiCol + 12
If colonne(tmpColRid, 6) = vettoreF(i6) Then PuntiCol = PuntiCol + 11
If colonne(tmpColRid, 7) = vettoreG(i7) Then PuntiCol = PuntiCol + 10
If colonne(tmpColRid, 8) = vettoreH(i8) Then PuntiCol = PuntiCol + 9

If (PuntiCol >= Garanzia) Then
Esiste = True
tmpColRid=1
End If

tmpColRid = tmpColRid - 1
Wend

' controllo se non ho superato la capacità della memoria, in tal caso
' aggiungo la colonna al sistema
' se la colonna da aggiungere è non è gia coperta (esiste) dal sistema ridotto la inserisco
' controllo se è la prima colonna che deve essere inserita

If (Ncolo < maxcolonne) And (Esiste = False) Then
Ncolo = Ncolo + 1
colonne(Ncolo, 1) = vettoreA(i1)
colonne(Ncolo, 2) = vettoreB(i2)
colonne(Ncolo, 3) = vettoreC(i3)
colonne(Ncolo, 4) = vettoreD(i4)
colonne(Ncolo, 5) = vettoreE(i5)
colonne(Ncolo, 6) = vettoreF(i6)
colonne(Ncolo, 7) = vettoreG(i7)
colonne(Ncolo, 8) = vettoreH(i8)
End If


Quello sopra è il codice che uso per ridurre i sistemi in fase di sviluppo
c'è anche un metodo per ridurre sistemi partendo dallo sviluppo di un sistema
integrale, ma in quel caso mi sarebbe impossibile ridurre sistemi integrali
piu' grandi della quantità da me fissata per 50.000 colonne in questo caso
invece posso ridurre sistemi piu' grandi che alla fine rientrano come occupazione
della mia matrice Colonne entro le 50.000 unità

Ho adattato questo algoritmo da quello che usavo per il totogol dove li controllavo la presenza nel sistema già sviluppato
di almeno 6 o 7 punti rispetto ad una qualsiasi colonna gia ridotta, nel qual
caso scartavo la colonna se invece non era coperta la inserivo e poi iteravo
Non è un grande algoritmo di riduzione ma funziona, invece con questo
della Formula 101 non mi tornano le colonne, ho provato a confrontare
lo sviluppo con altri software che usano riduzione non ottimizzata ma il numero
delle colonne non tornano

Ravvisate per caso degli errori logici o matematici nell'algoritmo???
Per favore datemi un aiuto

grazie

okay
10-06-2002, 00:02
Ho capito bene........
durante lo sviluppo, e cioè, la prima colonna dello sviluppo già vai a ridurla?
poi Ncolo diventa 2 colonne e rifai il ciclo per ridurre le due colonne?.....e ancora la terza colonna dello sviluppo la passi di nuovo per ridurle?
oppure sviluppi 50.000 colonne e poi vai a ridurle, per poi passare alla seconda fase dello sviluppo per ulteriori 50.000 o meno per ridurle?

huntercity
10-06-2002, 09:40
Originariamente inviato da okay
[B]Ho capito bene........
durante lo sviluppo, e cioè, la prima colonna dello sviluppo già vai a ridurla?
poi Ncolo diventa 2 colonne e rifai il ciclo per ridurre le due colonne?.....e ancora la terza colonna dello sviluppo la passi di nuovo per ridurle?
oppure sviluppi 50.000 colonne e poi vai a ridurle, per poi passare alla seconda fase dello sviluppo per ulteriori 50.000 o meno per ridurle?

hai capito bene
due anni fa quando iniziai a programmare, prima facevo lo viluppo e poi riducevo ma in questo modo avevo due problemi, il primo era che perdevo il tempo anche per fare il calcolo dell'integrale, il secondo era che non era possibile ridurre sistemi di grandezza superiore ad un certo limite che invece è possibile ridurre se la riduzione la fai in fase di sviluppo e per quanto riguarda superenalotto e totogol l'algoritmo funziona alla grande e confrontato con altri software mi da le stesse colonne logicamente è un'algoritmo molto banale non ottimo ma veloce ho fatto lo stesso algoritmo per la formula 101 ma confrontando i risultati con un'altro software trovato sulla rete (sono riuscito a trovarne solo 1) ho visto che il numero di colonne ridotte a parita di pronostico è molto diverso e non capisco se ho sbagliato qualcosa nell'algoritmo oppure se il software da me preso come confronto utilizza un'altro algoritmo

il mio algoritmo funziona cosi
sviluppo la prima colonna e la metto nel sistema ridotto
al passo successivo genero le colonne in modo sequenziale e ogni colonna generata la confronto con quelle che sono già state messe nel mio sistema ridotto, se esiste almeno una colonna che soddisfa il termine di riduzione vuol dire che la colonna appena genereta è coperta dal sistema ridotto generato fino a quel momento, se invece la colonna generata non è coperta dal sistema ridotto generato fino a quel momento allora viene inserita nel sistema ridotto e cosi continuo lo sviluppo
Ieri abbiamo cercato di dimostrare con un mio amico ingegnere la validità dell'algoritmo e sembra che sia giusto solo che non capisco il perchè di tali differenze nei risultati

avevo gia dato un'occhiata al tuo sito e ho visto che anche tu hai fatto un algoritmo di riduzione ma non mi ci sono messo ad analizzarlo bene in quanto non ho trovata molta pulizia nel codice

tu ravvisi qualche errore logico o di programmazione nel codice postato sopra?

grazie

okay
10-06-2002, 14:47
non non mi sembra che ci siano errore di flusso.

io sviluppo prima il sistema integrale e/o condizionato, poi lavoro sul file delle colonne ridotte e poi in ultimo le accorpo sempre.

scrivo in sequenziale il file delle colonne ridotte, dopodichè apro
il file ridotto e se il file è più di 20.000 colonne ne metto in matrice 20.000 ecosì via.
le 20.000 colonne me leconfronto in 2 cicli for eliminando quelle a n-1. Il provedimento per la prima passata è da 1 a 20.000 (chiaramente ridotti da 20.000 col non ne faccio mai diciamo che faccio al massimo riduzioni tra 400 /1200 col di ridotto come media e dato che vendo il mio programma anche l'utente farà altrettando, questo perchè ad oggi nessun utente si è mai lamentato), comunque.......

procedendo in questo modo, per esempio la riduzione di 6 dp integrale mi da un ridotto di 13 col, mentre il ridotto AOSI del 6 doppie è 12 col, l'altro modo di operare è fare sempre i due cicli for ma prendendo la prima colonna in modo random e controllare poi le col del ridotto eliminando quelle a n-1, in questo modo riesco a fare i primati ridotti.

Non mi sono mai avvicinato ai primati di andrea paola e libero stolzi in quando loro adoperano una riduzione globale sul sistema
ridotto che si va a confrontare su un sistema di 13 triple, questo a detta di un mio amico di verona che stava studiando come ottenere quei risultati, e secondo me lsi basano su algoritmi legato a reti neuronali.

Per concludere:
il listato delle riduzioni al superenalotto che hai visto è il mio algoritmo base di riduzione con cui lavoro.

Attenzione perchè l'algoritmo che hai postato è corrento nel flusso ma non so dirti quanto sia valido, sicuramente puoi fare di meglio perchè non è detto che procedendo in quel modo ottieni un buo rapporto di riduzione , secondo me.

link
homepage http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
forum http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/public/twforum/default.asp