この質問には、実際には2つの主要な側面があります。初めに、私は物理モデリングに完全に慣れていないことを認めなければなりません。また、回答されるだけでなく、修正されることを嬉しく思います。それを見つけた人が長すぎて読みにくい場合、簡単な要約:
1) Simulink vs Modelica
2) Simscape vs Modelica
1)最初のモデル化アプローチの比較です。従来、比較したい2つの主なアプローチには異なる名前があります。
#シグナルフローアプローチ/ブロックベースモデリング/因果モデリング...:の典型的なモデルSimulink。入力と出力、およびその間の伝達関数を含むボックスがあります。
対
#ネットワークアプローチ/コンポーネントベースのモデリング/非因果的(非因果的)モデリング...:信号I/Oの代わりに物理ポートとフローエンティティ(電流、熱など)が両方向に流れることができます。
この比較では、ウェブでいくつかの意見を読んだり、論文を検索したりしました。私の知る限り、それはModelicaベースの開発環境とSimulink (たとえば) の比較に帰着します。これらの2つの短所と利点は、他の質問したい点よりもはっきりしています。
2)最初の比較について詳しく読んだ後、コンポーネントベースのモデリングを使用する方がより好ましいと思いました。ただし、Modelicaが唯一のオプションではありません。 Simscape もあります。これを使用して、Simulinkのブロックベースのモデリングで Combine physical ports (Modelicaと同様)を使用できます。
このSimscapevsModelica比較の長所と短所を知りたいのですが。誤解を避けるために、Modelicaは言語であることを強調する必要があります。したがって、Modelica環境をSimscapeと比較する方が意味があります。たとえば、OpenModelicavsSimscape
さて、誰もこれに答えていないようなので、私はそれに挑戦します。
あなたはあなたの最初の質問に対する質問を理解したようです。基本的な答えは、因果モデリングにはyouによる多くの事前の作業が含まれるということです。さらに悪いことに、異なる因果関係をサポートしたい場合は、コンポーネントを再実装するか、異なる因果関係をサポートする複数のバージョンを用意する必要があります。連続的な動作と離散的な動作を混合する複雑な物理のモデリングは、因果関係を分類するこのような面倒で時間のかかるエラーが発生しやすい作業をすべて行う必要がないため、十分に注意が必要です。
それでは、SimScapeとModelicaの2つ目の質問をさせていただきます。 SimScapeは、前の段落で述べた問題を認識しているようです。正直なところ、サードパーティがSimScape対Modelicaの分析を提供することは困難です。なぜなら、多くの場合、他の人々とは異なる可能性のある要因に依存するからです。
さらに、私はSimScapeをあまり使用していないので、あまりコメントできません。しかし、私は確かにModelicaの強さをあなたに言うことができます。 Modelicaは、ほぼ同等の開発者、ユーザー、学者で構成されるデザイングループによって開発されました。これが実際にModelicaの優れた強みであると思います。そのため、新機能を成功させるには、すべてのグループのサポートが必要でした。 1つのグループによる影響力が大きすぎると、私の意見では有害です。
Modelicaのオープン性は、さまざまなツール(無料および商用)からModelicaのサポートを受けることができることを意味します。これは、さまざまなライブラリが数多く存在することを意味します。このオープン性は、仕様自体だけでなく、エコシステム(オープンツール、オープンライブラリなど)にも関係します。
最後に、証明は、人々が解決しているさまざまなタイプの問題すべてを実際に見ていることです。 Modelicaは、非常に多様な問題を解決するために、幅広いエンジニアリングドメインで使用されています。これは、私の意見では、言語とライブラリの設計の健全性の証拠です。この成功は、多くのマーケティング費用の結果ではなく、テクノロジーが根本的に強力であり、世界中の人々がこれを認識し、現実の世界の問題を解決するために何度も繰り返し使用しているという事実の結果です。
過去のModelicaカンファレンスの論文をご覧になることをお勧めします。すべての論文は modelica.org から無料でオンラインで入手できます。
恥知らずなプラグイン:幅広いエンジニアリング分野の例を介してModelicaを学びたい場合は、無料のインタラクティブなオンラインブック Modelica by Example を確認してください。
この比較では、クラッシュポイントはFMIインポート/エクスポート機能である可能性があります。
Functional Mock-Up Interface は、さまざまなモデリング環境間でのモデルの転送と共有のための非常に有望なソリューションです。抽出された機能モックアップユニット(FMU)は、別の環境にインポートしたり、サードパーティのツールを使用して数値的にシミュレーションしたりできます。
ほとんどのModelicaプラットフォームは、適切なFMIインポート/エクスポート機能を提供します。少なくとも、OpenModelica、JModelica.org、MapleSimについて言えます。可用性の詳細については、 こちらをご覧ください 。
Matlab/Simulinkはどの程度支持的ですか?彼らはこの可用性を提供すると言われていますが、MathWorksからダウンロードできる公式パッケージはありません。 FMI Toolbox や Simulink CoderのFMIターゲット のようなサードパーティパッケージがありますが、それらは商用のようです。 Modelonのパッケージのデモ版であるFMI Toolboxを試しましたが、デモ版を使用すると、デモ版で提供されたモデルでしか機能しません。
this link によると、実際にはSimulink用の別の公式FMIパッケージがあります。私は彼らに手を差し伸べて、研究プロジェクトのためにそれを見て試してみることができるかどうか尋ねました(嘘ではありません、それは研究プロジェクトでした)。ツールは、リンクに記載されているチームにメールで送信することによってのみ取得でき、FMIインポート(エクスポートなし)の機能しかありません。商用ツールであるSimulinkは、モデルが他の環境に逃げることを望んでいません。コメントでわかるように、このパッケージは、2017年9月20日にリリースされたSimulink R2017bの公式リリースに含まれています。
一般に、ModelicaプラットフォームはFMIをはるかにサポートしており、将来的に多くの問題を解決することができます。ただし、これまでのところ、モデルを解くためにFMIを使用した素晴らしい経験はありませんでした。 OpenModelicaの結果と、同じモデルから抽出されたFMUを使用したソリューションとの間に不一致が生じる場合があります。モデル交換のソルバーオプションは制限されています。共同シミュレーションについては、何か間違ったことをしたのかもしれません。しかし、私の考えでは、これは改善が必要な非常に有望なツールです。
FMI規格が2012年に抱えていた問題に関する調査は、 ここにあります です。 FMI 2.0のリリース後、これらの問題のほとんどは解決されたと言われています。私はここに感謝します Christian Bertsch 私が投稿した誤った情報を訂正してくれた可能性があります。一般的に、FMIは業界で非常に重要になる重要なツールです。その利点と FMIをサポートするツール は、そのWebサイトにあります。
Physiolobraryおよび現在のPhysiolibrary.modelsの共著者としての私の個人的な経験。
私たちのグループでは、Modelicaでは因果的アプローチと信号指向アプローチの組み合わせが適切であると結論付けました。非因果的アプローチは、モデル化されたシステムの基本的な物理法則をモデル化するコンポーネントを組み合わせるのに適しています-そのようなコンポーネントはより再利用可能です。因果関係がわかっている、または仮説が立てられているモデル化されたシステム(心拍数の制御など)に独自のコンポーネントを追加するには、信号アプローチが適切です https://doi.org/10.1016/j.compbiomed.2014.08.025 または最近 https://doi.org/10.1016/j.bbe.2017.08.001
Simscapeの1つの欠点は、ライブラリ、またはライブラリの欠如です。モデル化する心臓血管系では、電気回路の類推を使用する必要がある場合があります。この単純化は通常、研究や業界で受け入れられていますが、正確さが失われ、エラーの可能性が高くなる可能性があります。これは、サードパーティのライブラリPhysiolibraryが利用可能になるまで、Modelicaでも問題でした。
ただし、ModelicaでSimscapeモデルを再現(再実装)する方がはるかに簡単です。紙の中 http://mj.mefanet.cz/mj-04140914 どのブロック指向モデルよりも-ModelicaまたはSimulinkのどちらでも問題ありません。