MyEnigma

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

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をコンパイルし、実行する手法を紹介したいと思います。

 

続きを読む

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

目次

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

はじめに

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

 

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

 

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

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

続きを読む

最大流問題(Max Flow Problem)とPython, Juliaによる解法サンプルプログラム

目次

  • 目次
  • はじめに
  • 最大流問題(Max Flow Problem)
  • Juliaによるサンプルプログラム
  • scipyによる最大流問題の解法
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで、最適化問題の代表的な問題である

ポートフォリオ最適化や、

myenigma.hatenablog.com

ナップサック問題問題などを

myenigma.hatenablog.com

最適化ライブラリで解く方法を紹介してきましたが、

今回は最大流問題(Max Flow Problem)という

こちらも有名な最適化問題の概要と、

それをプログラムで解く方法について紹介したいと思います。

 

続きを読む

Python3のtkinterによるクロスプラットフォームGUIアプリ作成入門

目次

  • 目次
  • はじめに
  • tkinterのバージョンを確認する
  • Windowを作る
  • ラベルやフォントを使う
  • ステータスバーに文字などを表示する
  • ボタンを作る
  • 画像の表示とWidgetのグリッド配置
  • Canvasに図形を描く
  • メニューバーを作る
  • チェックボックスを使う
  • 一行のフォームに文字や数値を入力できるようにする
  • Frameでウィジェットをグループ化する
  • リストボックスを作る
  • メニューバーを作る
  • スクロールバーを作る
  • タイトル付きフレームを作成する
  • ファイルダイアログでファイルを選択する
  • メッセージボックスを作る
  • MatplotlibのグラフをtkinterのWidgetとして埋め込む
  • Pythonのその他GUIライブラリ
    • pyqt
    • kivy
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、PythonのGUIフレームワークとして、

PyQtや

myenigma.hatenablog.com

kivyを紹介しましたが、

myenigma.hatenablog.com

上記のような、外部ライブラリだと

ユーザにそれらのライブラリをインストールをしてもらう必要があるため、

気軽に使えない場合がありました。

 

PythonにはデフォルトのGUIフレームワークとして

tkinterがあるのですが、

TkInter - Python Wiki

25.1. tkinter — Python interface to Tcl/Tk — Python 3.6.8 documentation

見た目がかなり野暮ったかったので、

Pythonさえインストールしておけば使えるという特徴はあったのですが、

あまり使う気が起きませんでした。

tkinter - Google 検索

 

しかし先日、

下記の記事で紹介した通り、

myenigma.hatenablog.com

最近のPython3.6.xでは、

tkinterがバージョンアップしており、

tkinterのversion8.0以降はかなりGUIの見栄えが改善され、

各OSにフィットしたものになっています。

 

そこで今回は

今回はこのtkinterの簡単な使い方について紹介したいと思います。

 

下記のサンプルコードはすべて書きのGitHubリポジトリ上でも公開しています。

github.com

 

続きを読む