システムとモデリング

modelica, Julia, Design Structure Matrix, SysML, 他モデリング全般について。

Julia言語

Juliaで計算モデルの解析:収束判定

今回も書籍『A Biologist's Guide to Mathematical Modeling in Ecology and Evolution』 で学んだ内容を復習します。内容としては、計算モデルの収束判定です。

Interact.jlでプロットをgifにする

これまでいくつかの計算モデルを静的にプロットしてきました。 今回はJuliaのパッケージInteract.jlを使って プロットをgifにしてみます。

JuliaでCobweb plotを作成する

今回も書籍『A Biologist's Guide to Mathematical Modeling in Ecology and Evolution』 から学習した内容の備忘録になります。 計算モデルを解析する際に使用されるCobweb Plotsを作成してみます。

DiscreteモデルとContinuousモデルの違い

今回も書籍『A Biologist's Guide to Mathematical Modeling in Ecology and Evolution』 から学習した内容の備忘録になります。 ネズミが生殖により増えたり、銀行に預けたお金が複利で増えたり、人気商品だということが広まるとさらに人気になったり…… 「…

Juliaで分岐図を描画してカオスを感じる

今回はJuliaで分岐図を作成してみたいと思います。 分岐図についてですが例として以下のようなものになります。 これはロジスティック関数の分岐図でパラメーターrを増やしていくと値が発散してカオス減少が確認できるものになります。 ja.wikipedia.org 今…

Juliaで信頼性工学:ワイブル分布のプロット

唐突ですがJuliaを使って信頼性工学の勉強をしていきます。 今回参考にした書籍は以下です。 入門 信頼性工学(第2版) 確率・統計の信頼性への適用作者:福井 泰好出版社/メーカー: 森北出版発売日: 2016/07/30メディア: 単行本(ソフトカバー) ワイブル分布…

Open ModelicaをJuliaで操作する

久々にOpen Modelicaに手を出してみました。 今回はJuliaを使ってOpen Modelicaを操作してシミュレーションする試みです。 今年になってOpen ModlicaのJulia APIが開発されために可能になりました。 www.openmodelica.org 手順 パッケージOMJuliaを使用しま…

Plotly で Design Structure Matrix を描画する。

久々にDesign Structure Matrixの記事になります。 今までDesign Structure Matrixの描画にはGadfly.jlパッケージのヒートマップ機能を使用していました。 例としては以下のようなものになります。 ただこの描画方法ですとDSMの要素の有無を色でしか表現でき…

Juliaパッケージ DesignStructureMatrix.jlを制作して公式パッケージにするまで

Design Structure Matrix ( DSM )関係の関数を集めたJuliaパッケージDesignStructureMatrix.jlを公開しました。 github.com 現時点の内容としては DSMの描画 DSMのシーケンシング DSMのクラスタリング が利用できます。詳細はREADMEを御覧ください。 今回、J…

Gadfly.jlでDesign Structure Matrixを描画する。

今まではDesign Structure Matrixの描画にSeaborn.jlを使用してきました。 otepipi.hatenablog.com ただSeaborn.jlはPython環境がないと使用できない点、日本語に対応していない点が不満でしたので、描画をGadfly.jlに乗り換えたいと思います。 Gadfly.jlで…

Juliaで可到達行列をレベル分けして並び替える

Design Structure Matrixのシーケンシング関連の記事です。今回の内容は以下の記事をJuliaで自動化したものになります。 otepipi.hatenablog.com 可到達行列を並び替えて下三角行列に近い形にします。 並べ替える前の可到達行列は以下のような形になります。…

Juliaで可到達行列を求める

DSM(DesignStructureMatrix)のシーケンシングに必要なDSMの可到達行列をJuliaのプログラムで求めてみます。 可到達行列とは 以下のスライドの説明がわかりやすいと思います。 http://ise.me.tut.ac.jp/lectures/decision-making/DSS12-2.pdf DSMの隣接行列A…

DSMをJuliaでクラスタリングし、自動で整列させる

前回の記事の続きです。 otepipi.hatenablog.com 前回はJuliaでDSMのクラスタリングのみしましたが、今回はそのクラスタリング結果に基づいてDSMを並べ替えるところまでやります。 実装 実装したコードは以下のようになりました。 using LinearAlgebra using…

DSMをJuliaのクラスタリングプログラムで整理する。

今回はDSM(Design Structure Matrix)のクラスタリングコードをJuliaで実装してみます。 クラスタリングアルゴリズムについては下記記事を参照してください。 otepipi.hatenablog.com 実際には以下の記事の擬似コードをJuliaで実装し直したものになります。 o…

DSMを置換行列で並べ替える

前回の記事で行列を並べ替える置換行列を勉強しましたが、これをDSM(Design Structure Matrix)に応用してみます。 otepipi.hatenablog.com 例題 以下のDSMを対角線上に非ゼロ要素が集まるように行列演算で並べ替えます。 また、今回のDSMの隣接行列は以下の…

Metis.jlでグラフを分割する

今回はJuliaのパッケージMetis.jlでグラフを分割してみます。 github.com 以下の隣接行列からなるグラフを2つに分割してみます。 A=[0 1 0 0 1 1 0; 0 0 0 1 0 0 1; 0 1 0 1 0 0 1; 0 1 1 0 1 0 1; 0 0 0 1 0 1 0; 1 0 0 0 1 0 0; 0 1 1 1 0 0 0] Metis.par…

Juliaでスケールフリー・ネットワークの生成と可視化

前々回Juliaでランダムネットワークを生成しましたが、今回はスケールフリー・ネットワークを生成してみます。 otepipi.hatenablog.com スケールフリーネットワークとは ノードの次数分布がべき則で近似できるネットワークのことです。 一方、以前紹介したラ…

Juliaでランダム・ネットワークを生成して可視化する

この記事は以下の大著を大いに参考にしています。 いつか書評記事を書きたいですね。 ネットワーク科学: ひと・もの・ことの関係性をデータから解き明かす新しいアプローチ作者: アルバート・ラズロバラバシ,Albert‐L´aszl´o Barab´asi,池田裕一,井上寛康,谷…

DSM-Design Structure MatrixをJulia言語のheatmap(by Seaborn)で描画&ネットワーク可視化(by GraphPlot)

前回はDSM(Design Structure Matrix)をMatlabのheatmapで描画し、さらにネットワーク可視化を行いましたが、今回はJulia言語でそれをやってみます。 前回の記事は以下 otepipi.hatenablog.com heatmapでDSMの可視化 wikipediaのDSM例を描画します。 今回、…

OctaveとJuliaの行列演算速度を比較する

今回はOctaveとJuliaの行列演算速度を比較してみます。 高速と言われるJuliaですが、Octaveと比べてどの程度早いのでしょうか? 題材は以下より、n ×n行列とn×1列の積をとります。 この計算速度は一般的にO(n2)になるとされています。 MATLABとOctaveによる…

プラントの理論モデルに使用する式には注意しよう(戒め)

以下の記事に使用した計算モデルに間違いがあったため修正と、教訓のために記事を残しておきます。 otepipi.hatenablog.com otepipi.hatenablog.com 何を間違ったか プラントモデルに使用する数式を間違えました 上記記事では以下の例題を扱っておりました。…

JuliaでPID制御:自動調整の検定

これまで何回かJuliaでPID制御をする記事を書きましたが、コードの正しさを確認する検定を行っていなかったので今回はそれを確認します。 過去の記事は以下 otepipi.hatenablog.com otepipi.hatenablog.com otepipi.hatenablog.com 今回の検定内容 ジーグラ…

MarkdownでJuliaを実行する

今回は前2回と同様にMarkdown Preview Enhancedを使い、今回はJuliaを実行してみます。 otepipi.hatenablog.com otepipi.hatenablog.com shd101wyy.github.io 前提として、Juliaがシステム環境変数Pathに登録されている必要があります。 Markdownで下記のよ…

Dockerの導入とJulia/Octaveセッションの起動まで(win10 Home)

最近巷ではDockerが流行していることもあり、私も勉強のためシミュレーション環境をDockerに移行してみたいと考えています。 導入に向けての記録を備忘録代わりにとっておきます。 環境 win10 Home 64bit intel core i7 事前準備としてタスクマネージャーの…

JuliaでPIDのオートチューニング その2進捗状況

この記事中のプログラムコードには誤りがあります。 詳細は下記記事を御覧ください。 otepipi.hatenablog.com 前回からの続きです。今回は前回のオートチューニングで得られたパラメーターを当てはめてPIDしてみます。 前回は↓ otepipi.hatenablog.com 得ら…

JuliaでPIDのオートチューニング その1

この記事中のプログラムコードには誤りがあります。 詳細は下記記事を御覧ください。 otepipi.hatenablog.com 今回はJuliaでPIDパラメーターのオートチューニングを行ってみます。 今回、PIDのオートチューニングにはジーグラ・ニコルスのステップ応答を使用…

JuliaでPID制御を実装する。

前回、JuliaでPI制御を実装しましたので、今回はそれに微分ゲインを加えてPID制御にします。 otepipi.hatenablog.com 離散的であるプログラムでの実装では微分制御は以下の式で実装できます。 $$ \begin{equation} u_d(t)=k_d \frac{e_t - e_{t-1}}{⊿t} \end…

JuliaでPI制御を実装する

今回はプログラミング言語JuliaでPI制御を実装してみます。練習のため制御関係のパッケージは使用せず、一から実装してみました。 例題は下記書籍のものになります。 エンジニアのためのフィードバック制御入門作者: Philipp K. Janert,野原勉,星義克,米元謙…

Juliaで過渡応答解析(by ControlSystems)

今回はJuliaの制御工学系パッケージ"ControlSystems.jl"で遊んでみたいと思います。 GitHub github.com Document juliacontrol.github.io バネマスダンパ台車系の過渡応答解析 下記Matlab用制御工学の参考書から例題を解いてみます。 制御のためのMATLAB作者…

微分方程式を行列で差分化して解く その3

今回も前回に引き続き行列を使用して1階微分の微分方程式を解いてみます。 前回までは初期値が $$ y(0) = 0 $$ でしたが、そうではない場合について考えていきたいと思います。 前回までの内容は以下になります。 otepipi.hatenablog.com otepipi.hatenablog…