2009-06-03 5 views
4

私は多くの異なるモデルとシミュレーションを使用しています。古いモデルやシミュレーションのいくつかはFORTRANで書かれています。これらのモデルの一部はC++に変換されていますが、現在のトレンドはMATLAB/SIMULINKを使用してこれらのモデルを作成することです。コンピュータ科学の観点から、私はいつもMATLAB/SIMULINKが良い解決策ではないと感じました。モデルやシミュレーションを作成するために使用する言語は何ですか?なぜですか?モデリングとシミュレーションプログラミング言語

+0

私は実際にMATLAB/SIMULINKが優れたモデリングソリューションではないと感じた理由について興味があります。あなたは彼らが好きではない/あなたのモデルに当てはまるとは思わない特別な理由がありますか? – gnovice

+0

これは私が見たアプリケーションだけかもしれませんが、それらはすべて非常に遅く実行され、使用可能なコンピュータリソースをフルに活用しません。 – SchwartzE

+0

この関連する質問を参照してください:[http://stackoverflow.com/questions/179904/what-is-matlab-good-for-why-is-it-so-used-by-universities-when-is-it-better -tha](http://stackoverflow.com/questions/179904/what-is-matlab-good-for-why-is-it-so-used-by-universities-when-is-it-better-tha) – MatlabDoug

答えて

4

私はまた、多くのレガシーコードで動作します。そのほとんどはFortranで動作します。私は実際にFortranを使用しても構いません。すべての現代のコンパイラでは、変数名は古いものと愚かな6文字の制限よりも大きくできます。また、Fortran 95では、既存のコードベースを変更すると効果があると感じる場合でもOOPを行うことができます。

また、Fortranには非常に優れたコードエディタがあります。これは、より特殊化されたスクリプト言語の場合に必ずしも当てはまるわけではありません。

C++にはメモリに関する大きな欠点があります。私は20年以上前からC/C++をプログラミングしていましたが、オブジェクトを削除してデストラクタを正しく埋めることは忘れてしまいました。

最後に、Windowsを使用している場合、Fortranを管理対象環境に移行する場合は、Fortran.NETコンパイラがあります(私はLahey-Fujitsuの考えですか?)。

幸運を祈る!

7

私はいつも、最高のモデリングとシミュレーションツール(または好きな場合はライブラリ)によって提供されている言語を使用して、私の仕事をしようとします。

この質問は実際に実装したいモデルの種類を考慮することによってのみ答えることができます。連続型(ODEなど)、離散型(StateCharts、ペトリネットなど)、または組み合わせ(つまり、Simulink + StateFlowで実装できるハイブリッドモデル)各種類のモデルにはさまざまなツールがあります。

もう1つの重要な側面は、作業中のドメインです。 Simulinkには、電気工学、金融、コンピュータ生物学のための非常に豊富なライブラリがあります(そのほとんどは追加パッケージに含まれています)。もしそれらのフィールドの1つで作業すれば、単に完全で有効なコンポーネントライブラリ。 AnyLogic,など、他の商用シミュレーションパッケージでも同じことが言えます。モデリングの問題によっては、オープンソースのシミュレーションツールもあるかもしれません。

最後に、特定のプログラミング言語を別の言語よりも優先したい場合や、追加の要件が必要な場合があります。 (モデルパラメータの)

  • 最適化
  • のサポート検証
  • 出力分析(統計、プロット、統計的検定)
  • をチェックする並列分散シミュレーション
  • モデルのサポート。.. 。

私は現在、Javaで作業していますよく知られている利点 - 合理的に速く、マルチスレッドのための優れたサポート、比較的簡単な使用などしかし、「合理的に速い」速度が十分に速いとは限りませんが、抽象化のレベルを下げることはできません:-)

1

粒子物理学はC++とPythonに移行しています。これは普遍的なものではなく、たぶん普遍的ではないでしょう。普遍性のためでないのはROOTです。

RootのCintを使用すると、新しいアイデアを思いついたときにメモリ管理に気を使う必要があります。コンパイルして実行すると速度が向上し、モードを混在させる機能が非常に役立ち、バインディングPythonや他のRAD言語では、大きな柔軟性が得られます。

非常に現実的には、これはroland's pointの裏書になります。

4

SIMULAもちろん! :-)

+0

+1私が質問を読むとき、私は[SIMULA] [1]へのポインタで回答を投稿するのか、ちょうどコメントを投稿するのか議論していた[1] [1]:http://en.wikipedia.org/wiki/Simula –

2

私がMATLABから得たことは、アルゴリズムを素早くプロトタイプ化できることです。私は実際にデータをプロットし、組み込みの統計関数を使用することによって、データに対する良い感覚を得ることができます。新しいものを試すときは、初期の結果を得るために何かをすばやくやり直してから、戻ってきて結果を洗練することができます。コンパイルされた言語では、シミュレーションを実行するためにはもっとたくさんのことがあります。 MATLABを使用すると、実際の問題を考え、コンパイル、リンク、メモリ管理などを考えるのに多くの時間を費やします。しかし、MATLABが解決するには不十分な問題がたくさんあります。大規模なデータセットの場合、ユーザー定義のデータ構造を持つコンパイルされた言語がほぼ確実に必要です。

0

Fortran(c、C++)とmatlabをリンクするためにs-funcuinブロックを使用できます。

関連する問題