Cuál es el mejor software de simulación Monte Carlo?

No sé si es el «mejor» pero voy a lanzar esto. Trabajé en la simulación de lenguaje mixto durante años. La mayor parte de esto fue legado Fortran, C, C ++ y generado por el código (Simulink). En cuanto al rendimiento, Fortran todavía se mantiene, pero ya nadie lo utiliza mucho, salvo para las bases de código heredadas. En el momento en que cambié de posición, estábamos en proceso de pasar a C++ por varias razones. En primer lugar, su uso estaba más extendido en ese momento, por lo que el soporte era mejor. En segundo lugar, esto significaba que había más gente versada en el lenguaje. En tercer lugar, sólo mencionar «Fortran» evoca imágenes del Jurásico, aunque injustamente, ya que sigue siendo un buen lenguaje.

Yo consideraría Julia, pero probablemente volvería a C o C++. Los reclamos con Julia es que se acerca a la eficiencia de un lenguaje compilado, pero la debida diligencia requeriría que usted pruebe esto por sí mismo, en su aplicación en su hardware. Cuando se trata de miles y miles de instancias de simulación distribuidas a través de cientos/miles de colas, agitando muchos datos, te diré que el rendimiento es crucial a menos que quieras gastar mucho dinero en más y más hardware para ponerte al día por la mala elección del lenguaje. Recuerda que no hay almuerzo gratis. Todos los lenguajes informáticos tienen su propósito, y esa es, después de todo, la razón de esta pregunta, ¿no es así? No hay nada malo con la reutilización de métodos, bibliotecas y demás, sólo asegúrate de que están bien probados antes de gastar el tiempo en construir tu simulación alrededor de ellos.

Yo escribiría algunos algoritmos de prueba que serán del tipo más probable que se usen y del tipo más intensivo. Escríbelos con las mejores prácticas para el lenguaje y orientados a una ejecución óptima. Luego probarlos. Una comparación completa, un benchmarking entre todos los métodos que pretendas utilizar. En otras palabras, si usted está presentando colas de lotes, entonces haga esa prueba exacta y registre todo. Hágalo con un conjunto de muestras suficiente para el problema, analice los resultados y entonces tendrá su respuesta. Usted va a gastar un montón de tiempo en el desarrollo de ese código y es en su gran ventaja para pasar el tiempo por adelantado con la evaluación.