2017年12月4日月曜日

論文読み:Efficient Convex Optimization for Linear MPC

今回も Optimization Online のところから、論文をチェックしてみた。
今回は、

Efficient Convex Optimization for Linear MPC
http://www.optimization-online.org/DB_HTML/2017/11/6353.html

基本的には、線形モデル予測制御の問題が、目的関数が凸2次、制約が線形制約になるので、それをどのように効率的に解くか、という話。立ち位置としては、サーベイに近いような感じだと思う。
解法としては、内点法と active-set methods が書かれていて、内点法は比較的スタンダードなものに線形制約に現れる帯構造を使って時間短縮を図るというもの。
あと、active-set methods は warm-start のほうでメリットが大きい、とのこと。


個人的には、active-set methods をあまり使ったことがなかったので、もうちょっと調べてみようと思う。手元にはたくさんの対角ブロックになるような SDP があるので、それをうまく解けるといいなぁ、と思っている。



2017年12月2日土曜日

Adobe は、なぜ学習しないのか?

Adobe Acrobat Reader DC の注釈で書いていると気になるのだが、漢字変換の学習機能が効かない。

例えば、「この節では」と Windows で何回も入力していても、「この説では」と変換される。Adobe Acrobat Reader DC でも注釈で「この節では」と何回入力しても、学習されないようだ。

Adobe だと、なぜ学習しないのか、不思議だ。
ひょっとしたら変換辞書が別にあるのか?


ちなみに、普段はAdobeではない別の PDF リーダーを使っていて、そっちでは快適に漢字変換ができている。


PowerPoint の数式が思い

プレゼンテーションのファイルを作るのに、以前は Beamer を使っていたこともあるけど、PowerPoint + IguanaTeX の自由度の高さに気がついてからは Beamer には戻れなくなってしまった。
(個人的に思うところでは、Beamer を使い慣れている人には、PowerPoint + IguanaTeX をあまり勧めない。まぁ、Beamer と PowerPoint + IguanaTeX を比較しても大きな差はなく、例えていえば Beamer が普通の黒電話ぐらいで PowerPoint + IguanaTeX がスマートフォンぐらいという差の程度でしかない。無理して乗り換える必要もない。)

今回は、IguanaTeX を使わずにPowerPoint の数式だけでプレゼンテーションファイルを作ったらどうなるか、ということも試してみたくてやってみることにしてみた。
そもそも IguanaTeX だと TeX 環境をインストールしないといけないので、TeX がインストールされてないところでは編集ができない。そこで PowerPoint の数式だけでできるかを知っておくことも有益だろうと思ってやってみた。

結果として、PowerPoint の数式は、思っていた以上にスマート。入力に多少の癖はあるけど、TeX の数式を入力する知識がだいぶ役に立つので、Beamer を使っている人にもPowerPoint の数式は使いやすいと思う。

逆に困っているところは、以下の2つ。
(1) 行列を書こうとすると Unicode が入り込んでしまって、行形式での編集が極めて困難。
(2) 数式が多くなると、PowerPoint の処理が極端に遅くなる。例えば、"PowerPoint" という文字列を入力するだけでも 10 秒以上かかる。


まぁ、自分のところでは試していないけど、Office365 では LaTeX で数式を書けるようになるということなので、このあたりが解決するのは時間の問題かもしれない。
やはり LaTeX の数式はキーボードだけで書けるというメリットが大きいので、できれば Google スライドとか Office Online とかでも使えるようになるといいなぁ、とは思う。

2017年11月22日水曜日

IguanaTeX のバグを回避する

IguanaTeX は非常によくできているので、よく利用させてもらっているが、たまにバグがある。
例えば、一時ファイルを置く場所を Main Setting に入力しても、これが環境変数として ghostscript に渡らないため、TeX2imgc.exe などを使おうとしても途中の ghostscript で Unable to open the initial device, quittingとなって終了してしまう。

これを回避するには、TeX2imgc.exe を呼び出す bat ファイルを以下のように作って、TeX2imgc.exe の代わりに Main Setting で設定する。

%%%%%%%%%%%
set TEMP=[一時ファイルの場所]
set TMP=[一時ファイルの場所]
"[TeX2imgc.exeへのパス]\TeX2imgc.exe" %*
%%%%%%%%%%%
つまり、環境変数 TEMP, TMP を設定して、あとは TeX2imgc.exe にすべての引数を渡して実行する。

2017年11月17日金曜日

待ち行列の研究って、純粋数学になっていくよね、と思ったりすること

病院の患者などを研究している論文があって、その中に

1.患者の待ち時間
2.患者が病院にいる総時間
3.ベッドの使用率

をシミュレーションで解析している論文があった。

自分としては、「これって、待ち行列で解析すればいいのでは?」と思ったわけだが、論文ではシミュレーションソフトを使って解析していた。

そこで「待ち行列で解析」という考えを一度横において考えてみると、シミュレーションソフトを使って待ち行列を解析して、それで実用的な結果が得られる、というのは、確かにありかもしれない。

数理最適化についても、コンピュータの性能が上がればシミュレーションで十分になる範囲も格段に向上するだろうし、現段階では応用数学に分類されることが多い数理最適化も将来的には純粋数学に仲間入りすることもあり得るのかも、と思ったりもする。




2017年11月10日金曜日

Julia で返り値を複数の中から一つだけ取り出したいとき

たとえば、対称行列 A の固有値分解は

D, V = eig(A)

とすると得られるが、ここで V は不要だから D だけ欲しい、というときも結構ある。
その時は
D = (eig(A))[1]
とすると最初の引数だけが得られる。

もちろん、2番目がほしい時は
V = (eig(A))[2]
とすればよい。

ちなみに、配列の中で順番を入れ替えることもできて
V, D  = (eig(A))[[2 1]]
としたりすればよい。
ただし、[[2 1]]は2重カッコのように見えるが、(eig(A))[2 1] のように1重カッコだとエラーになって処理されない。

unimodular な SOCP

いま手元で作っている SOCP が良く良くデータを見てみたら、
||U*x|| <= a'*x + b
という形式で、行列の U のところが unimodular になっていた。

unimodular な場合っていうのは、何かに使えたりするんだろうか?