2013年9月30日月曜日

top & grep & Matlab で、よく分からない現象になる

SDPA のメモリ測定は
$ top -b -d 10 | grep sdpa > memory.log &
$ ./sdpa
$ killall top
として memory.log に入っている内容を利用している。

これを SeDuMi の測定のために
$ top -b -d 10 | grep MATLAB > memory.log &
$ matlab -r "Matlab 用のコマンド"
$ killall top
と行うと、なぜかうまく実行できない。
ちなみに、MATLAB と大文字で grep に指定してあるのは、Matlab の実行コマンドが MATLAB であり top で表示されるときには MATLAB だからである。

不思議なことに、
$ top -b -d 10 > memory.log &
としてから
$ cat memory.log | grep MATLAB
とすると、なぜか問題なく表示できる。

今日の作業内容:メモリ測定 2h +発表準備 1h + 論文読み 1h
今日のランチ:つかさ ぶりの照り焼き
明日の予測作業時間:5h



2013年9月27日金曜日

ibus & ibus-el 不調

Debian の ibus が更新されて、今までの設定が削除されてしまった。

とりあえず、ibus のアイコンをクリックして「設定」をしてみると、これが起動せず。
LXDE のメニューから「ibusの設定」を調べると、起動していないのは ibus-setup というコマンドであることが分かったので、これをコマンドラインから実行すると

$ ibus-setup
ERROR:root:Could not find any typelib for Gtk
Traceback (most recent call last):
  File "/usr/share/ibus/setup/main.py", line 29, in <module>
    from gi.repository import Gtk
ImportError: cannot import name Gtk

というエラーであった。これについては、

$ sudo apt-get install gir1.2-gtk-3.0

とパッケージをインストールすることで ibus-setup を起動できるようになった。
(gir1.2-gtk-3.0 などが同時にインストールされないといけないようなので、依存関係にバグがあるのかもしれない。)

ただ、emacs から ibus-el を起動してみると、

eval: Traceback (most recent call last):
  File "/usr/lib/ibus-el/ibus-el-agent", line 555, in __stdin_cb
    exec sys.stdin.readline()
  File "<string>", line 1, in <module>
  File "/usr/lib/ibus-el/ibus-el-agent", line 499, in enable
    imcontexts[id_no].enable()
AttributeError: 'IBusELInputContext' object has no attribute 'enable'

というバグが出てきて、これについては解消方法が分からず。
もう少し時間をかけて調べてみようと思う。

ちなみに、ibus, ibus-el の現時点でのバージョンは以下の通りとなっていた。

 ibus                               1.5.3-7   
 ibus-el                            0.3.2-2 


今日の作業内容:発表練習 3h
今日のランチ:シッダルータ ダルカレー
明日の予測作業時間:5h


2013年9月26日木曜日

メモリ使用量の測定

プログラムを実行しているときに、C++ ならプログラム内部に実行時間測定関数を入れることができるので、容易に実行時間を測定できる。
ただ、メモリ使用量については、そのような関数が存在しない。
そこで、top コマンドをバックグランドで動かすことで代用している。
たとえば、SDPA を実行しているときであれば、

$ top -b -d 60 | grep sdpa > memory.log &
$ ./sdpa example100.dat-s example100.result
$ killall top

のようにして、memory.log から
$ cat memory.log | awk '{print $6}'
として、メモリ使用量のログを取り出す。
この中には、Megabytes なら m, Gigabytes なら g が付加されているので、それぞれを grep で切り分けて sort にかけて最大値を取り出すことになる。

今日の作業内容:SDPA-C のメモリ使用量測定 2h+発表準備 2h
今日のランチ:味庵 豚角煮丼
明日の予測作業時間:4h


2013年9月25日水曜日

発表練習開始

そのうちに英語での発表があるので、作ってあった資料を取り出してきて発表練習を開始した。
ただ、まだ日にちが多いので、集中力は今一つになってしまった。
このあたりの日数と集中力のバランスは、考えておきたいことの一つだ。

今日の作業内容:発表練習 2h + 論文校正 2h
今日のランチ:ココナッツシュガー タイしょうゆラーメンとガパオライス
明日の予測作業時間:5h


2013年9月24日火曜日

主成分分析の論文読み

主成分分析にSDPが使われることがあるが、今日は前に読んだことのある論文とは別の論文を読んでみた。
やはり、
(1) どのようにして SDP 緩和をするか
(2) 緩和であらわれた SDP の構造を、けいさんにどのように活用するか
の2点がポイントのようだ。
特に(1) は、どういった制約なら SDP として表現できるのか、というボキャブラリーを増やしておくことが肝要そうである。

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


2013年9月20日金曜日

cutting-algorithm と oracle

昨日チェックしていた「cutting-algorithm で LP を解く」論文であるが、cutting-plane を構築する際に oracle を利用して構築していた。
数理最適化のソフトウェアとして実装することを考えると、oracle は大きな障害とも考えられる。

そもそも、ソフトウェアとして実装できないような計算を oracle として抽象化しているわけであって、ソフトウェアとして実装できるほどにアルゴリズムとして確定できるのであれば oracle として扱う必要もない。つまり、ソフトウェアとして実装できない部分があるために、入力と出力だけで決まるような計算量とならない。

この論文をどう活用したら面白いことができそうか、そのあたりを少し考えてみたいとは思っている。

今日の作業内容:論文読み 1h
今日のランチ:たちばな あじ
明日の予測作業時間:4h



2013年9月18日水曜日

LP を cutting-plane で解く

最近、「LP を cutting-plane で解く」という内容の発表を聞いてきた。
内点法とは異なる方法なので、どのくらいの性能なのか、一度聞いただけではパッと推測ができないので、論文を読んで検討してみることにする。

今日の作業内容:論文校正 2h
今日のランチ:食堂 牛カツおろしポン酢
明日の予測作業時間:4h


2013年9月17日火曜日

Virtualbox のゲストアディションのCD-ROMをマウントする

Virtualbox でゲストOSが Linux でGUI で実行している場合、通常はホストOS側で「ゲストアディションのインストール」を実行すると、自動的にマウントされる。
ところが、ゲストアディションの機能のファイルが壊れたりして、GUI が起動できなくなった場合には、コマンドでログインする必要がある。
これを行うには、
https://forums.virtualbox.org/viewtopic.php?t=15679
に載っている通り、ホスト側で「ゲストアディションのインストール」を実行した後で、ゲスト側で

# mount /dev/sr0 /media/cdrom

とすればできる。
これでゲストアディションを再インストールなどすると、壊れたファイルを回復できる時がある。


今日の作業内容:論文校正 2h
今日のランチ:らく チキン定食 油淋鶏
明日の予測作業時間:2h



2013年9月13日金曜日

徳島ショック

今週のうち3日間はOR学会で徳島市に行ってきたが、個人的にはかなりのショックであった。
いままでに学会などでいろんな市街地を見たりしているが、ここまで寂れた市街地はなかった、というのが率直な印象であった。
主な気になったところでは、
1.徳島駅から眉山ロープウェイに向かう途中にある歩道橋は、徳島市の中心街にあるにもかかわらず錆が相当進んでいる
2.徳島駅から歩いてすぐのポッポ街をはじめ、眉山ロープウェイのあたりに至るまでの商店街は、ほとんどが店を辞めており、シャッター商店街となっている
といったところである。

「自分の研究は、どれだけ役に立つのであろう」などと思ったりすると、懇親会などに行っているよりも、もっとすべきことがあるのかもしれない、ということも思ったりする。

今日の作業内容:論文校正 3h
今日のランチ:味庵 豚肉細切りの四川風炒め
明日の予測作業時間:3h


2013年9月6日金曜日

固有値分解の rank one update

行列 A の逆行列 A^{-1} が与えられているときに、rank one update の A+uv^T の逆行列は、 Sherman–Morrison formula で短時間で計算できる。

これと同じことを固有値分解で行うのが良さそうな例が手元にあるが、Sherman-Morrison ほど有名なものは今日調べた限りでは見当たらず、論文としては

Rank-one modification of the symmetric eigenproblem
James R. Bunch, Christopher P. Nielsen, Danny C. Sorensen,
Numerische Mathematik,
1978/79, Volume 31, Issue 1, pp 31-48

があった。この手法だと、ニュートン法での反復があるようだ。
rank one update を1回適用するだけなら数値誤差の影響はあまりないかもしれないが、手元にある例だと複数回適用する必要があって、その数値誤差がどの程度影響するかを把握しないといけないかもしれない。
ただ、論文になっているだけでソフトウェアとして実装されているわけではないようなので、ソフトウェアとしての実装も必要かもしれない。

今日の作業内容:固有値分解下調べ 2h + 論文校正 1h
今日のランチ:四川弁当 豚肉のにんにくの芽炒め
明日の予想作業時間:1h


2013年9月5日木曜日

Linux で PDF の6ページごとに1ページにまとめる

PDF を印刷するときに、複数ページを縮小して1ページにまとめて印刷できると便利であるが、Linux の場合には、pdfnup コマンドでできる。

例えば

pdfnup --nup 2x3 --frame true --paper a4paper --no-landscape sample.pdf

とすると、6ページごとにページが出来上がる。

今日の作業内容:資料作成
明日の予測作業時間:5h


2013年9月4日水曜日

SDPA のサポートの割合について

今日も SDPA についての問い合わせがあったが、最近よくあるのは Windows 版についての問い合わせである。
sourceforge でのダウンロードでの傾向で見ても、過半数は Windows からとなっている。
次に問い合わせが多いのが Linux, 最後に Mac と、こちらもダウンロードの傾向とほぼ沿っている。

ちなみに、問い合わせ内容も結構違っていて、Windows や Mac は SDP をほかの研究に利用したい、という数理最適化の研究者以外が多く、Linux で問い合わせてくるのは数理最適化あるいはコンピュータ関係の研究者が多い。

このあたりは、OS の選択と相関もありそうで面白そうなデータでもある。

今日の作業内容:書類整理 3h
今日のランチ:婆娑羅 つけ麺 ミニ
明日の予測作業時間:5h


2013年9月3日火曜日

LaTeXDraw の Version 3 の Beta 版を試してみた

TeX に図を作るときに、eps などで別途作るとファイルが大きくなってしまうので、簡単な図などは pstricks で作ると便利である。
そのときに LaTeXDraw を使うと、pstricks の命令を簡単に書くことができる。

LaTeXDraw の Version 3 の Beta 版を Debian testing にインストールして試してみたが、どうにもうまく動いていないようだ。
起動や図を書いたりはできるのだが、一度書いた四角などを再度選択して移動する、といったところで選択がうまくできないようだ。
あと、図と pstricks のコードが別のタブになって、同時に見ることができなくなってしまい、そのあたりは操作しづらい。

ちなみに、Debian の apt-get でインストールできる Version 2 では、このような現象は起きていない。

今日の作業内容:LaTeXDraw チェック 1h
今日のランチ:シッダルータ ダルカレー
明日の予測作業時間:5h


2013年9月2日月曜日

SDPARA-C コンパイル

今日は、最近問い合わせのあった SDPARA-C のコンパイル手順の確認を行った。
基本的には、インストールマニュアルに沿ってできるのだが、プログラムを書いた当時から比較すると使用しているライブラリのバージョンが上がったり、gcc のバージョンが上がったり、といったことに伴いコンパイルが通らくなくっている点に注意が必要である。

特に注意が必要なのは、以下の2点である。

(1) CLAPACK は Version 3.1.1.1 までしか対応しない。
3.2 だと integer を long int から int に変更すると、コンパイルのときにセグメンテーションフォルトで落ちてしまう。
このため、CLAPACK 3.2 では ScaLAPACK にそのまま接続できない。

(2) Metis は Version 4.0.3 までしか対応しない。
Version 5 だと idxtype が解決できずにコンパイルができない。

ちなみに、BLAS については、SDPARA-C を書いているときには ATLAS を使っていたが、ここの部分は OpenBLAS で大丈夫であった。

今日の作業内容: SDPARA-Cコンパイル 5h
今日のランチ:つかさ 生サーモン照り焼き
明日の予測作業時間:5h