Question

Je travaille avec de nombreux modèles et simulations différentes. Certains des modèles et des simulations plus anciennes sont en Fortran. Certains de ces modèles ont été convertis en C ++, mais la tendance actuelle est de créer ces modèles Matlab / Simulink. Du point de vue de la science informatique, je me suis toujours senti Matlab / Simulink était pas une bonne solution. Quelle langue utilisez-vous pour créer des modèles et des simulations et pourquoi?

Était-ce utile?

La solution

Je travaille aussi avec beaucoup de code existant, la plupart dans Fortran. Je ne me dérange pas en utilisant Fortran - tous les compilateurs modernes permettent des noms de variables plus que l'ancien et stupide limite de 6 caractères. De plus, si vous vous sentez que vos modifications au code existant profiteraient avec Fortran 95, vous pouvez même faire POO.

En outre, il y a de très bons éditeurs de code pour Fortran, ce qui est toujours le cas pour les langages de script plus spécialisés.

C ++ a le grand inconvénient de considérations de mémoire. Je suis programmation C / C ++ pour plus de 20 ans maintenant, et j'oublie toujours supprimer des objets et remplir correctement Destructeurs.

Sur une note finale, si vous utilisez Windows, il y a un compilateur Fortran.NET (je pense de Lahey-Fujitsu?) Si vous voulez déplacer votre Fortran à un environnement géré.

Bonne chance!

Autres conseils

Je toujours essayer d'utiliser la langue qui est fourni par la meilleure modélisation et la simulation outil (ou bibliothèque, si vous le souhaitez) pour faire le travail pour moi.

Et cette question ne peut vraiment répondre en tenant compte de ce que types de modèles que vous souhaitez mettre en œuvre. En continu (par exemple des équations différentielles discrètes), (par exemple StateCharts, réseaux de Petri), ou une combinaison (par exemple un modèle hybride, comme on peut être mis en œuvre avec Simulink Stateflow +)? Il existe différents outils pour chaque type de modèle.

Un autre aspect important serait le domaine dans lequel vous travaillez. Simulink possède des bibliothèques assez vastes pour l'électrotechnique, de la finance ou la biologie computationnelle (la plupart d'entre eux sont inclus dans des emballages supplémentaires, si) - si vous travaillez dans un de ces domaines, il pourrait tout simplement pas de meilleur (c.-à-complet, valide) bibliothèque de composants . La même chose vaut pour d'autres logiciels de simulation commerciale, tels que AnyLogic , Arena , etc. Il peut aussi y avoir des outils de simulation open source, en fonction de votre problème de modélisation.

Enfin, vous pouvez préférer un langage de programmation spécifique sur une autre, et vous pourriez avoir des exigences supplémentaires, par exemple support pour

  • Optimisation (des paramètres du modèle)
  • Validation
  • Analyse de sortie (statistiques, parcelles, tests statistiques)
  • Prise en charge parallèle et simulation distribuée
  • vérification du modèle
  • ...

Je travaille actuellement avec Java avec les avantages bien connus - assez rapide, un bon support pour le multi-threading, relativement simple à utiliser, etc. Mais si « raisonnablement rapide » est pas assez rapide, il pourrait y avoir aucune option mais en descendant un niveau d'abstraction: -)

SIMULA bien sûr !! : -)

Ce que je suis sorti de Matlab est sa capacité à me laisser prototype rapidement un algorithme. Je peux vraiment obtenir une bonne idée pour les données en traçant et en utilisant les fonctions intégrées de statistiques. Lorsque vous essayez quelque chose de nouveau, je peux faire quelque chose de rapide et sale pour obtenir des premiers résultats, puis revenir et les choses propres jusqu'à affiner mes résultats. Avec les langages compilés, il y a beaucoup plus que je dois le faire pour obtenir la simulation de fonctionner. Matlab, je passe plus de temps à réfléchir sur le problème réel, et moins sur la compilation, la liaison, la gestion de la mémoire, etc.

Cependant, il y a beaucoup de problèmes que Matlab est tout simplement mal outillé pour résoudre. Pour les grands ensembles de données, un langage compilé avec des structures de données définies par l'utilisateur est certainement nécessaire.

La physique des particules a été le déplacement de C ++ et python. Ce n'est pas universel, et probablement ne serait même pas proche était-il pas pour l'ubiquité de ROOT .

L'utilisation de Racine de Cint signifie que vous aviez besoin embêter avec la gestion de la mémoire lorsque vous dinking autour d'une idée nouvelle, il est la capacité d'exécuter des compilé vous permet d'avoir la vitesse, la possibilité de mélanger les modes est très utile, et les fixations pour Python et d'autres langues RAD permettent une grande flexibilité.

Dans un sens très réel, cela revient à une approbation de roland point de '.

vous pouvez utiliser le bloc s-funcuin pour relier Fortran (c, c ++) avec Matlab.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top