2018年6月12日火曜日

IPOPT の Matlab は SeDuMi と一緒にできない

IPOPT の Matlab 版を Linux にインストールして試しているが、どうやら IPOPT の so ファイルと SeDuMi との相性が良くないようで、SeDuMi の実行が変な結果になる。例えば、K.s が整数でなくなったりする。

で、どうするか、というと、IPOPT の引数にいれるものを一通り save でファイルに保存しておいて、Matlab からもう一つMatlabを呼び出して、その中で load と IPOPT の実行をする、という具合にするとうまく行く。

Matlab は mex -setup も実用上できなくなっているし、SeDuMi も SeDuMi でコンパイルを通らないし、やっぱりメンテナンスというのは本当に大変なんだなぁ、と思ったりする。

2018年6月6日水曜日

Matlab で関数ハンドラの微分

Matlab では、関数ハンドラそのものは diff で微分できないけど、シンボリック演算を挟むと微分できる。

具体的には、
https://jp.mathworks.com/matlabcentral/answers/356136-derivative-in-function-handle
にあるように以下のように微分を行う。

syms x
f = @(x) x + log(x)
f1 = matlabFunction(diff(f(x)));
f2 = matlabFunction(diff(f1(x)));

関数ハンドラも微分できるというのは、思っていた以上に便利。

2018年6月5日火曜日

CPLEX と MATLAB で crash する

Matlab から CPLEX を呼び出すとクラッシュすることが多い。
どうやら CPLEX は少しのバージョンの Matlab でしか動作確認してないことが原因らしい。

CPLEX も Matlab も一度実行できる環境ができたら、ハードウェアが壊れるまで保存しておいた方がいいのかな、とも思ったりする。
というか、CPLEX 側で「この Matlab は動作対象外ですよ」とかバージョンチェックしてくれたら、もっと簡単にわかるわけだけど、CPLEX の Matlab ライブラリは Matlab のバージョンチェックをする機能がないのかもしれない。

2018年6月4日月曜日

論文読み:A data-independent distance to infeasibility for linear conic systems

今回は、
http://www.optimization-online.org/DB_FILE/2018/05/6632.pdf
をチェックしてみた。
簡単にいうと、実行不可能なSDPが与えられているときに、実行不可能であるということをどうやって数値化するか、ということだった。

この数値化については、いろいろと既存研究もあって、何種類かの数値化方法がまとめられていて、それらの類似点や比較なども載っていて、そのあたりが勉強になる。

そういえば、こういうのを数値計算でやろうとすると、どうしても machine epsilon の壁が厚く立ちはだかるけど、数値化の種類によっては数値誤差の影響をあまり受けずに計算出来たりもするんだろうか?


2018年6月3日日曜日

論文読み:An ADMM-Based Interior-Point Method for Large-Scale Linear Programming

今回は、
http://www.optimization-online.org/DB_HTML/2018/05/6643.html
にあった論文を読んでみた。

結論:ADMM を使うと、粗い精度の計算においても内点法は遅くなる。

個人的には粗い精度でしかもSparse Inverse Covariance Estimationのようなタイプなら通常の内点法よりも速くなるのでは?と思っていたが、予想以上に遅かった。

たしかに他の問題でも錐最適化に ADMM を使うと内点法よりも遅かった。
やはり錐最適化問題の場合、homogeneous の性質が非常に強力なので、これを使えない ADMM は分が悪いのかもしれない。

あるいは、SDPT-3 や Mosek など、高速化されたソフトウェアと比較しているのが良くないのかもしれない。それらと比較できるほどに mature になるのは簡単とは思えないし。










2018年5月31日木曜日

論文読み:Theoretical challenges towards cutting-plane selection

切除平面法についての理論面の情報を集めた論文が出ていた。

https://link.springer.com/content/pdf/10.1007%2Fs10107-018-1302-4.pdf

サーベイのような位置づけの論文で、どういった cut があるのか、それらがどういう性質を持っているのか、などがまとめられている。
確率論的な立場で cut の性質を証明している Theorem 1 は、こういった視点があるのか、と思ったりする。

あと、この論文の Final Remarks は秀逸。
the answers may not be unique.
の他にも含蓄の多い言葉が並んでいる。
Final Remarks 全体を引用したくなるけど、そうすると引用としては長くなりすぎるので止めておくが、CPLEX, GuRoBi などを使っている人は、一読の価値があるんじゃないかと思う。

2018年5月29日火曜日

sharelatex の synctex がズレるのを回避できる

sharelatex は便利だけど、synctex で PDF から tex に移動したときに数十行ぐらい常にズレるのが気になっていた。つまり、PDF で範囲指定をしてから、画面中央の左矢印で tex に移動すると、範囲指定していたところからは数十行ズレた位置に移動してしまう。

ずっと気になっていたのだが、今日何気に PDF をダブルクリックしてみたら、tex が該当箇所にほぼ正確に移動できることが分かった。
こんなに簡単な方法で回避できるとは思ってもみなかった。