Tra i criteri che hai specificato, penso che il progetto più vicino che conosco sarebbe la collezione di matrici sparse dell'Università della Florida . Le persone usano abitualmente questo set di dati per confrontare i solutori di algebra lineare sparsa e puoi filtrare per applicazione, numero di nonzeros, dimensioni della matrice e così via con un'interfaccia web davvero piacevole, un'interfaccia MATLAB o una GUI Java. Ho visto le tabelle di questi problemi elencate nei documenti insieme ai confronti del tempo di esecuzione del solutore con 4-8 solutori di algebra lineare.
Concordo sul fatto che sarebbe utile compilare tali database e, inoltre, ritengo che l'approccio alla raccolta di matrici sparse UF per la compilazione dei dati sia eccellente e farebbe un ottimo inizio per chiunque stia pensando di realizzare questa idea. Gestire tutti i problemi, in pratica, non sembra una grande difficoltà fintanto che è possibile accedere a tutti i solutori; se hai accesso ai solutori e una macchina di riferimento standard affidabile con tutto il software necessario installato, dovrebbe trattarsi di eseguire uno script e raccogliere i dati. La difficoltà, secondo me, sarebbe indurre le persone a darti il loro software, se non è open source. Se è commerciale, è possibile acquistarlo o anche convincere la gente a donare il software,Progetto COIN-OR . Ma se si tratta di un software di ricerca che non è né commerciale né open source, allora è necessario convincere le persone ad acquistare l'impresa e potrebbero non fidarsi di una terza parte per valutare il proprio software in modo equo.
So anche che nell'ottimizzazione ci sono database scaricabili di problemi ( mi
viene in mente CUTEr ) e libri di problemi di test per l'ottimizzazione. Ho visto persone (per esempio, sto pensando in particolare a un discorso di Ruth Misener ad AIChE 2011) confrontando il loro risolutore di ottimizzazione con altri risolutori su database di problemi nelle presentazioni; Non sono sicuro di ciò che viene rilasciato pubblicamente. So che esiste una tradizione nell'ottimizzazione per il confronto su larga scala (molti solutori, molti problemi); Solo non penso che ci sia un database online disponibile.
Un'altra cosa che ritengo importante è che qui distinguiamo tra metodi e implementazioni software. Nell'informatica scientifica, parliamo tutti di quali metodi sono più veloci o più lenti basati su cose come le metriche di complessità computazionale o le nostre esperienze con vari problemi. Quando si tratta di misurare quantitativamente il tempo computazionale, tuttavia, a meno che non si contenga il numero di FLOP in un particolare algoritmo, è necessario implementare l'algoritmo nel software e quindi misurare le prestazioni in qualche modo (utilizzo della memoria, tempo di esecuzione del clock, ecc. .). Ha senso valutare le prestazioni di un metodo quando si guarda alla complessità computazionale o ai conteggi FLOP, perché non abbiamo bisogno di un'implementazione per misurare tali cose, ma nel momento in cui siamo interessati ai tempi di esecuzione effettivi dell'orologio da parete, parlando di metodi è utile solo come un dispositivo colloquiale astratto. (Per esempio,
Sollevo questa distinzione tra metodi e software perché in un tale database, ho anche potuto vedere la possibilità di monitorare il miglioramento del software nel tempo. Quindi, ad esempio, con qualcosa come, per esempio, PETSc o PyCLAW, o qualunque software sia in fase di test, sarebbe interessante vedere quali problemi sono influenzati positivamente (o negativamente!) Dagli aggiornamenti del software. Ciò potrebbe essere utile per i ricercatori che cercano di decidere se valgono potenziali costi in termini di denaro e manodopera per aggiornare i loro codici. Un altro motivo per cui tale distinzione è importante è perché un buon metodo può essere implementato male; Penso che questa possibilità contribuisca alla reticenza che a volte le persone condividono i loro codici di ricerca.
Penso che qualunque cosa provenga da questa idea (e spero che ne derivi qualcosa, e sarei disposta a contribuire dopo il mio dottorato di ricerca), è importante sottolineare questa distinzione tra software e metodi, perché se stiamo eseguendo problemi di test, siamo pubblicando i risultati per il software.