Pregunta

Trabajo con muchos modelos y simulaciones diferentes.Algunos de los modelos y simulaciones más antiguos están escritos en FORTRAN.Algunos de esos modelos se han convertido a C++, pero la tendencia actual es crear estos modelos utilizando MATLAB/SIMULINK.Desde una perspectiva informática, siempre sentí que MATLAB/SIMULINK no era una buena solución.¿Qué lenguaje utilizas para crear modelos y simulaciones y por qué?

¿Fue útil?

Solución

También trabajo con una gran cantidad de código heredado, la mayor parte en Fortran. Realmente no me importa usar Fortran - todos los compiladores modernos permiten que los nombres de variables mayores que el límite de edad de 6 caracteres y tonto. Además, con Fortran 95, incluso se puede hacer programación orientada a objetos, si usted siente que sus modificaciones a la base de código existente se beneficiarían.

Además, hay muy buenos editores de código de Fortran, lo cual no es siempre el caso para lenguajes de script más especializados.

C ++ tiene la gran desventaja de consideraciones de memoria. He sido la programación C / C ++ por más de 20 años, y todavía me olvido de eliminar objetos y debidamente lleno de destructores.

En una nota final, si está usando Windows, no es un compilador Fortran.NET (creo que desde Lahey-Fujitsu?) Si usted quiere mover su Fortran a un entorno administrado.

Buena suerte!

Otros consejos

Siempre intentaría utilizar el lenguaje proporcionado por el mejor modelado y simulación. herramienta (o biblioteca, si lo desea) para que haga el trabajo por mí.

Y esta pregunta sólo puede responderse teniendo en cuenta lo que tipos de modelos que desea implementar.Continuo (por ej.EDO), discretas (p. ej.StateCharts, Petri Nets) o una combinación (es decir,¿Un modelo híbrido, como se puede implementar con Simulink+StateFlow)?Existen varias herramientas para cada tipo de modelo.

Otro aspecto importante sería la dominio en el que estás trabajando.Simulink tiene bibliotecas bastante extensas para ingeniería eléctrica, finanzas o biología computacional (aunque la mayoría de ellas están incluidas en paquetes adicionales); si trabaja en uno de esos campos, es posible que simplemente no haya nada mejor (es decir,biblioteca de componentes completa y válida).Lo mismo ocurre con otros paquetes de simulación comerciales, como Cualquier lógica, Arena, etc.También puede haber algunas herramientas de simulación de código abierto, según su problema de modelado.

Finalmente, es posible que prefieras un lenguaje de programación específico sobre otro y que tengas requisitos adicionales, p.apoyo para

  • Optimización (de parámetros del modelo)
  • Validación
  • Análisis de resultados (estadísticas, gráficos, pruebas estadísticas)
  • Soporte para simulación paralela y distribuida.
  • Comprobación de modelos
  • ...

Actualmente estoy trabajando con Java con las ventajas bien conocidas: razonablemente rápido, buen soporte para subprocesos múltiples, relativamente simple de usar, etc.Pero si 'razonablemente rápido' no es lo suficientemente rápido, puede que no haya otra opción que bajar un nivel de abstracción :-)

Simula por supuesto !! : -)

Lo que he salido de MATLAB es su capacidad para dejarme prototipo de un algoritmo rápido. Realmente puedo conseguir una buena sensación para los datos mediante el trazado y utilizando el construido en funciones estadísticas. Al intentar algo nuevo, puedo hacer algo rápido y sucio para obtener algunos resultados iniciales, y luego volver y limpiar las cosas hasta afinar mis resultados. Con lenguajes compilados, hay mucho más que tengo que hacer para conseguir la simulación para funcionar. Con MATLAB, paso más tiempo pensando en el problema real, y menos acerca de compilar, enlazar la gestión de memoria, etc.

Sin embargo, hay muchos problemas que MATLAB es simplemente mal equipada para resolver. Para grandes conjuntos de datos, un lenguaje compilado con estructuras de datos definidas por el usuario es casi seguro que sea necesario.

La física de partículas se ha estado moviendo a C ++ y Python. Esto no es universal, y probablemente ni siquiera estaría cerca si no fuera por la ubicuidad de RAÍZ .

El uso de la raíz de la cint significa que necesita molestarse con la gestión de memoria cuando se está bebedero alrededor con una nueva idea, que es la capacidad Para ejecutar compilado le permite tener la velocidad, la capacidad de mezclar los modos es muy útil, y los enlaces para pitón y otras lenguas RAD permiten una gran flexibilidad.

En un sentido muy real, esto se reduce a una aprobación de Roland 's punto de .

puede utilizar bloque de s-funcuin para ligarse FORTRAN (c, c ++) con MATLAB.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top