2010年8月31日火曜日

Debian unstable が udev で apt-get upgrade に失敗していたのが直った

Debian の unstable の apt の場合、
# apt-get update && apt-get upgrade
とすると、udev がうまく upgrade できずに upgrade が失敗する。
これは、現在走っている kernel に新規の udev のバージョンがあわないためのようである。
これを回避するには、kernel を更新して再起動する。
今回は、linux-image-2.6.32-5-amd64 を apt で入れて、再起動してから
# apt-get update && apt-get upgrade
で修正できた。

あと、Debian も Gnome をインストールせずに lxde にしておいて、Openoffice もインストールしないようにしておくと、かなり高速にできる。

Debian と Ubuntu はほとんど同じなので、.bashrc などが流用できる。
ただ、ATLAS 関係は違っていて、libatlas-dev で入る libblas.a, liblapack.a は
Ubuntu なら /usr/lib/atlas/lib{blas,lapack}.a だが
Debian なら /usr/lib/atlas-base/atlas/lib{blas,lapack}.a
となる。

今日の作業内容:Debian 4h + 論文校正 2h
今日のBGM: スカイ OST [1-2], FF12 OST [1-4]
今日のランチ:シッダルータ 卵カレー
明日の予測作業時間: 5h

2010年8月30日月曜日

Debian 再インストール

結局、このまえインストールした Debian は unstable で apt-get upgrade しようとしたところ、パッケージの依存を解決できずにシステム全体が不安定になってしまった。
今度は Gnome とかを外して、最小構成にできるだけ近い状態でインストールしてみようと考えている。

あと、学会発表の英語の勉強を始める。
Debian に気を取られていた分、こちらにはあまり集中できなかった。

今日の作業内容:Debian 4h + 英語 2h
今日のBGM: マクロス F OST [1-2]
今日のランチ: らく 焼魚定食
明日の予測作業時間: 6h

2010年8月27日金曜日

Debian で sid をインストールする

Debian で作業する必要がでてきたので、Debian について少し勉強している。
Ubuntu は Debian ベースなので、かなり知識を流用できるが、もちろん一部異なっている。

Debian では、開発中の unstable にあるアプリケーションはインストールできないが、かなりの数のアプリケーションが登録されており、このなかには Ubuntu だと apt-get でインストールできるものもある。

普通にインストールした Debian で unstable をインストールするには、/etc/apt/sources.list の lenny を unstable にして、そのあと apt-get で更新する。
具体的には、
$ su -
# cat /etc/apt/sources.list | sed s/lenny/unstable/g > /tmp/__tmp
# mv /tmp/__tmp /etc/apt/sources.list
# apt-get update
# apt-get upgrade
となる。

もちろん、unstable という名前があるとおり、不安定になる可能性もあるので、仕事に使っているものに適用するのは危険である。

今日の作業内容:Debian
今日のBGM: FF7 OST [1,2]
今日のランチ:とりこまち とりユッケ丼

2010年8月26日木曜日

Windows Vista の Windows update で再起動させないには

今日も SDPA のパッケージングで、単調な作業だったので、ここには他のことをメモしておく。

Windows Vista の場合、Windows update で再起動が必要な場合、勝手に再起動してしまう、という特徴を持っている。これがたまに困ることがあるが、これを防ぐ方法が

http://pasofaq.jp/windows/update/noautorebootwithloggedonusers.htm

に載っている。
ここには、レジストリエディタとグループポリシーの2つの方法が掲載されているが、レジストリエディタの場合、上位のレジストリが作成されていないときがあるので、グループポリシーのほうがオススメかと思う。


今日は他に解析力学の本を読んだ。
最近読んでいなかったのと、だんだん難しくなってきて、内容についていけなくなってきているので、最初から読み直すのもありかと思っている。

今日の作業内容:SDPA パッケージ 5h + 解析力学 2h
今日のBGM: ARUJUNA OST [1-2], FF12 OST [1,2,3]
今日のランチ:味庵 野菜と鶏肉の炒め物
明日の予測作業時間: 4h

2010年8月25日水曜日

SDPA パッケージ作成

./configure スクリプトの修正は案外大変で、毎回コンパイルして確認している。
とくに、どこにインストールされるか、が Makefile を作るまではわからないし、実際のところは make install でわかるエラーもある。

だいたい10回以上、コンパイルした。

今日の作業内容: SDPA 6h
今日のBGM: 電脳コイル OST [1-2], FF7 OST [1-4]
今日のランチ: らく まぐろのづけ丼
明日の予測作業時間: 6h

2010年8月24日火曜日

SDPA 7.3.2 とやりなおし

今日は、作業の途中で、

$ rm -rf ~/*

を実行してしまうトラブルに見舞われた。(本当は、$ rm -rf ~/n* として、nから始まるファイルを消すつもりだった)

通常使っている Linux でなかったのが幸いだった。
とりあえず、データ類をバックアップして、なんとか乗り越えている。

あと、昨日の続きで SDPA の tar.gz を作成。
だいたいできたが、ある程度ファイル構成を変更することにしている。
(configure.in, Makefile.am が変更されている)
おそらく 7.3.1 のままでは混乱するので、 7.3.2 などにすることになると考えている。

今日の作業内容: tar.gz の作成 6h
今日のBGM: FF9 OST [1,2,3]
今日のランチ:シッダルータ チキンカレー
明日の予測作業時間: 6h

2010年8月23日月曜日

SDPAのtar.gz の修正

今日は、SDPA の tar.gz の修正をした。
確認してみてわかったが、少しずつ誤りがあるようである。
大きな間違いではなかったので気がつかなかった。

あとは、今日気がついた修正のメモ。(明日の作業内容)

やはり、F77 で configure が作られていると、gfortran よりも g77 を優先してしまい、うまく実行できないことがある。とりあえず、F77 を FC に修正が必要だが、この修正には SDPA 本体の修正も必要であって、これは明日以降もかかりそうだ。

あと、man のページ(sdpa.1.gz)を作ったが、これを configure でインストールすると man/man1 になるべきところが man/mang になってしまう。
ここも修正が必要だ。

今日の作業内容:SDPA tar.gz 6h
今日のBGM: FF10 OST [1,2,3]
今日のランチ: 角笛 ミックスフライ
明日の予測作業時間: 6h

2010年8月20日金曜日

xrdb 解決できた

昨日問題になっていた xrdb が ssh で受け渡されてしまう点だが、.Xdefautls を使えば対応できることがわかった。

Ubuntu 上の ~/.Xresources に
Emacs.Font: VL Gothic-10
を書いた後に、
$ xrdb -merge ~/.Xresources
をすると、このあと ssh でログインした redhat で emacs がフォントを見つけられずに emacs をredhatで起動できなくなる。

この場合、Ubuntu 側で~/.Xdefaults に
Emacs.Font: VL Gothic-10
を書けばよいようである。
昨日は、「redhat 側の emacs だから redhat 側の ~/.Xdefaults を変更だろう。」と思い込んでいた。

あと、conjugate の続きだが、これはまだまだ難関が続きそうである。
max{x^2-z,0} の conjugate は計算できたが、
max{(x-a)^2-z,0} + max{(x-b)^2-z,0} + max{(x-c)^2-z,0}
とすると、かなり難しい。
まだまだである。

今日の作業内容: conjugate 3h + Ubuntu など 2h
今日のBGM: マクロスF OST [1-2]
今日のランチ: つかさ 生サーモン照り焼き
明日の予測作業時間: 3h

2010年8月19日木曜日

xrdb の不具合と conjugate function

Ubuntu 10.04 の emacs にはバグがあって、初期状態で最大化されてしまうことがある。
これを防ぐには、~/.Xresources に
Emacs.Font: VL Gothic-10
のように書いた後、
$xrdb -merge ~/.Xresources
を実行する。

ただ、これにも不具合があることに気がついた。これを実行した Ubuntu から別の Redhat に ssh -Y すると xrdb の設定が引きづられて、Redhat で emacs を起動できなくなる。
このときに、Redhat 上で
$ xrdb -remove Emacs.Font
とすると、Redhat 上では起動できるようになるが、逆に Ubuntu で
$ xrdb -query
とするとわかるように Emacs.Font の設定が消えてしまい、最大化されてしまう。

どうやら、この不具合は ~/.Xresources, ~/.Xdefaults では簡単には修正できないようだ。
また考えることにしよう。


あと、この前から計算していた conjugate function はなんとか計算できた。
もともとの関数は、
f(x,z) = max{x^2-z,0} (ただし、z は非負の値のみが定義域)
という比較的簡単なものだが、conjugate にすると、
f^*(y,w) =
[w > 0 のとき] infty
[w = 0 のとき] y \neq 0 で infty, y = 0 で 0
[w < 0 のとき] y^2 / 4 / min {1,-w}
となる。
Maxima でプロットして視覚的に確認したが、f^* は convex になっている。

この conjugate を計算するには、一度 f^* の定義式を SOCP に変換して、それから dual を生成して関数に戻している。
この方法に気がつくまでにかなりの時間がかかってしまった。
これをベースに、もうすこし難しい conjugate が計算できそうだ。

今日の作業内容: Ubuntu 2h + conjugate 4h
今日のBGM: MADLAX OST [1-2], FF5 OST [1-2], NOIR OST [1-2]
今日のランチ: いろは ネギとろ丼
明日の予測作業時間: 6h

2010年8月18日水曜日

物理の勉強

今日は、すこし時間に余裕ができたので、ひさしぶりに物理の本を読んでいる。
解析力学の本についてであるが、かなり勉強になる。

主双対内点法は、情報幾何を勉強するとわかるように相対性理論と似た部分が多い。
「相対性」に似た概念もあって、別の言葉になっているが理論的基礎の一部(NT方向の有効性など)となっている。

解析力学からもいろいろと吸収できるところがあるか、調べてみたいところだ。

あと、学会準備は発表セリフも一通り作ったので、とりあえずあとは直前になったら準備をすればOKと考えている。一通り話したところで18分なので、時間的にもちょうどよさそうである。

今日の作業内容:学会準備 4h + 物理 1h
今日のBGM: FF7 OST [1-4]
今日のランチ:角笛 ビーフシチュー
明日の予測作業時間:6h

2010年8月17日火曜日

学会準備の続き

今日は昨日に続いて学会準備の続きである。
とりあえず、Powerpoint の資料は一通り作った。ページ数にして21ページ分なので、一ページあたり1分を見込んである。図が大きいところは話す量が減るので、それを勘案するとだいたいのペースになると考えている。
何を話すかの台詞も書き始めたが、英語の文章を最近書いてなかったので、時間がかかっている。
明日にはペースを取り戻したい。

あと、暑いと集中力が落ちやすいので、気分転換をうまく取り入れたいところだ。

今日の作業内容:学会準備 4h
今日のBGM: EVA OST [1,2]
今日のランチ:しなの マグロのづけ丼とうどんのセット
明日の予測作業時間: 6h

2010年8月16日月曜日

198日ぶり

普段使っている Linux は、動作が安定しているため、ずっと稼働させているが、ひさしぶりに再起動したところ、どうやら 198 日ぶりの再起動だったようだ。anacron による自動バックアップなども正常に作動しているようである。

今日から少しは学会発表の準備になりそうだ。
今回は20分に質疑込みなので、実質18分弱であり、しかも内容は SDPARA なので、比較的に楽に準備できそうである。
特に、場所が横浜であるため、自宅から通うことができるという点が大きい。
とりあえず、PPT ファイルのおおままかな流れを決めて、スライドを何枚か作った。

今日の作業内容:学会準備 3h
今日のBGM: ARIA OST [1-3]
明日の予測作業時間:6h

2010年8月6日金曜日

conjugate の続き

conjugate の計算の続きをしているが、やはり難しい conjugate は簡単にはできないので、一段一段難しくしていくしかないようである。かなり地道な作業だ。

昨日の時点で、f(x) = max{0,x^2-R^2} については conjugate がもとまったが、今日は R^2 を定数から変数 z に置き換えて、関数を f(x,z) = max{0,x^2-z} にしてみた。本当は、ベクトル x について
f(x,z) = max{0,||x-a||^2-z} を計算したいが、まだそこまでは出来ていない。


f(x,z) = max{0,x^2-z} はそのままでは真凸関数になっていないので(-∞が取れてしまう)、z については非負とする。
これの conjugate がまだまだ難しい。
とりあえずグラフを書いてから視覚的に見ることにしようと思い、maxima を ubuntu にインストールする。これは簡単で、
$ sudo apt-get install -y wxmaxima
でできる。このあと
$ wxmaxima &
で起動してから、

plot3d(max(0,x^2-z), [x, -5, 5], [z, 0, 10]);

のようにしてグラフを書く。maxima だと max が使えるので非常に簡単にグラフが書ける。

今日はいろいろとあったのでここまで。
続きはグラフをもう少し書いてから考えることにする。

今日の作業内容:conjugate 4h
今日のBGM: FF10 OST [1,2,3]
今日のランチ: らく 焼き魚定食
明日の予測作業時間: 4h

2010年8月5日木曜日

conjugate function

この前からの続きの conjugate function の計算であるが、論文にあるような複雑な関数の conjugate function はやはり難しいので、基本的な関数から計算してみた。

参考にしたのは、「非線形最適化の基礎」(朝倉書店)。
基本的な conjugate function の例が p57 の例 2.12 にまとめられている。

もう少し計算して、以下の conjugate が求まった。

f(x) = max {ax+b,cx+d} [ただし a<c]
の場合、共役関数(conjugate function) は
f^*(y) = +infty (y<a or y > cのとき), \frac{(c-y)(-b)+(y-a)(-d)}{c-a} (a<=y<=cのとき)
である。

次に、ベクトル x について
g(x) = max{0, ||x||^2 - R^2}
の場合の共役関数は、
g^*(y) = ||y|| R (||y||<=2R のとき), ||y||^2 / 4 + R^2 (||y||>2Rのとき)
となる。
ちなみに、g(x) は R^n 全体で微分できるが、g^*(y) は R^n から原点をのぞけば微分可能である。


今日の作業内容:共役関数 5h
今日のBGM: ARIA OST [1-3]
今日のランチ:味庵 アナゴとニラの炒飯
明日の予測作業時間:5h

2010年8月4日水曜日

軽量 Ubuntu インストールスクリプト

Ubuntu 10.04 は、そのままデスクトップバージョンをインストールすると Gnome だったり OpenOffice だったりがインストールされて、かなり重たい。
そこで、Ubuntu 10.04 のサーバーバージョンをインストールして、そのあとで必要なものだけをインストールするのがお薦めであり、特に LXDE にすると軽くなる。
そこで、インストールが終わったあとに、最低限のものをインストールするスクリプトを作った。

VMplayer の場合、ハードウェアでのトラブルが少なくなるので、サーバーバージョンをインストールした後に、以下のスクリプトを実行して、日本語化+GUI+LXDE にしている。(Ecolinux よりも軽量であるが、その分機能も限定されている、あるいは限定されすぎている。)
なお、Web browser はサーバーバージョンの場合入らないので、とりあえず Chromium にしているが、Firefox でも問題ないと思う。

スクリプトは、どこかのWebサーバにアップロードしておいて、wget でダウンロードして実行する。
ただし、sudo の関係でたまにパスワードを入力する必要がある。

#!/bin/sh -x

# error message should be printed out in English
export LANG=C

# Japanese environment

wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key
add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/lucid.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install -y ubuntu-desktop-ja

# desktop
sudo apt-get install -y lxde lxdm
sudo dpkg-reconfigure lxdm

# update manager
sudo apt-get install -y update-notifier

# compilers
sudo apt-get install -y build-essential g++ gfortran
# manual
sudo apt-get install -y manpages-ja

# Web browser
sudo apt-get install -y chromium-browser-l10n

# emacs
sudo apt-get install -y ttf-vlgothic
sudo apt-get install -y emacs23


# git
sudo apt-get install -y gitk

# tex
sudo apt-get install -y latex-env-ja latex-extra-ja cmap-adobe-japan1 cmap-adobe-japan2
sudo jisftconfig add

# dvipdfmx [fix errors]
mkdir -p ~/.texmf-var/fonts
ln -s /usr/share/fonts/cmap ~/.texmf-var/fonts/cmap
cd ~/.texmf-var
wget http://w32tex.org/current/dvipdfm-w32.tar.bz2
tar xjf dvipdfm-w32.tar.bz2 share/texmf/fonts/map/agl/glyphlist.txt
tar xjf dvipdfm-w32.tar.bz2 share/texmf/fonts/map/agl/pdfglyphlist.txt
rm -f dvipdfm-w32.tar.bz2
cd ~

# yatex
sudo apt-get install -y yatex
mkdir -p ~/.emacs.d
cd ~/.emacs.d
wget http://www.yatex.org/yatex1.74.tar.gz
tar xzf yatex1.74.tar.gz
rm -f yatex1.74.tar.gz
cd ~

# xpdf
sudo apt-get install -y xpdf-reader xpdf-japanese

# lv
sudo apt-get install -y lv

# cleanup
sudo apt-get -y autoremove
sudo apt-get -y clean
sudo apt-get -y autoclean



このスクリプトは自分で必要と感じたものしか入れていないため、トラブルが起きる可能性もある。
特に、ネットワーク回りは、「/etc/network/interfaces を vi で編集できる」ぐらいの知識がないとトラブルが起きたときに対応できないかもしれない。


あと、今日は conjugate function についての勉強。dual を取るのも primal が複雑だとかなり繁雑である。アフィン関数の conjugate function は連続関数にならないので、プログラムに組み込む際には面倒かもしれない。


今日の作業内容:Ubuntu チェック 2h + conjugate 4h
今日のBGM: EVA OST [1-3]
今日のランチ: 鶏こまち からあげ丼
明日の予測作業時間: 6h

2010年8月3日火曜日

SOCP のさらに続き

数値計算であるが、どうやら SOCP で組んだものはかなり遅いらしく、論文で10秒程度のものが1時間程度かかっており、いくつものデータを初期値を変えて実験するのに手間取っている。
コンピュータで自動化してあるため、人間の手間はさほどかからないが、改善が必要である。

なにはともあれ、コンピュータに任せている間に論文を1本、斜め読みにした。
これを読むと、どうやら内側と外側の2重ループになっているうちの外側のループでは、primal-dual で交互に行っているようだ。とても賢い。

現在のプログラムは、
for 外側ループ
primal の SOCP 生成
SOCP を解いて更新
end

であるが、今日の論文では、
for 外側ループ
primal の SOCP 生成
primal-SOCP を解いた情報で dual-SOCP を生成
dual-SOCP を解いて、その結果を次の反復に
end
としている。

ただ、この場合でも、収束は linear-order となっている。
おそらく、問題を特化すれば(せめて SDPなどに)、収束をあげられるのではないだろうか?
というか、それだけでも理論的には論文のネタになるのではないだろうか?

今日の作業内容:論文読み 5h
今日のBGM: EVA OST [1]
今日のランチ: らく レバニラキムチ炒め
明日の予測作業時間: 6h

2010年8月2日月曜日

データ整理とSOCP

今日は、この前の論文の続きで、SOCP で組んだプログラムで、どの程度の精度が出せるかを調べることにした。
特化したアルゴリズムを作るのもいいが、まずは SOCP でどのくらいできるのか判断したほうがいいかと考え直した。

データについては、インターネット経由で探したところ、9個中8個までは揃った。あとひとつは、論文までは特定できるがその論文のどのデータを使ったかを特定するのが大変なので、元論文の人にメールで聞いてみようと思う。

ただ、データについて整理して気がついたが、元論文の表はあちこちに違いがあるようだ。たとえば、130個しかないデータに対して、140個のデータとして計算しているようなところがある。単純に TeX に書くときに間違えたことも考えられるし、元論文の後にデータが更新されたこともありえる。
いずれにしても、結果をストレートに比較できない点には後で注意が必要そうだ。

プログラムについては、Xeon で走らせているので、あとはコンピュータに任せておいて、明日は別の仕事を進めることにしようと思う。
途中までの結果を見ると、ペナルティパラメータを大きくすると、計算時間がかかるようになるだけでなく、誤差も大きくなっている。
現在のプログラムでは、終了条件を目的関数値の変動としているが(前の反復と比較して1e-3など)、これは相対値に変更したほうがいいかもしれない。
いずれにしても、現在のプログラムの結果を見てから判断しよう。

今日の内容:SOCP のプログラム
今日のBGM: FF8 OST [1-4]
今日のランチ:つかさ まかない丼
明日の予測作業時間:6h