MyEnigma

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

最大流問題(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

 

続きを読む

一週間ニューヨークに旅行して、事前に知っておくと便利だと思ったこと

目次

  • 目次
  • はじめに
  • 空港からマンハッタンへの移動はLyftとUberが安くて便利
  • 地下鉄のメトロカードを使うと電車代がちょっと安くなる
  • ベタな観光名所に行く場合はCityPassとC3チケットがお得
  • 飛行機の移動を快適にしておく
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、

ニューヨークに約一週間旅行してきたのですが、

アメリカに来たって感じた。

ニューヨークに来た😁

 

ニューヨークについて事前に知っておくと

便利だと思ったことをメモしておきたいと思います。

続きを読む

Lasso正則化とRidge正則化の概要とJuliaによる最適化サンプルコード

目次

  • 目次
  • はじめに
  • Lasso正則化, Ridge正則化とは?
  • JuliaによるLasso正則化とRidge正則化最適化サンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、有名な最適化問題として

線形計画法や

myenigma.hatenablog.com

二次計画法

myenigma.hatenablog.com

ポートフォリオ最適化

myenigma.hatenablog.com

ナップサック問題

myenigma.hatenablog.com

などの説明と簡単なサンプルコードを紹介しましたが、

今回の記事では、Lasso正則化, Ridge正則化と呼ばれる

統計学や機械学習でよく使用される最適化問題の概要と、

このLasso正則化, Ridge正則化を解くサンプルコードについて紹介したいと思います。

 

続きを読む

Pythonヒッチハイクガイドを読んで学んだこと

目次

  • 目次
  • はじめに
  • Can I use python3でライブラリがpython3で利用できるか確認できる
  • pythonのリポジトリの構成
  • with構文をうまく使う
  • コードのデバッグをするときはテストファイルを作る。
  • tkinterはバージョン8.0から外見が洗練された
  • ロギングが print より優れている理由
  • PythonのテストフレームワークにはNoseを使う
  • Python製のCIサーバ Buildbot
  • Pythonの並列処理にはconcurrent.futuresを使う
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonに詳しい方が、

下記のPythonヒッチハイクガイドという

Webの資料を紹介していたので、

一通り目を通してみて

知らなかったことをメモようにまとめておきたいと思います。

英語版

日本語版

 

続きを読む

ポートフォリオ最適化問題とJuliaによるサンプルコード

目次

  • 目次
  • はじめに
  • ポートフォリオ最適化問題
  • 線形制約のみのポートフォリオ最適化
  • Juliaによるポートフォリオ最大化問題解法サンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、凸最適化技術の基礎として、

線形計画法や、二次計画法の概要を説明し、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

凸最適化の有名な応用例である

ナップザック問題を解くシミュレーションを紹介しました。

myenigma.hatenablog.com

 

今回は同じく、凸最適化の応用例として有名な

ポートフォリオ最適化問題の概要と、

ポートフォリオフォリオ最適化問題を解く、

Juliaサンプルコードを紹介したいと思います。

 

続きを読む

Juliaのコードを更に高速化する方法

目次

  • 目次
  • はじめに
  • Juliaを高速化するために注意すべきこと
    • グローバル変数を避ける
    • @timeでパフォーマンスを計測し、メモリアロケーションに注意を払うこと
    • パフォーマンス関連ツールを使う
    • 抽象型のコンテナは避ける
    • 型宣言
    • 抽象型のフィードを避ける
    • キーワード引数の型を宣言する
    • 関数を複数の定義に分ける
    • 型安定なコードを書く
    • 変数の型が変化しないようにする
    • コア関数を分ける
    • 配列はメモリの順番に列ベースでアクセスする
    • 返り値を事前にメモリ割り当てする
    • ドット演算子を使う
    • スライスのViewを使うことを検討する
    • I/Oに対する文字列補間を避ける
    • Depreciation Warningを修正する
    • 細かいTips
    • パフォーマンス向上のためのマクロ
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、

MATLABのコードの高速化手法や

myenigma.hatenablog.com

Pythonコードの高速化の手法を紹介しましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

今回は、下記の公式記事を元に、

Juliaのコードを高速化する方法をまとめたいと思います。

docs.julialang.org

 

Juliaは普通に使用しても十分高速ですが、

下記のTipsを利用することで、

より高速化することができます。

 

Juliaという言語そのものに関しては、

下記の記事を参照ください。

myenigma.hatenablog.com

  

続きを読む

オンライン上の数値演算・解析系のPythonチュートリアルScipy Lecture Notesを読んで学んだこと

目次

  • 目次
  • はじめに
  • ツールやワークフローを使った科学技術計算
  • プログラミング言語 Python
  • NumPy: 数値データの作成と処理
  • Scipy: 高水準の科学技術計算
    • scipy.io
    • scipy.optimize
    • scipy.interpolate
  • 参考資料
  • MyEnigma Supporters

はじめに

下記のScipy Lecture Noteという、

オンライン上の数値演算・解析系のPythonチュートリアルが

素晴らしかったので、

読んで心に残ったことをメモしておきたいと思います。

 

続きを読む

ロボティクスにおける経路追従(Path following)技術の概要

目次

  • 目次
  • はじめに
  • 経路追従(Path following)とは?
  • 制御技術の基礎
  • 最適化技術の基礎
  • ロボットの運動モデル
  • 経路追従の代表的なアルゴリズム
    • Pure pursuit
    • Rear wheel position feedback
    • 線形二次レギュレータ(LQR)
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボットの自律移動技術の中で、

重要なものの一つに、

経路追従(Path following)技術があります。

(その他の自律移動技術に関しては下記を参照ください

myenigma.hatenablog.com)

 

今回の記事では、

ロボットの経路計画問題における代表的な技術の概要と

サンプルコードの記事のリンクをまとめておきます。

 

続きを読む

Julia用おすすめVim設定&プラグイン

目次

  • 目次
  • はじめに
  • F5で現在編集中のコードを実行する
  • シンタックスハイライト用プラグイン: julia-vim
  • 静的解析ツール用プラグイン: julia.vim
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで、様々な言語における

おすすめVim設定とVImプラグインを紹介してきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

最近、Juliaという比較的新しい言語を勉強しているため、

myenigma.hatenablog.com

JuliaのコードをVimで書くためのおすすめ設定と、

プラグインを紹介したいと思います。

 

自分のすべての言語に共通したVimの設定ファイルは

下記のリポジトリで公開しています。

github.com

 

続きを読む