Frage

ich mit vielen verschiedenen Modellen und Simulationen arbeiten. Einige der älteren Modelle und Simulationen sind in Fortran geschrieben. Einige dieser Modelle wurden in C ++ konvertiert, aber der aktuelle Trend ist es, diese Modelle mit MATLAB / Simulink zu erstellen. Aus Informatik Perspektive haben fühlte ich mich immer MATLAB / Simulink keine gute Lösung war. Welche Sprache verwenden Sie Modelle und Simulationen zu erstellen und warum?

War es hilfreich?

Lösung

ich auch mit einer Menge von Legacy-Code arbeiten, die meisten davon in Fortran. Ich wirklich nichts dagegen, Fortran mit - alle modernen Compiler erlauben Variablennamen größer als der alte und dummen 6 Zeichen. Auch mit Fortran 95 können Sie selbst tun OOP, wenn Sie das Gefühl, dass Ihre Änderungen an der bestehenden Code-Basis profitieren würden.

Auch gibt es sehr gute Code-Editoren für Fortran, die für speziellere Skriptsprachen nicht immer der Fall ist.

C ++ hat den großen Nachteil der Speicherüberlegungen. Ich habe die Programmierung von C / C ++ für 20 Jahre jetzt, und ich vergesse immer noch Objekte zu löschen und fülle richtig in Destruktoren.

Ein letzter Punkt, wenn Sie Windows verwenden, gibt es eine Fortran.NET Compiler (ich glaube, von Lahey-Fujitsu?), Wenn Sie Ihre Fortran zu einer verwalteten Umgebung verschieben möchten.

Viel Glück!

Andere Tipps

Ich würde immer versuchen, die Sprache zu verwenden, die von der besten Modellierung und Simulation Werkzeug (oder Bibliothek, wenn Sie mögen) vorgesehen ist für mich die Arbeit zu tun.

Und diese Frage kann eigentlich nur durch die Berücksichtigung, was Art von Modellen Sie implementieren möchten beantwortet werden. Kontinuierlich (z.B. EUO), diskrete (z.B. Statechart, Petri-Netze) oder eine Kombination (d.h. ein Hybridmodell, wie sie mit Simulink + Stateflow implementiert werden)? Es gibt verschiedene Tools für jede Art von Modell.

Ein weiterer wichtiger Aspekt wäre die Domäne , in dem Sie arbeiten. Simulink hat ziemlich umfangreiche Bibliotheken für die Elektrotechnik, Finanzen oder Computational Biology (die meisten von ihnen sind in zusätzlichen Paketen enthalten, obwohl) - wenn Sie in einem dieser Felder arbeiten, gibt es einfach könnte nicht besser sein (dh vollständige gültige) Komponentenbibliothek . Das gleiche gilt für andere kommerzielle Simulationspakete, wie zum Beispiel AnyLogic , Arena etc. Es gibt auch einige Open-Source-Simulationstools sein könnte, abhängig von Ihrem Modellierungsproblem.

Schließlich könnten Sie eine bestimmte Programmiersprache über eine andere bevorzugen, und Sie können zusätzliche Anforderungen haben, z.B. Unterstützung für

  • Optimierung (von Modellparametern)
  • Validierung
  • Output-Analyse (Statistiken, Diagramme, statistische Tests)
  • Unterstützung für parallele und verteilte Simulation
  • Modellprüfung
  • ...

Also ich bin derzeit mit Java mit den bekannten Vorteilen arbeiten - recht schnell, einen guten Unterstützung für Multi-Threading, relativ einfach usw. zu verwenden, aber wenn ‚ziemlich schnell‘ nicht schnell genug ist, kann es keine Option sein aber going down eine Abstraktionsebene: -)

SIMULA natürlich !! : -)

Was ich aus MATLAB bekommen ist es die Fähigkeit, mich schnell zu lassen, einen Algorithmus Prototyp. Ich kann es wirklich ein gutes Gefühl für die Daten erhalten, indem sie Plotten und die eingebauten Statistikfunktionen. Wenn etwas Neues versucht, kann ich etwas schnell und schmutzig machen einige erste Ergebnisse zu erhalten, dann gehen Sie zurück und saubere Dinge meine Ergebnisse zu verfeinern. Mit kompilierten Sprachen, gibt es viel mehr muss ich tun, um die Simulation nur um zu laufen. Mit MATLAB, verbringe ich mehr Zeit, um über das eigentliche Problem zu denken, und weniger über das Kompilieren, Verknüpfen, Speicherverwaltung, etc.

Allerdings gibt es viele Probleme, die MATLAB nur schlecht ausgerüstet ist zu lösen. Für große Datenmengen, eine kompilierte Sprache mit Benutzerdatenstrukturen definiert ist mit ziemlicher Sicherheit notwendig ist.

Die Teilchenphysik hat C wurde bewegt ++ und Python. Dies ist nicht universell, und wahrscheinlich nicht einmal in der Nähe sein, wäre es für die Allgegenwart nicht war von ROOT .

Root Verwendung von cint bedeutet benötigt man mit Speicherverwaltung stören, wenn Sie mit einer neuen Idee sind dinking um, dann ist es Kapazität kompiliert ausführen können Sie die Geschwindigkeit haben, die Fähigkeit, die Betriebsarten zu mischen sehr hilfreich ist und die Bindungen für python und andere Sprachen RAD erlauben eine große Flexibilität.

In einem sehr realen Sinn, dies kommt auf Billigung des roland 's Punkt .

Sie können s-funcuin Block für die Verknüpfung von Fortran (c, c ++) mit Matlab.

verwenden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top