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
' 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