2015年1月20日火曜日

python の起動と Matlab の起動を時間で比較

Python を Anaconda 経由でインストールしてみたが、起動に時間がかかるのでどのくらいかかるのかを Matlab の起動と比較してみた。
結果としては、

Python
Spyder のロゴが出るまで 20秒
Spyder のWindow が出るまで +40秒
Spyder でコマンド入力できるようになるまで + 10秒
合計で1分10秒かかっている。

Matlab
Matlab のロゴが出るまで 2秒
Matlab の Window が出るまで + 30秒
Matlab でのコマンドが入力できるようになるまで +3秒
合計で 35秒かかっている。

Matlab は、起動にやけに時間がかかるときがたまにあって安定した時間ではないのだが、Python の Spyder はざっと Matlab の2倍程度の起動時間がかかるようだ。

2015年1月14日水曜日

maxNumCompThreads の代わり

Matlab で最大スレッド数を知るために maxNumCompThreads を利用しているが、実査に使うと

警告: maxNumCompThreads は将来のリリースで削除される予定です。この関数のインスタンスをコードから削除してください。
> In maxNumCompThreads at 26

という警告文が出る。もう3,4年は出ている警告なのでいつ削除されるのか、そもそもほんとに削除するつもりがあるのかどうかよくわからないが、警告文が出る。

この場合には、

>> numberOfThreads = feature('NumCores');

とすると、同等の機能を得ることができる。

2015年1月13日火曜日

ルービックキューブの最大必要手数は20である

今回の SIAM Review には、「ルービックキューブの最大必要手数は20である」という論文が掲載されている。

The Diameter of the Rubik's Cube Group Is Twenty,
T, Rokicki, H. Kociemba, M. Davidson, J. Dethridge,
SIAM Review, Vol. 56, No. 4, pp 645--670, 2014

単純に数学的な側面の議論だけでなく、ソフトウェア実装なども議論されている(gcc によるアセンブラコードなども登場)あたりが面白いところかと思う。



2015年1月8日木曜日

SDPAフォーマットへの定式化についての対応

SDPA 関係での問い合わせは、比較的コンスタントにあって、最近もいくつかあるが、やはり SDPA フォーマットへの定式化についてのものも多い。

このような場合は、YALMIP を使うと簡単に SDPA フォーマットに変更できるので、YALMIP をおススメする場合もある。
また、最終的には Matlab を使わずに C++ などだけで実装したい、というような場合もあって、そのような場合には、まずは YALMIP でsavesdpafileにより SDPA フォーマットを生成してから、その SDPA フォーマットと照らし合わせながら作業を進めたり、ということもある。


2015年1月5日月曜日

詳しくSDP の双対定理についての証明過程が載っている本


SDP の理論展開において、双対定理は重要であるが、いくつかの証明などを組み合わせて証明する必要がある。
この証明の過程をフローチャートでまとめてあるのが、

Gartner, Matousek,
Approximation Algorithms and Semidefinite Programming,
Springer, 2012

の Section 4.8 The Largest Eigenvalue の Figure 4.5 (P69) である。
この図を見ると、どのような証明が組み合わさって双対定理が示されているかが分かりやすくなっている。