2010年6月30日水曜日

体調調整

そろそろ学会が近付いてきたので、今日はあまり仕事をせずに体調を調整することにした。
学会に行くのは、ある意味体力勝負な面もあるので、これも仕事のうちと割り切った。
とにかく、夏バテのところだけは、それなりに回復したようだ。

今日の作業内容:体調回復
今日のランチ: つかさ 〆さば
明日の予測作業時間: 2h

2010年6月29日火曜日

学会準備

今日は、学会出発まで日があるが、一通り学会準備をした。
成田への電車の時間から、飛行機の時間、そして空港からホテルまでの電車などをチェックし、学会会場までを一通りカバーした。
今回は、一人で行動する範囲があるので、その部分は特に下調べして置く必要がある。

あと、発表準備もあらかた終了した。
20分に発表時間が短縮されたので、それにあわせて発表するように変更したが、今日の練習ではだいたい20分30秒程度。
本番だと、いくつかいい忘れることがあるので、これくらいでぴったりの時間かと考えている。

今日の作業内容:発表準備 5h
今日のBGM: かも
今日のランチ:味庵 翡翠冷やし中華
明日の予測作業時間:5h

2010年6月28日月曜日

mingw と ATLAS

今日は、ATLAS を Ubuntu 上のmingw でコンパイルできるか、再挑戦。
結果、かなり難しいことが分かった。

ATLAS の場合、ATLAS/configure の時点で -C ic i586-mingw32msvc-gcc -C if i586-mingwmsvc-gfortran で、それぞれコンパイラを指定できるが、実は xconfig などがこれでは通常の gcc でコンパイルされるため、xconfig と他のオブジェクトが混じったときにトラブルとなる。
これを回避するには、ATLAS/confiugre に -cc=i586-mingw32msvc-gcc をつければいいのであるが、そうすると、今度は Windows バイナリの make.exe が必要となる。
これを wine 経由で実行できるように修正すると、さらに rm.exe も必要となることがわかる。

つまり、rm.exe や cp.exe などのコマンド類が一斉に必要となることが予想できる。
これだったら、cygwin をインストールしたほうが速いし、cygwin をインストールするのであれば、Windows 上で行ったほうがよい。

ここまででとりあえず止めている。

あと、最近読んだ論文のメモ。

Mathematical Programiming 38 (1987) 47-67
Dual Gauge Programs, with Applications to Quadratic Programming and the Minimum-Norm Problem

ゲージ関数を線形制約上で最小化するっていう問題である。
非線型最適化の場合、Slater の制約想定を課すことが一般的であるが、これは別の想定が入っている。
ただ、ざっと眺めた感じでは、内点法並みの計算速度しか出ないような印象だった。
内点法が Slater でこけるようだったら、これを使う、と言う手もあるのかもしれない。

今日の作業内容:ATLAS 4h + 論文読み 2h
今日のBGM: everywher [1-2], 聖剣伝説4 OST [1,2,3]
今日のランチ:シッダルータ キーマカレー
明日の予測作業時間: 5h

2010年6月25日金曜日

mingw32 と mex のまとめ

Windows 上の Matlab 用の mex ファイルをコンパイルするときのUbuntu 上でのまとめを書いておく。

1. mingw32 をインストールする
$ sudo apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime
2. Windows の Matlab から $MATLABROOT/extern/ をコピーしてくる。これを参照するディレクトリを $MATEXT とでもする。
3. コンパイルするときに、

$ i586-mingw32msvc-g++ -O mexSample.mexw32 -O -shared -I$MAXEXT/include mexSample.cpp $MAXEXT/libmx.lib $MAXEXT/libmex.lib

のようにして、リンクする。
FORTRAN であれば、i586-mingw32msvc-gfortran で対応して、さらに /usr/lib/gcc/i586-mingw32msvc/4.4.2/libgfortran.a をリンクする。
libpthreadGCE2.a をリンクすれば(自分でコンパイルする必要あり)、pthread によるマルチスレッディングも可能のようだが、マルチコアのWindows がないので、まだ未確認である。

なお、MUMPS などは BLAS,LAPACK とリンクするため、libmwlapack.lib, libmwblas.lib も追加する必要がある。
ただし、libmwlapack.lib は関数名の最後にアンダースコアが欠けているので、MUMPS をコンパイルするときに、あらかじめ i586-mingw32msvc-gfortran に -fno-underscoring をつけておく。(普通にコンパイルすると _ddot_ になるが libmwblas.a に入っているのは _ddot のようで、こうするとコンパイルが通る。なお、-fno-underscoring をつけないで回避する方法もあるが、そちらはちょっと面倒)
なお、MUMPS のコンパイル時の ar,ranlib は /usr/i586-mingw32msvc/bin/ar,/usr/i586-mingw32msvc/bin/ranlib にしておくこと。
ただし、Matlab は R2009a から libmwlapack.lib, libmwblas.a のインターフェースを変更しているので、MUMPS を R2009a 以降で使うのは難しそうである。

あと、mingw でコンパイルしたファイルは、Visual C++ でコンパイルしたときに比べて、ファイルサイズが大きくなるようである。
どうも昨日心配していた Matlab 由来のコードが追加されるのではなく、 gcc と Windows をつなぐものがいろいろと追加されているためだと思われる。たしかに
$i586-mingw32msvc-objdump -p mexSample.cpp | grep DLL
とすると、libmx.dll, libmex.dll を必要としていることが分かる。
dll のコードを直接取り込むのであれば、 dll にリンクする情報は入れる必要がない。


これらを行うと、Windows XP 上で利用可能な mex ファイルを作成できる。
SDPA-M の場合、以下のDLL とリンクする。
$ i586-mingw32msvc-objdump -p mexsdpa.mexw32 | grep DLL
DLL
vma: Hint Time Forward DLL First
DLL Name: libmex.dll
DLL Name: libmwblas.dll
DLL Name: libmwlapack.dll
DLL Name: libmx.dll
DLL Name: pthreadGCE2.dll
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: msvcrt.dll


今日の作業内容:mex 4h
今日のBGM:聖剣伝説 OST
今日のランチ: 東急ストア ブルーベリーヨーグルト、11品目ひじき、マルちゃん焼きそば弁当
明日の予測作業時間:3h



2010年6月24日木曜日

mingw + Matlab

昨日のところで、MUMPS が原因かと思っていたが、そうではなかった。
dsimpletest.exe は入力ファイルが必要で、それを指定してなかったので読み込むところで停止していただけだった。
あと、Matlab 上でも、実際には MUMPS を使う直前の mex がトラブルを起こしていて、MUMPS に悪影響が出ていたことが分かった。
MUMPS が問題ではない、と分かって一安心である。

今日は、こまごまとした用事があって時間が取れなかったが、Matlab 用のコンパイルに挑戦した。
SDPA-M の Windows Matlab 版はコンパイルしたり、実行できるところまでは確認した。
ただ、今のコンパイルでは libmx.lib などの中身をすべてリンクしてしまうようで、このままでは配布することができない。
実際には libmx.dll の中身を呼ぶようにする必要がある。
これについては、また調べる必要がありそうだ。

今日の作業内容:Matlab 2h
今日のBGM: 聖剣伝説 OST
今日のランチ: いろは 豚肉ロースかつ
明日の予測作業時間: 2h

2010年6月23日水曜日

mingw32 + pthread-win32

SDPA の Windows 版を作れるかどうかに挑戦してみた。
細かいところまでは書かないが、mingw32, pthread-win32 を使うと SDPA を Ubuntu 上でクロスコンパイルして Windows 上で実行できる。

ただし、MUMPS は pthread-win32 と相性がよくないのか、dsimpletest だけでも止まってしまう。(c_example は実行できる)
MUMPS の問題が取り除ければ、Windows 上の MATLAB でも実行できるようになるはずである。
(dat-s ファイルの mex 経由での読み込みは、すでに成功済み)

今日の作業内容: mingw32 7h
今日のBGM: EVA OST [1-3]
今日のランチ: 味庵 ザーサイと豚肉の炒め物
明日の予測作業時間: 4h

2010年6月22日火曜日

Schur complement, 収束してない

今日は、ふと気になったので、Schur complement が内点法で計算したときに収束するかを調べてみた。
で、SDPA-GMP のソースを少しいじって、Schur complement が前反復とどれだけ違うかを計算してみたところ、まったく収束していなかった。
SDPA にある、もっとも簡単な example1.dat-s ですら、収束しない。
しかも、反復が進むごとに違いも大きくなってしまう。
正確には覚えていないが、たしか Schur complement は最適解が degenerate でない場合、収束するという定理があるはずだが、数値計算上は成り立たないように見える。
これは、少し調べないと解からない。

あと、いろいろな書類作りをした。
この書類は結構つくるのが大変なので、まだまだかかりそうだ。

学会発表の英語の練習はそれなりに進んだ。
ただ、今日になって学会の方から「発表時間が30分から20分になりました」と来ていたので、それにあわせて途中を端折る必要がある。


今日の作業内容:SCM 2h + 書類作り 4h + 英語の練習 1h
今日のBGM: everywhere [1-2], MADLAX OST [1-2]
今日のランチ:つかさ 〆さば
明日の予測作業時間: 4h

2010年6月21日月曜日

Ubuntuのパッケージ一覧をまるごとインストール

今日は、あまり乗り気になれなかったので、インストール作業をすることにした。
以前、vmplayer で Ubuntu 9.10 を入れてあった Type P に Ubuntu 10.04 をまた vmplayer でインストールした。
今回は、これまでの知識の蓄積から、Ubuntu server edition でインストールを開始して、最小限のインストールにした。 desktop も lxde にしてあるので、以前よりも軽快に動く。
ただ、Ubuntu server edition からスターとして lxde をインストールして使うのは、パッケージのインストールが案外大変なので、あまりお薦めできない(その代わり、かなりスリムなインストールができる)。

なお、一度パッケージをインストールしてしまったら、それをメモしておくこともできるようだ。
その方法は、

$ dpkg --get-selections > package-list.txt
でリストを作成できる。
逆に他の Ubuntu で同じようにパッケージを構成するのであれば、

# dpkg --set-selections
# apt-get dselect-upgrade
とする。
これで、一台の Ubuntu にインストールしたパッケージと同じ構成を他の Ubuntu に行うことが可能となる。
(参考:http://mypace75.blog92.fc2.com/blog-entry-361.html)


あと、今日は学会発表用の英語の練習を始めた。
土曜日に始めて2回目なので、まだ1時間30分程度かかる。
まだまだ練習が必要そうだ。

今日の作業内容:Ubuntu インストール 4h + 英語の練習 2h
今日のBGM: 聖剣伝説 OST
今日のランチ: らく うな重
明日の予測作業時間: 6h

2010年6月18日金曜日

Mathematica, 力尽く

3日間走らせていた Mathematica だったが、単純に「メモリ不足」とそっけない解答が出て終了していた。
残念である。
やはり、SNL の一般解は得られない。(変数が6程度の小規模であっても)
これはこれで解かったことのひとつである。

今日はあまり作業時間が取れなかった。


今日の作業内容: 論文読み 2h
今日のBGM: FF5 OST [1]
今日のランチ:東急ストア 11品目ひじきサラダ、デュラムカルボナーラ
明日の予測作業時間:4h

2010年6月17日木曜日

データ構造を考える

今日は、ほとんどの時間を昨日の続きの事務処理に使った。
その代わり、事務処理はほぼ終了したので、これで学会の前後は仕事に余裕がある。

あと、Mathematica は今日も計算を続行中である。Solve 関数に入ったままなので、どこまで進んでいるか表示されず、いつ終わるのかよくわからない。ただし、これは急ぎではないので、放っておくという手もある。

あとは、データ構造を考えている。
数理最適化のプログラムの場合、効率の悪いデータ構造を使ってしまうと致命的になるので、ここは重要である。
プログラミング自体に10時間かかるのであれば、データ構造を決めるのも10時間は必要である。
いかに無駄のない効率的なデータ構造を作れるか、これはセンスが問われる難しい作業である。


今日の作業内容:データ構造 1h
今日のBGM: 聖剣伝説4 OST [1,2,3]
今日のランチ: いろは あさりごはんと豚汁セット
明日の予測作業時間: 3h

2010年6月16日水曜日

事務処理な一日

今日は、朝方に論文を少し読んだ以外は、事務処理で終わった。
そろそろ出張が近付いてきているため、そのときにある事務などをできる範囲で、あらかじめ処理しておくためである。
明日にもある程度処理しておいた方がよさそうだ。
あと、昨日のMathematica の計算は、まだ続行中であった。

今日の作業内容:論文読み 1h
今日のBGM: 聖剣伝説 OST
今日のランチ: らく チキンステーキ丼
明日の予測作業時間:4h

2010年6月15日火曜日

Mathematica インストール と bad font の回避

昨日の交点を求める計算は、Maxima だとうまくいかなかったが、Mathematica だとうまくいくらしい、ということで、今日は Mathematica をインストール。


(x-a1)^2 + (y-a2)^2 = r1^2
(x-b1)^2 + (y-b2)^2 = r2^2

については、Maxima だと a1,a2,b1,b2,r1,r2 を定数にしたままでは解くことができなかったが、Mathematica では解が出てきた。
ただ、あまりに複雑な解なので、あっているかどうかを調べるのが難しい。

ところで、Mathematica では、ssh 経由の場合、フォントが上手く設定できずに起動できないときがある。しかも、普通に起動できていたのが、次に起動するとダメになる。
具体的には、xset: bad font path element のエラーで実行できなくなる。


この場合には、
/usr/local/Wolfram/Mathematica/7.0/SystemFiles/Fonts/Type1
をディレクトリごと ssh のローカル側にコピーしてきて、
$ xset fp+ /path/Type1; xset rehash
でOKになる。(/path は Type1 ディレクトリまでのパスを設定すること)
X 全体に適用しておくなら、/etc/X11/xorg.conf のなかで
"Files" section に次の一文を追加する
FontPath "/path/Type1"
これで Ctrl+Alt+Backspace で X を起動しなおせば、解決する。


とりあえず、これで Mathematica は動いている。
いま、3次元空間内での複数の球の交点(あるいは交線)がどうなるかを計算しているが、これが計算量が多いためか、すでに1時間以上経過している。
明日は、これの計算結果を確認するところから始まる。



今日の作業内容:論文読み 1h + Mathematica 5h
今日のBGM: Saga OST [1-2], FF5 OST [1]
今日のランチ:シッダルータ ほうれんそうとじゃがいものカレー
明日の予測作業時間:4h

2010年6月14日月曜日

Maxima インストール

今日は、まず SDPARA 関係の原稿の校正。
校正すべき内容は、週末のうちにチェックしてあったので、tex に反映した。

あと、SNL の論文を読んだ。
それなりにうまくいくヒューリスティクスを入れているようだ。
これは、ちょっと勉強しておきたい。

ほかに Maxima をインストールしてみた。
Ubuntu 10.04 の場合、
$ sudo apt-get install -y wxmaxima
でインストールして、
$ wxmaxima &
で実行できる。
入門としては、
http://www.eonet.ne.jp/~kyo-ju/maxima.pdf
がとてもよく書けている。

ところで、Maxima に触るのは初めてなので、うまく計算できる範囲とそうでない範囲の区別がよく解からない。
たとえば、(a1,a2),(b1,b2) という2点を中心とする半径 r1,r2の2つの円の交点は、
(x-a1)^2 + (y-a2)^2 = r1^2
(x-b1)^2 + (y-b2)^2 = r2^2
の連立方程式を解くと求められる。
このうち、a1,a2,b1,b2 を数字にすると、r1,r2 を記号のまま x,y について解くことができる。
しかし、a1,a2,b1,b2 も記号のままにしておくと、x,y を求める計算を実行すると10分かかっても計算が終わらない。

おそらく、なんらかの理由があるのであろうと思うので、そのあたりを明日調べてみたい。

今日の作業内容:論文校正 2h+論文読み 2h + Maxima 2h
今日のBGM: 聖剣伝説4 OST [1-4]
今日のランチ:つかさ ぶりの照り焼き
明日の予測作業時間: 6h

2010年6月11日金曜日

PRA ちょっとちがかった

昨日見つけた PRA の論文は、どうやら中身が予想していたものと大きくちがかった。
途中から random walk などなど、別の方向性の論文だった。

今日はあまり時間がなかったので、明日がんばって行こう。

今日の作業内容:論文読み 1h
今日のBGM: なし
今日のランチ: 東急ストア ひじきのサラダ、デュラムおばさんのミートソース
明日の予測作業時間: 3h

2010年6月10日木曜日

投稿完了

今日は、とうとう原稿を一本投稿できた。
他の人のお蔭である。
ここまで、長かった。
git の記録を見ると、最初は去年の7月21日に tex ファイルを作成しているので、なにげにほとんど1年かかっている。

ただ、これで終わりなのではなく、もう一本あるので、そちらも頑張りたい。

あと、PRA の論文をダウンロードしてきた。
PRA だけあって、分野が違うので書いてあることはよくわからないのだが、ラフにでも理解したいところだ。

今日の作業内容:論文投稿 2h + 論文読み 1h
今日のBGM: everywhere [1]
今日のランチ: らく まぐろのづけ丼
明日の予測作業時間: 2h

2010年6月9日水曜日

内点法で重要な論文

内点法にはいくつか重要な論文や本があって、それを並べると
1. Karmarkar による原論文 1984
2. 主双対内点法による双対理論の導入
3. Nesterov-Nemirovski の self-concordant 1994
である。
理論的なコアはだいたいこの3つである。

で、今日見つけたのは Math Prog の 1987 年の論文で、内点法の理論構築が進んでいる背景がある時代ながら、それとはあんまり関係のない論文である。
面白そうなので、時間を割いて読んでみようと思う。

あと、原稿校正は細々としたところになり、あともう少しで投稿できそうだ。

今日の作業内容:原稿校正 2h + 論文読み 3h
今日のBGM: なし(耳を休めるため)
今日のランチ: 鶏こまち からあげ丼
明日の予測作業時間: 3h

2010年6月8日火曜日

原稿校正がまだまだあった

今日は、原稿校正の続きだった。
一通りプリントアウトして、全チェックした。
ほぼ完成といったところか。

あと、出張用の書類作成をした。
今回の学会では、学会参加費にいろいろと含まれてしまっているため、そのあたりをどう処理するかが大変になりそうなので、確認が必要だ。

今日の作業内容:原稿校正 4h
今日のBGM: スカイ OST [1-2]
今日のランチ:四川 油林鶏
明日の予測作業時間:5h

2010年6月7日月曜日

発表資料のセリフ集

今日は、7月の発表資料のセリフ集を作った。
週末のうちに、発表資料そのものは作ったので、ある程度ラフに何をいうかを作っておいた。
持ち時間30分で、単純に棒読して20分強といったところか。
実際には、図を指し示したりなどの動作が入るので、ざっと25分強になって、これに質問を含めて30分となる予定。
ただ、本番でそこまでタイムスケジュールどおりいくかは分らないので、ある程度余裕があったほうがいいかもしれない。

あと、SDPARA の原稿については、〆切が近付いてきた関係で校正が多くなってきた。
こちらも明日のうちにテキパキと片付けたいところだ。

今日の作業内容:発表資料 4h + 原稿校正 1h
今日のBGM: ARIA OST [1-3]
今日のランチ:シッダルータ ほうれんそうとチキンのカレー
明日の予測作業時間: 6h

2010年6月4日金曜日

プレゼン用の図の作成

今日は、昨日の続きでプレゼン用の図の作成をした。
見やすいようにプログラムを修正したので、それなりにいい出来栄えになった。

これをあとでPowerpoint に張り込むようにしよう。
明日のうちに、だいたい発表資料は完成しそうだ。

今日の作業内容:図の作成 3h
今日のBGM: 聖剣伝説4 OST [1-2]
今日のランチ:東急ストア ざるラーメン、カニ風味サラダ
明日の予測作業時間: 4h

2010年6月3日木曜日

プレゼン用の図の作成

今日は、あまり時間がとれなかったが、プレゼン用の図の作成を行った。
これがなかなかに難しかった。

わかりやすくいうと、1024x768の解像度で写すのに、10240x7680でないと見分けられないほど細かい絵とか逆に 102x76 ぐらいがぴったりな絵ができてしまい、そのちょうどいいところを見つけるのが難しかった。

ただ、今回絵を作るのに何回か実行してみて、それなりに面白いことも分かった。

今日の作業内容:図の作成 2h + 論文校正 1h
今日のBGM: 聖剣伝説 LOM OST [1-2]
今日のランチ:信華園 上海焼きそば
明日の予測作業時間: 3h

2010年6月2日水曜日

資料作りの続き

今日は、資料作りの続きを進めた。
だいたいの骨格は完成。論文をベースにしてあるので、数式などはほぼ同じものが使っている。
(話しやすいように、一部の記号は変更している。)
これで、今後の作業は
1.数値実験がわかりやすいものを採用
(SNLだと、4万点程度まで解けるが、4万点のセンサーがある絵を見せてもさっぱり解からないため)
2.口ではなすことを整理して、だいたいのプレゼン時間を計測

このあたりまでを来週の前半までには片付けていきたい。

今日の作業内容:資料作り 4h
今日のBGM: 聖剣伝説4 OST [1-4], 聖剣伝説2 OST, Secret of Mana+
今日のランチ: つかさ カンパチまかない丼
明日の予測作業時間: 3h

2010年6月1日火曜日

原稿校正のつづき

今日は、原稿校正の続きをした。
ある程度、書くことを修正する方向にしたので、それなりに修正している。
書き終わったところまでは git でまとめている。

あと、発表資料もすこしだけ進んだ。
定理の証明など時間がかかるものを、いかに雰囲気だけでわかってもらえるか、が難しいところだ。

今日の作業内容:原稿修正3h + 資料作り 2h
今日のBGM:聖剣伝説4OST [1,2]
今日のランチ:鶏こまち 鶏すき焼き丼
明日の予測作業時間:3h