2006年2月03日の投稿

おうちで LOP
最長片道きっぷを線形計画法で解いた葛西さんが、ふつうの PC で計算できるツール LOP toolkitを公開しているようです。GNU のフリーウェアと葛西さん作成の Perl スクリプトを組み合わせるようです。それなら Mac でも動くのではと思って試してみました。
Mac OS X なら、Perl は入っているし、Postscript ファイルは標準アプリ「プレビュー」で開けるので Ghostscript は不要。GLPK という線形計画法ソルバーは Darwinports のパッケージで入れるのが楽でしょう。Darwinports が入っていれば、ターミナルで sudo port install glpk
とタイプすれだけで楽勝。
次は LOP toolkit をいじります。とりあえずサンプルデータを動かすことにして、それをコピーしておきます。
$ cp sample/edgeshon.csv edges.csv $ cp sample/lophonsh.txt map.txt
それから、計算に必要な路線図データと制約式を作ります。
$ perl edge2cs.pl edges.csv > css.csv $ perl makedata.pl Lee > east_Lee.mod
あとは起動スクリプトを動かそうと思いましたが、これは DOS バッチファイルなので使えません。シェルスクリプトとして移植します。以下のコードを auto.sh という名前で保存します。
#! /bin/sh while [ $? -lt 100 ]; do glpsol -m $1.mod -o res.txt perl coloring.pl $3 res.txt | perl txt2sw.pl | perl sw2ps.pl > res.ps perl loopchk.pl $1 $2 done
これに実行権限を追加 (chmod +x auto.sh
) して、いよいよ起動です。
$ ./auto.sh east_Lee Lee map.txt
あとはダーっと表示が流れて進んでいきます。しかし、2時間たっても計算が終了しません。独立ループを含んだ結果なら出ているんですが、それを除去して再計算するループを3回繰り返した4回目の計算が時間かかっています。
途中経過でいいや、とおもって res.ps をプレビューで開いてみると文字化け……。どうやら、PS ファイルの文字列は Shift_JIS なのに、それを Unicode マッピングのフォントで代替表示しているようです。仕方ないので、Perl で Osaka フォントを指定するように修正します。
$ perl -lpe 's/Ryumin-Light-RKSJ-H/Osaka/g' -i res.ps
これで文字化けはなくなりましたが、駅名の表示がなんか変てこなような……。

親知らずが痛む
きょうの朝から右下の親知らず付近が腫れて痛くなってきました。我慢していれば痛みは引くだろうと思っていましたが、夕食の「太巻かぶりつき」を食べると我慢できなくなって、鏡で口の中を見てみると腫れがひどくなっています。こりゃいかんということで、あわてて近所の歯医者に行きました。
幸い 19:30 まで開いている医者に駆け込んで診てもらいました。やはり親知らずが原因で炎症になっていました。もともと外側に生えていて口の中を圧迫しているので炎症になりやすいらしいです。根本的治療には抜いた方がいいらしいですが、抜くのはなんとなく嫌……。左側の親知らずは上下ともきれいに生えていて、右上は歯が存在していません。左下が生え方が悪いようです。
とりあえず、ヨウ素消毒して痛み止めと抗生物質をもらいました。当面様子見です。
