Qual è il miglior software di simulazione Monte Carlo?

Non so se sia il "migliore", ma lo dirò. Ho lavorato sulla simulazione in linguaggio misto per anni. La maggior parte di questo era Fortran legacy, C, C++ e codice generato (Simulink). Dal punto di vista delle prestazioni il Fortran regge ancora il confronto, ma nessuno lo usa più molto, se non per le codebase legacy. Nel periodo in cui ho cambiato posizione eravamo in procinto di passare al C++ per alcune ragioni. In primo luogo era più ampiamente usato all'epoca, quindi il supporto era migliore. In secondo luogo, questo significava che più persone avevano una buona conoscenza del linguaggio. Terzo, il solo menzionare "Fortran" evoca immagini del Giurassico, anche se ingiustamente perché è ancora un buon linguaggio.

Prenderei in considerazione Julia, ma probabilmente ripiegherei su C o C++. L'affermazione di Julia è che si avvicina all'efficienza di un linguaggio compilato, ma la dovuta diligenza richiederebbe che tu lo testassi da solo, nella tua applicazione sul tuo hardware. Quando avete a che fare con migliaia e migliaia di istanze di simulazione distribuite su centinaia/migliaia di code, che sfornano un sacco di dati, vi dirò che le prestazioni sono cruciali, a meno che non vogliate sprecare un sacco di soldi in più e più hardware per recuperare per la cattiva scelta del linguaggio. Ricordate che non c'è un pranzo gratis. I linguaggi informatici hanno tutti il loro scopo, e questo è dopo tutto il motivo di questa domanda, non è vero? Non c'è niente di male nel riutilizzare metodi, librerie e simili, basta assicurarsi che siano ben testati prima di spendere il tempo a costruire la vostra simulazione intorno ad essi.

Scriverei alcuni algoritmi di test che saranno del tipo più probabile che verrà utilizzato e del tipo più intensivo. Scriveteli con le migliori pratiche per il linguaggio e mirate all'esecuzione ottimale. Poi testateli. Un confronto completo, un benchmarking su tutti i metodi che intendete utilizzare. In altre parole, se state presentando code batch, allora fate proprio quel test e registrate tutto. Fatelo con un set di campioni sufficiente per il problema, analizzate i risultati e poi avrete la vostra risposta. Passerete molto tempo a sviluppare quel codice ed è un grande vantaggio per voi spendere il tempo in anticipo con la valutazione.