2010年12月28日火曜日

2010年仕事納め

今日で2010年も仕事納めなので、少し書いておくことにする。

2010年は論文相当の原稿は3本だったが、やはりそれぞれに時間がかかったので、もう少しコンパクトに進める必要がありそうだ。
特に、数値実験と英語についてである。
数値実験はある程度見積りを立ててから効率的に行う必要がある。SDPA-GMP 関係はかなり時間がかかるので、小さめの問題で先に傾向を知ってから論文用の数値実験を行う、ということをもう少し徹底する必要がある。網羅的に行うことよりも、論文に必要になりそうなところを抑えることを重視したほうがいいのかもしれない。
英語については地道に勉強することにする。
あと、論文の原稿を作成するのには〆切がないため、どうしてもダラダラと進みがちであった。このあたりは仮の〆切を作って、それでコントロールする、など2011年はスッキリとさせたい。

他に内点法関係の勉強については少し前進した感じか。
昨日もメモしたが、やはり内点法に関する論文が多いため、内点法よりも広い枠組のなかで内点法よりも効率的なアルゴリズムを検討する必要があるのかもしれない。

今日の作業内容:論文校正の準備など
今日のランチ: つかさ 生サーモン照り焼き
明日の予測作業時間:3h

2010年12月27日月曜日

内点法について

数値的難しさを計算する数値実験に並行して読み直している論文は、最初は広い枠組で話が進んでいるが、途中から話を簡単にするための制約が入っていて内点法になっている。

この制約がどの程度重要であるか、が難しいところだ。
たとえば、self-concordant は理論的にはきれいな形が導出されるので理論的な論文には使われるが、実際のところは -log(det(X)) を利用するので、self-concordant はあまり実用的な意味がない。
つまり、self-concordant で途中まで話を進めて、そのあとで -log(det(X)) に制約しても計算をする上では問題にはならない。

ただ、論文に書いてある制約を入れると、広い枠組の可能性が狭まるので、その過程で内点法より速いアルゴリズムを失っていることもありえる。
難しいところだ。

そういえば、数値実験については、問題を絞りこんで進めることにした。
問題数を 10分の1 程度にしたので計算時間も 10分の1程度であるが、今年中には終わらないかもしれない。

今日の作業内容:論文読み直し、楕円の計算
今日のランチ:らく うな重
明日の予測作業時間:6h

2010年12月24日金曜日

数値的難しさの計算

以前に作成した gpp の問題で、制約緩和の数値の影響でどの程度数値的に難しい問題になっているかを計算している。

計算プログラム自体はすでにもらってあって、いま計算中であるが、一個の SDP の難しさを計算するのに、その制約の本数分の同じサイズの SDP を解くので、かなり時間がかかる。
どうやら gpp250 の場合、一個の SDP を計算するのに20分かかっており、数値を 10^{-1}から10^{-20} で変更しているので、実質的に 400 分ぐらいかかる。
gpp500 については、もうちょっと絞らないとダメかもしれない。

あと、だいたい解かったことだが、数値を変更するときには、大きく2種類の壁がある。
1. machineEpsilon の平方根 or SDPT3 の閾値 (この2つは似たような値)
2. machineEpsilon
このあたりで振る舞いが変わる傾向がある。
(ただし、gpp 限定の可能性あり)

今日の作業内容:gpp の計算
今日のランチ:らく 焼魚定食
明日の予測作業時間:3h

2010年12月22日水曜日

プロファイリング用に修正

SDPA-GMP, QD, DD と SDPT3, CSDP, SeDuMi をプロファイリング用に修正した。
これによって、それぞれのソフトの結果 (dimacs error や計算時間など) が統一フォーマットに出力されるので、あとは grep や awk で整形すればいいだけである。

SDPA 系列は、どこに何があるか把握しているので比較的簡単だが、やはり他のソフトは修正が難しい。特に、C言語でかかれている CSDP は C++ に慣れた人間からするとハードである。

今日の作業内容:プロファイリング用修正
今日のランチ:たちばな しまあじ
明日の予測作業時間:3h

2010年12月21日火曜日

論文の記号について

最近、以前に読んだことのある論文を読み直しているが、これがなかなかに難しい。
なにが難しいかというと、記号が consistent になっていないことである。
どの意味で記号を使っているかを逐一判断しないといけないのが手間がかかる。

やはり、論文を書くときに記号をどうするかは大事なようだ。
たとえば、 f(x) = 0 と書けば x が解というのがよく使われるパターンだが、これが f(x)=0 と x(f) = 0 の両方が入り混じると読みにくい。

ほかにあったものでは、ギリシャ文字のχとアルファベットの x を使うパターン。
本ならばいいが、やはり手書きでこの2つをきちんと分けて書くのは大変で、あまり好ましくない。

今度論文を校正するときには、こういった点も気をつけたい。

今日の作業内容:論文読み直し
今日のランチ:らく 焼き魚定食
明日の予測作業時間: 4h

2010年12月20日月曜日

SDPA 7.3.4 が Debian/Ubuntu パッケージに

Debian/Ubuntu パッケージを作ろうと思い立って、すでに4ヶ月経ったが、SDPA 7.3.4 が Debian/Ubuntu パッケージに登録された。

Debian については、すでに Debian 6 の準備段階に入ってしまっているので、stable として使えるのは Debian 7 以降になるが、unstable であれば apt-get でインストールできるようになっている。
Ubuntu についても、Ubuntu 11.04 から apt-get でインストールできるようになる。

Debian パッケージの詳細は、
http://packages.debian.org/sid/sdpa
にあり、Ubuntu パッケージの詳細は
https://launchpad.net/sdpa
にある。

注意点として、Debian/Ubuntu パッケージはそれぞれのデフォルトのatlasにリンクされるため、速度面で不利である。行列演算が多いとかなり遅くなる可能性がある。
数値実験の計算時間測定には使えないが、手軽にSDPAをインストールできるようになる。

Debian パッケージをどのようにして apt に登録するか、についてはあまり日本語の資料がないので、これまでに蓄積した Debian パッケージの作り方などのノウハウはそのうちにメモとしてまとめて書き込もうと思う。

今日の作業内容:論文読み
今日のランチ:角笛 ちらし寿司
明日の予測作業時間:6h

2010年12月17日金曜日

QAP の内点がある SDP

今日になってとうとう QAP が内点を持つように制約を変更する方法が解かった。
より正確にかくと、そういう方法を教えてもらった。
Matlab で確認したところ、SDPLIB の QAP を若干修正するだけで、実行可能な内点ができていた。
あとは、この修正でできた SDP がどれだけ難しい SDP なのかを知る必要があるが、これは以前に読んだ論文で measure が提案されている。
今日のうちに、この著者にmeasure 計算のプログラムがあるかどうか、メールを出しておいた。

今日の作業内容:QAP の SDP
今日のランチ:シッダルータ チキンカレー
明日の予測作業時間:4h