View Single Post
Old 09-06-2002, 16:25   #1
huntercity
Senior Member
 
Iscritto dal: Jun 2001
Città: Pisa
Messaggi: 628
algoritmo di riduzione HELP!!

Codice:
' 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
huntercity è offline   Rispondi citando il messaggio o parte di esso