ジョージの技術備忘録

参考したサイトを忘れないための備忘録

制約付き最適化手法の肌感覚

非線形最適制御で拘束条件付近で発散しやすいなぁという感覚は結構数学的にもあってた。理由はペナルティ関数法にあった。

 

大塚先生の本で紹介していた非線形最適制御で拘束条件を入れる場合ペナルティ関数法を用いてたけど、矢部先生の本で実行可能領域に近くなるにつれて数値的に不安定になることが指摘されていた。ペナルティ関数法はいまではメリット関数程度、つまり他の非線形最適化手法の評価値としてしか使用しないらしい。

 

この問題を回避するためには乗数法、逐次二次計画法、主双対内点法がある。矢部さんの本しか理解していないので、この手法のどれがいいかは判断できない。福島先生かBoyd先生の本を読めばわかるかな。もしくはだれか論文調べてくれてるかな。

 

個人的には永原先生と大塚先生が共同で面白い研究してくれないかなぁって思ったりする。

 

KKT条件の理解が肌感覚と数学的証明の距離が遠すぎて困惑している。

肌感覚での理解はPRMLの付録E程度

数学的証明での理解はForkas→Motzkin→Gordan→不等式拘束条件

この間の肌感覚と数学的証明の圧倒的認知としての理解度の落差はどうしたら埋められるのかな。双対問題がキーワードそうな気はするけど。福水先生と赤穂先生が結構わかりやすく書いてたから頑張って読もうかな。と思ったらここにまとめが書いてあった。

 

http://www.ism.ac.jp/~fukumizu/OsakaU2014/OsakaU_4SVM.pdf

ir5.hatenablog.com

無料の最適化ソフト

凸最適化が楽しくなってきた。理論はわかっても業務では実装すべきではないのでまとめサイトがほしいところ。誰かやってくれないかなぁ。商用ソフトしかないよ。。

* 勿論自分の理解を深めるために実装して動作検証することも大事だけど。エラー処理やMatrix Computationはやはり自前ではつめが甘いので。

 

線形不等式行列LMIといえばYALMIP

追加の際は下記からインストールする。

YALMIP

Solvers - YALMIP

 

言わずと知れたスタンフォード大学Boydさんの開発ソフトCVX。

Stephen P. Boyd – Software

 

Python

Optimization and root finding (scipy.optimize) — SciPy v0.18.1 Reference Guide

Applications and extensions — CVXOPT

www.tensorflow.org

 

Julia

JuliaOpt: Optimization packages for the Julia language

 

 言わずと知れた商用ソフトGurobiを無料で使用可能。

neos-server.org

 

 経路最適化、整数計画問題など。

developers.google.com

2018/09/09 Python

[モジュールとパッケージ]

絶対インポートを有効にすることで相対パスを実現することが可能。

from __future__ import absolute_import

from ..module import function

 

[関数型プログラミング]

関数型プログラミングは奥が深いですね。もう少し慣れが必要そうです。

高階関数

def function1(function0,x):return function0(x)

反復処理

def f(x,y,z):return x+y+z

a=[0,1,2]

map(f,a,a,a)

無名関数

b=lambda x ,y, z: x*y*z

b(0,1,2)

再帰呼び出し

def function(i):

  if i == 1:return 1

  return i *function(i-1)

function(5)

イテレータオブジェクトとジェネレータオブジェクト

def generator():

  print(1)

  yield "exe 1"

  print(2)

  yield "exe 2"

b = generator()

t  = b.next() #print(1)が実行されt="exe 1"となる