MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

打ち上げロケットの非線形モデル予測制御問題をJuliaで解いてみた

ロケット工学基礎講義

ロケット工学基礎講義

目次

  • 目次
  • はじめに
  • シンプルなロケット打ち上げモデル
  • Juliaによるサンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

この記事は制御工学 Advent Calendar 2017 23日目の記事です。

qiita.com

 

以前の記事で、SpaceXの自動着陸ロケットは、

線形MPCを使っているようだという記事を書きましたが、

myenigma.hatenablog.com

 

今回は、下記の資料を元に、

非常にシンプルなロケットの打ち上げ制御シミュレーションを

Juliaを使って書いてみようと思います。

github.com

 

続きを読む

Model Predictive Control:MPC (モデル予測制御)の技術分類

Model Predictive Control: Classical, Robust and Stochastic (Advanced Textbooks in Control and Signal Processing)

Model Predictive Control: Classical, Robust and Stochastic (Advanced Textbooks in Control and Signal Processing)

目次

  • 目次
  • はじめに
  • Linear Time Invariant MPC: LTI-MPC
  • Linear Time Varying MPC: LTV-MPC
  • Nonlinear MPC
  • Explicit MPC
  • Hybrid MPC
  • Distributed/Decentralized MPC
  • Robust MPC
  • Stochastic MPC
  • 参考資料
  • MyEnigma Supporters

はじめに

この記事は制御工学 Advent Calendar 2017 20日目の記事です。

qiita.com

 

以前、

Model Predictive Control:MPC(モデル予測制御)の概要と、

myenigma.hatenablog.com

その応用例を説明しましたが、

myenigma.hatenablog.com

今回は、MPCの細かい技術的分類について説明したいと思います。

 

続きを読む

Juliaの構造体とPythonのif __name__ == '__main__':を模擬するTips

Learning Julia: Build high-performance applications for scientific computing

Learning Julia: Build high-performance applications for scientific computing

目次

  • 目次
  • はじめに
  • Pythonのif name == 'main': をJuliaで実現する
  • Juliaにおける構造体
  • 参考資料
  • MyEnigma Supporters

はじめに

この記事はJulia Advent Calendar 2017の20日目の記事です.

qiita.com

 

以前、プログラミング言語のJuliaを紹介しましたが、

myenigma.hatenablog.com

最近気がついたJuliaのTipsをまとめてみました。

 

続きを読む

〇〇大 数学科の問題をJuliaの最適化ツールで解いてみた

1対1対応の演習/数学3 微積分編 (大学への数学 1対1シリーズ)

1対1対応の演習/数学3 微積分編 (大学への数学 1対1シリーズ)

目次

  • 目次
  • はじめに
  • 割り当て問題
  • 集合場所問題
  • カックロ
  • 参考資料
  • MyEnigma Supporters

はじめに

この記事はJulia Advent Calendar 2017の18日目の記事です.

qiita.com

 

今回は下記の記事と同じことをJuliaでやってみました。

qiita.com

上記の記事はすべてPythonで書かれていますが、

今回はプログラミング言語としてJuliaを、

myenigma.hatenablog.com

最適化ライブラリとしては、JuMPを使いました。

myenigma.hatenablog.com

 

各問題の詳細については、前述の元の記事を参照ください。

 

続きを読む

サポートベクターマシン(Support Vector Machine:SVM)を最適化ライブラリを使って実装してみた。

サポートベクトルマシン (機械学習プロフェッショナルシリーズ)

サポートベクトルマシン (機械学習プロフェッショナルシリーズ)

目次

  • 目次
  • はじめに
  • 線形サポートベクターマシン(Support Vector Machine:SVM)
  • JuliaとJuMPを使った線形SVMの実装
  • 非線形SVM
  • JuliaとJuMPを使った非線形SVMの実装
  • 参考資料
  • MyEnigma Supporters

はじめに

今回は以前紹介した

凸最適化技術の応用例の中で、

myenigma.hatenablog.com

最も有名なものの一つである

サポートベクターマシン(Support Vector Machine:SVM)の技術の概要と、

シンプルなSVMを実際に最適化ライブラリを使って

実装したコードを紹介したいと思います。

 

続きを読む

Mixed Integer Programming(混合整数計画法)による障害物回避モデル予測制御とJulia, Pythonによるサンプルプログラム

Excelで学ぶ オペレーションズリサーチ

Excelで学ぶ オペレーションズリサーチ

目次

  • 目次
  • はじめに
  • Mixed Integer Programming(整数計画法)によるモデル予測制御技術
  • Juliaによるシンプルなサンプルプログラム
  • Pythonサンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで

様々な最適化の手法や、

myenigma.hatenablog.com

myenigma.hatenablog.com

それを利用した制御手法である

モデル予測制御の概要を説明してきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

今回は、下記の論文を元にして、

Mixed Integer Programming(整数計画法)によるモデル予測制御技術の概要の説明と、

Juliaによるシンプルなシミュレーションを紹介したいと思います。

 

続きを読む

Jupyter notebook (iPython Notebook)を使う時に気をつけるべき10個のこと

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

 

目次

  • 目次
  • はじめに
  • 1. 環境の独立性を保つために各プロジェクト毎にvirtualenvを使う
  • 2. Python3を使う
  • 3. requirements.txtを保存しておく
  • 4. すべてのimport文とパスの設定は初めのセルに入れる
  • 5. はじめはコードは汚くても良い
  • 6. グローバル名前空間を汚さないために、セルの中の処理は関数とする
  • 7. 長い計算時間の結果をキャッシュするためにJoblibを使う
  • 8. セルの独立性をできるだけ保つ
  • 9. 変数名は短くても良い
  • 10. ユーティリティ関数にはアサーションを使ってテストを書く
  • 参考資料
  • MyEnigma Supporters

はじめに

自分もJupyter notebookは

簡単な試行錯誤をメモとして残すために便利に使っていますが、

myenigma.hatenablog.com

規模が大きくなったり、

他の人とノートブックを共有したりする時に、

どのように構造化すべきかと悩むことが多いです。

 

そんな時、下記にような記事を見つけたので、

medium.com

作者に翻訳の許可をもらったので、

要約をメモしておきたいと思います。

 

続きを読む

Pythonを使ってシンプルな電力供給最適化問題を解いてみる

電力供給が一番わかる (しくみ図解)

電力供給が一番わかる (しくみ図解)

目次

  • 目次
  • はじめに
  • シンプルな電力供給最適化問題
  • Pythonによるシンプルな電力供給最適化問題解法サンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで、

様々な代表的な最適化問題を解いてきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

今回は、

最小コストネットワークフロー問題という問題を解くことで、

シンプルな電力供給最適化問題を解いてみたいと思います。

 

続きを読む

Juliaのコードをコンパイルして高速実行する方法

Juliaデータサイエンス―Juliaを使って自分でゼロから作るデータサイエンス世界の探索

Juliaデータサイエンス―Juliaを使って自分でゼロから作るデータサイエンス世界の探索

  • 作者: Anshul Joshi,石井一夫,岩中公紀,太田博三,大前奈月,兼松正人,古徳純一,菅野剛,高尾克也,中村和敬
  • 出版社/メーカー: エヌ・ティー・エス
  • 発売日: 2017/09/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

 

目次

  • 目次
  • はじめに
  • Juliaにおけるコンパイル
  • Juliaのコードをコンパイルするスクリプトjuliac
  • JuMPの最適化コードをjuliacでコンパイルして高速化してみる
  • juliacを使う時の注意点
    • 現在の所、コンパイルするjuliaのコードはhello.jlという名前でないとCコードを変更する必要がある
    • PyCallが含まれたコードはコンパイルできない
    • JuMPのコードをコンパイルする時は、配列のインデックスの始まりは1にする
    • JuMPの非線形最適化のマクロがあるとコンパイルできない
  • 参考資料
  • MyEnigma Supporters

はじめに

最近、Juliaというプログラミング言語にハマっているのですが、

myenigma.hatenablog.com

Juliaを使って、

高計算パフォーマンスなシステムを構築したい時に

やはりコンパイルできたらいいなと思ってしまいます。

 

Juliaは動的な言語なので、

実行時にJITコンパイラを使ってコンパイルをしながら

コードを実行するのですが

すでにコードがfixされたコードであっても、

実行するたびにコンパイルする必要があるため、

その分、実行が遅くなりがちです。

 

しかし最近、下記の記事や、

下記のリポジトリのライブラリなどのように、

github.com

Juliaをコンパイルする取り組みが始まっているので、

今回はJuliaをコンパイルし、実行する手法を紹介したいと思います。

 

続きを読む

カナダに旅行する際に知っておくと便利なこと

B16 地球の歩き方 カナダ 2017~2018

B16 地球の歩き方 カナダ 2017~2018

  • 作者: 地球の歩き方編集室
  • 出版社/メーカー: ダイヤモンド・ビッグ社
  • 発売日: 2017/07/27
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

目次

  • 目次
  • はじめに
  • ビザ無しで渡航する場合、カナダ版ESTA eTAが必須
  • カナダのバンクーバではUberやLyftが使えない
  • バンクーバではCompass Cardを使ったバス・地下鉄・フェリー移動が便利
  • T-mobileユーザはカナダでローミングが5ドルでできる。
  • その他の国で気をつけるべきこと
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、初めてカナダのバンクーバに行きました。

 

カナダに初上陸した。サンフランシスコと違って街が綺麗すぎる。。(笑)

 

今回、カナダのバンクーバを訪れて、

事前に知っておくと便利だと思ったことをまとめておきます。

続きを読む