MyEnigma

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

線形計画法(Linear Programming)の概要とPython, Juliaでの解き方

目次

  • 目次
  • はじめに
  • 線形計画法の概要
  • 線形計画法を解く方法
    • シンプレックス(単体法)
    • 内点法
  • Pythonによる線形計画法の解き方
    • cvxoptを使う方法
    • scipyを使う方法
  • Juliaにおける線形計画法の解き方
    • シンプルな線形計画問題
    • シンプルな線形計画問題2
    • JuMPによる最小二乗法解法サンプルコード
    • JuMPによる混合整数最適化問題の解法
    • JuMPによるナップサック問題の解法サンプルコード
    • ナップサック問題におけるcvxpyとJuMPの計算速度比較
  • 最大流問題(Max Flow Problem)の解き方
  • 最小コストネットワークフロー問題
  • より詳しく線形計画法を学びたい人は
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、最適化問題の一つの方式として二次計画法の概要と、

Pythonでの解き方を紹介しましたが、

myenigma.hatenablog.com

 

今回はもっと多くの分野で使われている

最適化問題の一つである

線形計画法(Linear Programming)の概要と、

同じくいくつかの言語やライブラリでの

解き方を紹介したいと思います。

 

続きを読む

点列データから曲率を計算するPythonサンプルコード

目次

  • 目次
  • はじめに
  • Pythonコード
  • 1. 円フィッティングにより、曲率を計算する方法
  • 2. 方位差分による曲率計算
  • 3. 点列の二次微分を近似して計算する方法
  • 4. 4次のルンゲクッタで二次微分を近似する方法
  • 上記の方法の比較 
  • 参考資料
  • MyEnigma Supporters

はじめに

たまに点列データから、

その点列の滑らかさを評価するために、

近似的に曲率を計算したくなる時があります。

 

今回は、

いくつかの点群データから曲率を計算する方法の紹介と、

それらをPythonで実装したコードを公開したいと思います。

 

続きを読む

二次計画法(Quadratic Programming)の概要とPythonソルバーcvxoptの使い方

目次

  • 目次
  • はじめに
  • 二次計画法(Quadratic Programming)とは?
  • 二次計画法のPythonソルバーcvxopt
  • インストール方法
  • CVXOPTで簡単な二次計画問題を解いてみる。
  • cvxoptにおける等式制約の注意点
  • 制約の緩和のためのスラック変数の導入
    • ∞ノルム法によるスラック変数
    • 1ノルム法によるスラック変数
  • 大規模な二次計画問題のベンチマークテスト
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、Googleが開発した

非線形最適化ソルバーCeres Solverの使い方を説明しましたが、

myenigma.hatenablog.com

同じ非線形最適化でも、ある特別な形をしている最適化問題の場合、

より効率的に解ける場合があります。

 

その中でも有名なのが、二次計画法(Quadratic Programming)です。

今回はこの二次計画法の概要の説明と、

二次計画法を解くための

Pythonソルバーcvoptの使い方を説明したいと思います。

続きを読む

3次スプライン補間の概要とC++, Pythonサンプルコード

 

目次

  • 目次
  • はじめに
  • 各種スプラインにおける連続性
  • 3次スプライン補間とは?
    • 条件1
    • 条件2
    • 条件3
    • 条件4
    • 条件5
  • 3次スプライン補間を手計算+pythonで解く
  • 入力データ数が不定な場合の3次Spline補間
  • Pythonサンプルコード
  • C++サンプルコード
  • 3次スプラインにおける曲率の計算方法
  • x-y座標系における点群のスプライン補間
    • 方位の計算方法
    • 曲率の計算方法
  • 参考資料
  • MyEnigma Supporters

はじめに

3次スプライン補間は、

計算がそこまで複雑ではなく、

また二次微分までの連続性が担保されているため、

様々な用途に利用されています。

 

今回の記事では、

この3次スプライン曲線の概要と、

3次スプライン曲線を作成する

C++, Pythonのサンプルコードを作成したので、

公開したいと思います。

 

続きを読む

バークレーとサンフランシスコでおすすめのレストランメモ

 

目次

  • 目次
  • はじめに
  • Berkeley
    • Sushi Ko
    • Seasons of Japan
    • Sushi Secrets
  • 参考資料
  • MyEnigma Supporters

はじめに

実際に行ってみてよかった所のメモです。

続きを読む

GoogleのC++最適化ライブラリCeres Solverを使って制約付き最適化問題を解いてみる

目次

  • 目次
  • はじめに
  • 制約付き最適化
  • Ceres Solverで制約付き最適化問題を解く
  • 参考資料
  • MyEnigma Supporters

はじめに

今回もGoogleのC++最適化ライブラリCeres Solverを使ってようという記事です。

(これまでの関連記事は末尾のリンクを参照下さい)

 

今回は、これまでは制約条件の無い最適化問題を解いてきましたが、

制約条件付きの最適化問題を解いてみようと思います。

 

続きを読む

アメリカで生活する場合に事前に知っておくと便利なこと

目次

  • 目次
  • はじめに
  • iPhoneユーザはApple Payを登録すると便利
  • ベイエリア版Suica: Clipper Cardが便利
  • 日本の円口座から現地の米ドル口座にお金を移す方法
  • 家を決めるまでの注意点
  • 小切手の使い方
  • 銀行口座(Bank of America)を開いた時にもらえるクレジットカードは使いづらい
  • T-mobileのプリペイドプランはなぜか日本のクレジットで支払った方が安い
  • タクシー配車サービスUberとLyftが便利
  • カルフォルニアにおける運転免許の取得方法
  • 日本の映画やテレビを見るためにVPNサーバを立てる
  • 無料で作れる公立図書館のカードを作っておくと、美術館などの観光名所が無料になる
  • 参考資料
  • MyEnigma Supporters

はじめに

実際にアメリカ(自分の場合はカルフォルニア)で

生活した経験から、

知っておくと便利だと思うことを

メモとして残しておきます。

続きを読む

GoogleのC++最適化ライブラリCeres Solverを使った移動ロボットのためのGraph SLAMサンプルコード

目次

  • 目次
  • はじめに
  • Position TrackingとTrajectory Estimation
  • Graph SLAMとは?
  • Ceres Solverを使ったGraph SLAMのサンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

今回も、C++最適化ライブラリCeres Solver関連の記事です。

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

今回は、Ceres Solverを使って、

移動ロボットで良く利用されるGraph SLAMの

非常にシンプルなサンプルコードを作成してみたいと思います。

 

続きを読む

GoogleのC++最適化ライブラリCeres Solverを使ったバンドル調整サンプルコード

目次

  • 目次
  • はじめに
  • バンドル調整とは?
  • Ceres Solverを使ったバンドル調整コード
  • Ceres Solver関連記事
  • 参考資料
  • MyEnigma Supporters

はじめに

今回も、GoogleのC++最適化ライブラリCeres Solverを使ってみよう

という記事です。

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

今回は、画像処理やロボットのアプリケーションで有名な

バンドル調整という問題を、

このCeres Solverを使って解くサンプルコードを解説したいと思います。

 

続きを読む

GoogleのC++最適化ライブラリCeres Solverを使った曲線フィッティングの方法

目次

  • 目次
  • はじめに
  • Ceres Solverによる曲線フィッティング
  • Ceres Solverによるロバスト曲線フィッティング
  • Ceres Solver関連記事
  • 参考資料
  • MyEnigma Supporters

はじめに

今回の記事もこれらの記事の続きです。

myenigma.hatenablog.com

myenigma.hatenablog.com

 

今回は、Ceres Solverを使って

曲線フィッティングをしてみようと思います。

 

続きを読む