Prossimo verificatore... o almeno spero :)

« Older   Newer »
  Share  
huntercity
view post Posted on 27/11/2017, 13:05     +1   +1   -1




CITAZIONE (krypta @ 27/11/2017, 10:33) 
Ciao Carlo,

in effetti è vero, i programmatori sono una razza strana... l'unica cosa che hanno in comune è che sono fulminati e vivono in una sorta di mondo parallelo :D

Comunque considera che io lavoro praticamente solo su gestionali web, principalmente in ambito assicurativo quindi con la sistemistica non c'entro nulla. Non ricordo nemmeno come ci sono arrivato a fare un verificatore di sistemi :lol:

Il simulated annealing non so nemmeno cosa sia! Tutto quello che fa il verificatore sono miliardi di operazioni sui bit.

Per farla semplice, in un sistema v=10 e k=4, una colonna composta da questi numeri

01 03 07 08

è rappresentata da questo numero intero (leggendolo da destra a sinistra)

0011000101

dopodiché si tratta di fare operazioni bitwise in AND, OR, XOR ecc ecc

Se ho un v=2 e devo mettere la colonna precedente a confronto con la colonna

01 02 03 04

dovrò fare una operazione in AND fra i due interi

0011000101
AND
0000001111
=
0000000101 <- ci sono 2 bit a 1, quindi la condizione v=2 è rispettata (il numero dei bit in questo caso deve essere >= 2)

Se qualcuno ha voglia e tempo di fare da beta tester mi mandi un messaggio privato ;)

Ciao.
Giovanni

ciao Giovanni,

anch'io uso il bitwise, se lo ritrovo ti mando degli hint sulla copertura che trovai tempo fa.
avevo capito che anche tu lo usavi perchè avev il limite superiore di V che non va oltre i 64bit :-)

quello che io non conosco è l'algoritmo di ricerca e non la verifica di copertura

a che e-mail posso inviare gli hint? ti velocizzano di molto la verifica di copertura

Carlo
 
Top
view post Posted on 27/11/2017, 15:04     +1   +1   -1

Esperto

Group:
Moderatori
Posts:
622
Reputation:
+345

Status:


CITAZIONE (MARCO MEOLI 1960 @ 27/11/2017, 12:57)
Ciao :) Scusami sono fuori casa, io avevo provato con il 32,8,6,8 di Nino Aspesi,ma mi è successo anche con altri V 32. Buon pranzo

Quando hai tempo inviami il sistema (purtroppo era su weef che ha chiuso)... così controllo, grazie ;)

CITAZIONE (huntercity @ 27/11/2017, 13:05)
a che e-mail posso inviare gli hint? ti velocizzano di molto la verifica di copertura

Ti ho mandato un pvt con l'indirizzo ;)
 
Top
huntercity
view post Posted on 27/11/2017, 15:06     +1   +1   -1




Giovanni ho ritrovato le vecchie funzioni implementate, purtroppo non ritrovo il codice originale

Public Function BitsCount(X As Long) As Byte
'restituisce il numero di bit nel bitarray x
Dim count As Byte

While X <> 0
X = X And (X - 1)
' Debug.Print ("valore x " & x)
count = count + 1
Wend

BitsCount = count
'Debug.Print "count = " & count

End Function

Public Function isMaxBits(X As Long, max As Byte) As Boolean
'restituisce vero se ci sono al piu' max bit nel bitarray x
Dim i As Byte
For i = 1 To max
X = X And (X - 1)
Next i

isMaxBits = (X = 0)
End Function


io le usavo in AND tra la colonna selezionata e le singole colonne da verificare
il risultato dell'AND facevo il check con il BitCount o isMaxBits per contare quanti punti c'erano in comune
c'è anche una tecnica che in base a K>M o di T conveniva fare il complemente e cercare i bit mancanti anzichè quelli in comune
 
Top
view post Posted on 27/11/2017, 15:18     +1   +1   -1

Esperto

Group:
Moderatori
Posts:
622
Reputation:
+345

Status:


[HTML][/HTML]
CITAZIONE (huntercity @ 27/11/2017, 15:06)
Public Function BitsCount(X As Long) As Byte
'restituisce il numero di bit nel bitarray x
Dim count As Byte

While X <> 0
X = X And (X - 1)
' Debug.Print ("valore x " & x)
count = count + 1
Wend

BitsCount = count
'Debug.Print "count = " & count

End Function

Public Function isMaxBits(X As Long, max As Byte) As Boolean
'restituisce vero se ci sono al piu' max bit nel bitarray x
Dim i As Byte
For i = 1 To max
X = X And (X - 1)
Next i

isMaxBits = (X = 0)
End Function
io le usavo in AND tra la colonna selezionata e le singole colonne da verificare
il risultato dell'AND facevo il check con il BitCount o isMaxBits per contare quanti punti c'erano in comune
c'è anche una tecnica che in base a K>M o di T conveniva fare il complemente e cercare i bit mancanti anzichè quelli in comune

La prima che hai scritto credo sia l'equivalente di questa che si chiama, come dal nome della funzione, SparseBitcount

CODICE
public static int SparseBitcount(Int64 n)
{
  int count = 0;
  while (n != 0)
  {
    count++;
    n &= (n - 1);
  }
  return count;
}


che però ho abbandonato perché spesso è più veloce la tecnica del PrecomputedBitcount.

Scrivimi via mail ;)
 
Top
view post Posted on 27/11/2017, 15:23     +1   +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


Ciao Krypta,
molto lieto di leggerti. Pensare che tempo fa mi sono deciso a iscrivermi sul Forum proprio attratto dal sistema 20,10,7,10 da 30 combinazioni.
Al tempo avevo subito provato il verificatore che per me era una novità. Visti i limiti che aveva la prima versione, adesso quando mi serve preferisco utilizzare direttamente la versione 2.2 ma so che alcuni preferiscono il modo di funzionamento della prima. Io uso il verificatore quasi esclusivamente per le verifiche. Mi spiace non saper sfruttare tutte le potenzialità proprietarie e uniche di questo programma.

Mi trovo spesso a dover verificare uno o più sistemi e alle volte capita che il Verificatore, assieme al WUC usato come verificatore, siano gli unici a poter portare a termine la verifica.
Dico questo perchè mi è capitato di mandare in blocco il PC perchè ho tentato una verifica col QCT (Quick Cover Test) che certamente conosci.
Ora non ho esempi si sistemi che bloccavano tutto (siano a costringermi allo spegnimento del PC togliendo l'alimentazione in quanto sia mouse che tastiera erano in 'freeze'). Penso potrebbe essere utile fare anche questo test di paragone, quindi se mi ritrovo nuovamente in queste circostanze conserverò una copia del file che manda in blocco il QCT. Però ricordo bene che in alcuni di questi casi ho riprovato la verifica dello stesso file col verificatore e al contrario riusciva non solo a iniziare la verifica, ma anche a portarla a termine, anche se ho dovuto aspettare qualche ora.

Un'altra cosa interessante che riguarda il lavoro che stai portando avanti è che il programma Cover32 di Nurmela e Ostergard è molto veloce nel completare le verifiche. Tant'è che io ho sfruttato questa sua caratteristica per realizzare un verificatore che riesce a processare più files contenuti in una stessa cartella. Il lavoro che ho fatto io è un po' poco elegante, nel senso che avrei dovuto copiare la routine che effettua le verifiche e automatizzare la procedura per la verifica automatica su più files. Ma sapendo padroneggiare col linguaggio C ho seguito un'altra via.

Il codice C del programma Cover di Nurmela e Ostergard è disponibile qui: www.tcs.hut.fi/Software/old/cover/

Considerando che il verificatore non effettua solo la verifica e mentre calcola la copertura forse deve raccogliere anche altri dati (esempio copertura di ciascuna colonna), allora probabilmente c'è un solo modo per farlo funzionare e queste informazioni non saranno d'interesse. Però è bene conoscerne il funzionamento (anche perchè magari, con le tue abilità potrebbe nascere qualche altro strumento).
Il programma Verifica Batch che ho 'adattato' io è qui https://wheels.forumcommunity.net/?t=59665450
e potrebbe tornare utile vedere le funzioni che ho inglobato e che si sono rivelate molto comode per chi è spesso alle prese con più sistemi.

Concludo mostrandovi i dati dei test che ho effettuato io sullo stesso sistema che avete provato voi. il 32,09,09,19=2600

Verificatore v2.2, su Win10, --> 30 minuti

cover32 (VerificaBatch), su win10, --> 6 minuti

QCT, su win10, --> 6 minuti

Ho anche notato una cosa un po' strana: il QCT cambia i tempi di elaborazione a seconda del formato di file che si verifica (la verifica del file formato .LSY ha impiegato pochi secondi in meno dello stesso file in formato .LOT).

Il QCT lo trovi qui www.lottery.co.rs/?page_id=4088 assieme alle istruzioni (per i tipi di files che accetat e i limiti dei parametri).

Allego a questo messaggio il file da 2600 combinazioni (questo record, superato il 22 novembre scorso, era mio e lo avevo inserito con l'aggiornamento 'massive update 04 del 17 Aprile 2017' e in archivio è presente solo la nuova versione con meno combinazioni.
Allego lo stesso file anche in formato .LOT e in formato .LSY perchè possiate eventualmente replicare le stesse prove che ho fatto io senza perder tempo e fatica con le conversioni di tipo.

Saluti,
Stefano

Download attachment
Sistema_32_09_09_19_2600_in_tre_diversi_formati.rar ( Number of downloads: 9 )

 
Top
view post Posted on 27/11/2017, 16:00     +1   +1   -1

Esperto

Group:
Moderatori
Posts:
622
Reputation:
+345

Status:


Ciao Stefano,

grazie per tutte le tue indicazioni e il file allegato. A dire il vero non ho mai provato altri programmi simili al verificatore anche perché facendo "altro" di mestiere non ho mai avuto modo di approfondire questo strano mondo della sistemistica :)

Adesso ho scaricato il QCT e lo sto provando. Comunque è come dici tu, il verificatore "perde tempo" a fare altre cose mentre verifica, cose che sono poi utili dopo per le successive elaborazioni (ricerca colonne a maggior copertura, ricerca miglioramenti ecc ecc).

Il QCT ha appena finito di elaborare il 32,9,9,19 e ci ha messo 6' 36'' ... è davvero velocissimo :o:

Mi fai venire voglia di provare a fare una versione 64bit che faccia solo la verifica come QCT :lol:

Stasera se riesco do un'occhiata al Cover32 :)

Ciao.
Giovanni
 
Top
icon1  view post Posted on 27/11/2017, 18:30     +1   -1
Avatar

Esperto

Group:
Administrator
Posts:
4,949
Reputation:
+230
Location:
Bari

Status:


:lol: musica per le mie orecchie :P

:rolleyes: Non sò leggere uno spartito musicale, ne riesco a capire le righe di programmazione ,
^_^ ma apprezzo il capolavoro che ne scaturisce da entrambe :woot: :lol:
 
Top
view post Posted on 30/11/2017, 19:27     +1   -1
Avatar

Esperto

Group:
Administrator
Posts:
4,949
Reputation:
+230
Location:
Bari

Status:


:) Per Giovanni cercavo il sorgente di ininuga , che era liberamente scaricabile, ma non lo sto vedendo più. :unsure:

Vedo questa pagina con i tips per la programmazione, visto mai siano utili:

http://www2.arnes.si/~ubolti/ininuga/programming.htm

qualcosa qui:

http://www2.arnes.si/~ubolti/ininuga/ordinal.htm

http://www2.arnes.si/~ubolti/ininuga/code/ordinals.txt

http://www2.arnes.si/~ubolti/ininuga/code/lot_one.txt

http://www2.arnes.si/~ubolti/ininuga/code/ord_pas.txt

ovviamente sul sito c'è anche il link dove scaricare il programma compilato
che richiede il dos box per funzionare oppure XP a 32 bit

Se qualcuno ancora se lo trova e lo posta quì, è stato scaricabile sino al 2014-2015 , vado a memoria.

:B): Oppure scrivo una mail e invito Uros Boltin a questo forum :P

Ps: con il wuc di Carlo si ottiene un improvement del ridotto 25,10,09,10
che diverrebbe un Jno-Huntercity-Kripta in progress :woot: :P

Download attachment
V10250910_99__11_50863.rar ( Number of downloads: 11 )

 
Top
huntercity
view post Posted on 30/11/2017, 22:17     +1   -1




Per Giovanni è banale e forse anche qualcuno di voi li conosce, ad ogni modo su PC di una certa potenza e con RAM adeguata è possibile eseguire dei programmi di virtualizzazione che permettono ad di eseguire il vecchio xp come se girasse dentro una finestra.
Nel mio PC del lavoro ho Windows 10 e sempre attive 3 macchine virtuali con dentro Linux , Seven e Xp.
Se avete almeno 8gb di RAM scaricate virtual box , avviatelo, recuperate un vecchio cd di xp e installatelo.
Quando vi serve lo eseguite come se fosse un qualsiasi programma installato sul vostro PC.

Carlo
 
Top
view post Posted on 25/12/2017, 00:24     +1   -1
Avatar

Esperto

Group:
Administrator
Posts:
4,949
Reputation:
+230
Location:
Bari

Status:


:) ho trovato un file che blocca la elaborazione del verificatore quando chiedi di cercare un miglioramento con qualsiasi PIC.

Non dà nessun errore, semplicemente termina di elaborare come se premessi lo stop.

^_^ Ricavato da una somma di un record di Alessandro, se il prossimo verificatore supera questo problema,
si potranno ricavare altri record ^_^ ;)

34,05,04,20 11 colonne


30 31 32 33 34
25 26 27 28 29
09 12 13 26 27
21 22 23 24 25
18 19 20 23 24
18 19 20 21 22
13 14 15 16 17
08 09 10 11 12
04 05 06 07 08
01 02 03 06 07
01 02 03 04 05


Edited by TarulliG - 25/12/2017, 07:14

Attached Image: Immagine

Immagine

 
Top
view post Posted on 26/12/2017, 11:02     +1   +1   -1

Esperto

Group:
Moderatori
Posts:
622
Reputation:
+345

Status:


Confermo, nel verificatore 2.2 si ferma senza segnalare errori...

Il problema è dato probabilmente da un out of memory non gestito correttamente.

Oggi farò qualche prova col nuovo e vi farò sapere.

Purtroppo non sono riuscito a farvi il regalo di Natale ma ho avuto un sacco di cose da fare per lavoro.

A dire il vero ho lavorato parecchio anche sul verificatore perché mi sarebbe piaciuto darvi qualche funzione in più ma non sono soddisfatto, per cui cercherò di completare quelle parti che già conoscete e vi darò un link per scaricarlo, così potrete cominciare a fare qualche test con una versione sicuramente più performante della 2.2

A presto :)
 
Top
view post Posted on 27/12/2017, 11:57     +1   -1

Esperto

Group:
Moderatori
Posts:
622
Reputation:
+345

Status:


Il problema purtroppo permane anche nella nuova versione.

Per come ho implementato la funzionalità di ricerca miglioramenti cosiddetta "pic", presa una colonna da lavorare ho bisogno di mettere in memoria le colonne da lei coperte.

Nel caso specifico del 34,5,4,20 ogni colonna copre da sola 416.878.335 colonne che va ben oltre il limite massimo memorizzabile di 134.217.728 per numeri a 64bit sulla maggior parte dei pc windows.

Quando avrò un po' di tempo proverò ad implementarla in maniera diversa ma non so se sia fattibile, o meglio, è sicuramente fattibile il non mettersi in memoria le colonne coperte dalla colonna da lavorare ma se poi il numero di colonne effettivamente scoperte che rimangono, perché non coperte dalle altre colonne del sistema, dovesse superare quel limite il problema salterebbe fuori nuovamente.

Se qualcuno ha dei suggerimenti in merito ben vengano ;)

Ciao.
Giovanni
 
Top
view post Posted on 15/1/2018, 18:48     +1   -1

Esperto

Group:
Moderatori
Posts:
5,034
Reputation:
+742

Status:


Ciao Giovanni.

Ho pensato (incredibile, mi succede ogni tanto) che, se implementare l'inversione della colonna è troppo laborioso si può operare in modo differente.

Immaginiamo di avere un sistema da 1000 colonne da passare al verificatore. Una volta che è arrivato alla 500 esima colonna si può fare in modo che il verificatore non torni indietro a verificare dalla 1000 esima colonna, ma iniziare dalla 500 esima.

Mi dirai che già è possibile spuntando "blocca", ma spuntare 500 colonne e più implica molto tempo. Si potrebbe implementare un comando che indichi da quale colonna iniziare a verificare.

Spero di essere stato chiaro.

Grazie e scusa per il fastidio.

Ciao.
 
Top
view post Posted on 8/2/2018, 11:29     +1   -1

Esperto

Group:
Moderatori
Posts:
622
Reputation:
+345

Status:


Ciao ragazzi,

ho messo su dropbox la nuova versione del verificatore, che stavolta si chiama Wheeling Systems Checker :P

Se avete tempo provate ad installarlo così vediamo se intanto parte ^_^

Per adesso non sono riuscito a fare ciò che mi ha chiesto rosmarino ma prometto di pensarci...

Appena ho un attimo di tempo vi do anche qualche spiegazione, anche se in pratica è uguale alla versione 2 a parte qualche nuovo strumento che trovate in "Experimental tools"...

Avrei voluto fare di più ma dopo aver fatto svariati tentativi per creare qualcosa che potesse anche aiutare a generare/chiudere un sistema (anche partendo da zero) ho desistito... in realtà qualcosa di discreto era saltato fuori ma era inutilizzabile se non su piccoli sistemi... se il tempo me lo permetterà continuerò a studiare anche questo aspetto <_<

Fatemi sapere, grazie ;)
 
Top
view post Posted on 8/2/2018, 12:17     +2   +1   -1

Esperto

Group:
Moderatori
Posts:
622
Reputation:
+345

Status:


Ho tolto il file autoinstallante da dropbox perché non mi convinceva molto (mi rimaneva un processo aperto a fine installazione) e ho messo un file zip con dentro due file... potete usare il .msi o il .exe, si installa sempre la stessa roba ;)
 
Top
68 replies since 16/11/2017, 20:44   1730 views
  Share