MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

凸最適化によるヒューマノイドロボット制御論文調査メモ

目次

  • 目次
  • はじめに
  • メモ
  • 参考資料
  • MyEnigma Supporters

はじめに

凸最適化によるヒューマノイドロボット制御論文調査メモです。

続きを読む

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

目次

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

はじめに

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

qiita.com

 

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

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

myenigma.hatenablog.com

 

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

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

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

github.com

 

続きを読む

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

目次

  • 目次
  • はじめに
  • 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

目次

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

はじめに

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

qiita.com

 

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

myenigma.hatenablog.com

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

 

続きを読む

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

目次

  • 目次
  • はじめに
  • 割り当て問題
  • 集合場所問題
  • カックロ
  • 参考資料
  • 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によるサンプルプログラム


講座・数理計画法〈6〉整数計画法 (1981年)

目次

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

はじめに

これまで

様々な最適化の手法や、

myenigma.hatenablog.com

myenigma.hatenablog.com

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

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

myenigma.hatenablog.com

myenigma.hatenablog.com

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

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

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

   

混合整数計画法に関しては、下記を参照ください。

speakerdeck.com

 

続きを読む

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

 

目次

  • 目次
  • はじめに
  • 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を使ってシンプルな電力供給最適化問題を解いてみる

目次

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

はじめに

これまで、

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

myenigma.hatenablog.com

myenigma.hatenablog.com

今回は、

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

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

 

続きを読む

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

 

目次

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

注意 (2020年8月追記)

この記事は非常に古く、Julia 1.0以降では利用できません。。。

現時点で単一バイナリを作る方法はなくなってしましましたが、

Juliaのランタイムも含めて一つのディレクトリにまとめるのは、

PackageCompiler.jlで実現可能です。

github.com

 

はじめに

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

myenigma.hatenablog.com

Juliaを使って、

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

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

 

Juliaは動的な言語なので、

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

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

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

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

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

 

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

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

github.com

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

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

 

続きを読む