[upload] 情報工学実験2: 探索アルゴリズムその1
木曜日, 12月 22nd, 2011情報工学実験2の探索アルゴリズムその1を公開しました。
ほぼ昨年通りの内容で、やや課題や説明の仕方を修正しています。レポートの骨組みにも課題説明や求めている報告内容の例を示すようにしてみました。
情報工学実験2の探索アルゴリズムその1を公開しました。
ほぼ昨年通りの内容で、やや課題や説明の仕方を修正しています。レポートの骨組みにも課題説明や求めている報告内容の例を示すようにしてみました。
libsvmをコンパイルして「その場で動かす」だけなら README に書いてある手順で進められますが、実用的には好きな場所で実行できるようにしたい。ということでその手順です。
【蛇足コラム】
svm-trainとかの場所をos.path.exists()で確認するようなスクリプトになっているので絶対パスで指定せざるを得ないのだけど、cdll.LoadLibrary()のように環境変数か何かで指定されたPATHを参照して対象ファイルが存在するかを判断するようなライブラリって無いんだろうか。
ConfigParserあたりで変更箇所を一括管理する形で書くのも良いかもしれないけど。
> tar xvfz libsvm-3.1.tar.gz > cd libsvm-3.1 > make
> mkdir -p ~/bin/libsvm/tools > cp svm-predict svm-scale svm-train ~/bin/libsvm/ > cp tools/*.py ~/bin/libsvm/tools/
> emacs ~/bin/libsvm/tools/easy.py is_win32でWindowsか否かに分けてパスをしている箇所で、 svmscale_exe 等のパスを絶対パスで指定。下記は記入例。 =====begin(easy.py)===== svmscale_exe = "/Users/tnal/bin/libsvm/svm-scale" svmtrain_exe = "/Users/tnal/bin/libsvm/svm-train" svmpredict_exe = "/Users/tnal/bin/libsvm/svm-predict" grid_py = "/Users/tnal/bin/libsvm/tools/grid.py" gnuplot_exe = "/usr/local/bin/gnuplot" =====end=====
> svm-train 等と引数無しで実行した時にエラーが出なければ (使い方が出力されるだけなら)OK。
> cd python > make #../libsvm.so.2 が作成される > sudo cp ../libsvm.so.2 /usr/local/lib/
# ライブラリをインストールする場所の確認。 > python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" # 以下は「/Library/Python/2.6/site-packages」と出力された場合の例。 > emacs svm.py 「if sys.platform == 'win32':」後でパスを指定している箇所にて、 以下のように変更。元のインデントを保つように注意。 =====begin(svm.py)===== #libsvm = CDLL(os.path.join(os.path.dirname(__file__),\ # '../libsvm.so.2')) cdll.LoadLibrary("libsvm.so.2") libsvm = CDLL("libsvm.so.2") =====end=====
> mkdir /Library/Python/2.6/site-packages/libsvm > cp svm.py svmutil.py /Library/Python/2.6/site-packages/libsvm/ > touch /Library/Python/2.6/site-packages/libsvm/__init__.py
> python >> from libsvm import svm でエラーが出なければOK。
情報工学実験1/スクリプトプログラミングのレポート提出状況は以下の通りです。
チェック時刻: 6/3, 21:00
アカウントの次に書かれている数字は遅延日数です。
e055757/, 1
e085717/, 未提出
e085726/
e085741/
e085753/, 未提出
e085759/, 未提出
e095723/, 未提出
e095731/, 未提出
e105701/
e105703/
e105707/
e105711/
e105714/
e105718/
e105722/
e105723/
e105724/
e105725/
e105726/
e105731/
e105733/
e105734/, 未提出
e105735/
e105739/
e105740/
e105747/
e105751/
e105753/
e105754/
e105755/
e105756/
e105757/
f115007/
e055754/, 未提出
e075734/, 未提出
e075742/
e095713/, 5/26(マシントラブル)
e095714/
e095719/
e095757/, 5/26
e095758/, 未提出
e105702/
e105704/
e105705/
e105706/
e105708/
e105709/
e105710/
e105713/
e105715/
e105716/
e105717/
e105719/
e105721/
e105727/, 5/26
e105728/
e105729/
e105730/
e105732/
e105736/
e105737/, 5/31
e105738/
e105741/
e105742/
e105743/
e105744/
e105745/, 5/25(事前相談有り)
e105746/
e105748/
e105749/
e105750/, 未提出
e105758/, 6/2
e105759/, 5/31
e105760/
情報工学実験3/進化計算班の1回目が終了しました。MLに議事録を流しているのですが、参照し難い部分もあるので公開を兼ねてHTML版を投稿。
目次
・議事録
・zsh補足
・Mercurial補足
・(1) 環境変数の設定。
・(2) hg 設定ファイルの編集。
・(3) リモートでリポジトリを作成。
・(4) ローカルにリポジトリを複製する。
・(5) リポジトリ内で作業する。
・(6) 必要に応じて古いバージョンに戻す。
・(extra.) マージの例。
・(extra.) 必要ないファイルを add 対象にしてしまった場合。
・プレガイダンス
・レポート確認: Level0: オープンソース外観
・背景・基礎知識
・課題: Level1
・グループ作成
・グループ1: 095751J 東川上一成, 095720J 慶留間諒太, 095731D 新城幸之佑
・グループ2: 095771C 宮里友美, 095725K 重信琢人
・グループ3: 095708K 太田陽祐, 095701B 青木史林
・オプション: zsh & Mercurial 実習(複数人でシェアする使い方)。
・次回予定: GA概要、auto-complete.el &簡易プログラミング予定。
参考サイト
・漢のzsh
・zshは、tcshやbash等を使っている以下のような症状に悩んでいる人に有効 である。
今回は便利な設定をコピーして利用しましたが、各設定の意味を理解するには自分で設定を読んだり、上記サイトやドキュメントを読んでください。便利な機能についてもいろいろ解説されてます。
バージョン管理システムの一例として学科でも提供してるMercurialを利用して開発を進めます。
export HGENCODING=UTF-8 EDITOR=emacs
を設定。shark 側は設定済みですので、ローカル側にやっておきましょう。EDITOR は設定しなくても良いですが、デフォルトだと commit 時のエディタが vi になります。vi好きな人はviを指定しましょう。
[ui] username = Naruaki TOMA
ぐらいを設定。ローカル側でやっときましょう。これを設定しておくと、commit 時の username が見つからなかったとかいうwarning が出なくなります。
例えば、e095700 というアカウントの人が個人利用のリポジトリをつくる場合には以下のようにします。
macbook> ssh info3@shark.nal.ie.u-ryukyu.ac.jp shark% cd HG/2011 shark% hg init e095700
これで shark 側での作業は終了です。
macbook> mkdir temp #作業用ディレクトリを作成 macbook> cd temp macbook> hg clone ssh://info3@shark.nal.ie.u-ryukyu.ac.jp//home/info3/HG/2011/e095700/
引数が長ったらしいですが、これも一度zshで実行しておくと、「hg」や「hg clone」まで入力した状態で Ctrl+P で以前利用した引数を自動で補完してくれます。
macbook> hg add (ファイル名) *ファイル名を省略することが可能ですが、その場合には 未登録のファイル全てが対象になりますので、不要な ファイルまで登録候補になってないか確認してください。 macbook> hg commit *ただし、この時の commit ではメインリポジトリには反映しません ので、ローカルのみの管理になります。サーバ上にも反映するには commit してから push します。 macbook> hg push *普段は commit だけをやっておき、共用が必要になるタイミングで push する使い方になるでしょう。
macbook> hg log -v で更新履歴を参照できるので、そこで付けられてるバージョン番号を見つけ、 macbook> hg update -r (バージョン番号) として指定したバージョンに戻します。
macbook> emacs test macbook> hg commit macbook> hg push *エラー! macbook> hg pull macbook> hg merge *新旧混ざったファイルが生成されるので、それを目視確認しながら編集。 macbook> emacs test macbook> hg resolve --list # マージ状態の確認 macbook> hg resolve -m test *編集し終えたことを明示。 macbook> hg commit macbook> hg push
macbook> hg status macbook> hg revert test~ macbook> hg status *問題無ければcommit&push
講義・実験一覧のページに、下記実験分のリンクを掲載
しました。スクリプトプログラミングについては近いうちに準備する予定です。
(実験の議事録もこっちに掲載してみるかなぁ)
情報工学実験2の探索アルゴリズムその1とその2を公開しました。
レポートの骨組みに課題説明や求めている報告内容の例を示すようにしてみました。
探索アルゴリズム1の口頭試問日調整用の記事です。
「空き時間目安」を参照の上、「口頭試問希望の手順」に沿って調整してください。
(1) レポートを提出(サーバにアップロード)する。
(2) メールで提出報告する際に、空き時間目安を参照の上、希望日&時間帯を申請する。
(3) 特に問題無ければ、私から承認メールを返信します。
(4) 予約時間帯にグループメンバ全員で口頭試問。(約20分程度)
*場所は當間部屋(705室)です。
あくまでも目安です。実際には下記時間帯で対応できないこともありますので、ご了承ください。
12/17(金), 午前中
12/20(月), 午前中
12/21(火), 丸一日OK
12/22(水), 午前中
12/23(木)*祝日, 希望次第で調整
12/24(金), 午前中(レポート締め切り日)12/27(月), 午前中(レポート締め切り日)
13:00-13:20, 金グループ8
13:20-14:20, 補講
16:30-16:50, 金グループ7
12/28(火), 丸一日OK
13:00-14:00, 別件
13:50-14:10(別件次第), 金グループ6
14:30-14:50, 金グループ3
14:50-15:10, 金グループ3(探索2)
16:30-16:50, 金グループ4
12/29(水), 大学休みですが希望次第で調整
→希望者がいたので14:00-16:00の間のみ受け付けます。
14:00-14:20, 金グループ1
14:30-14:50, 月グループ5
15:00-15:20, 月グループ7
15:30-15:40, 金グループ7(未実施分)1/4(火), 丸一日OK
11:00-11:20, 月グループ1
15:00-15:20, 月グループ4
1/5(水), (多分)丸一日OK
14:00-14:20, 月グループ3
14:40-14:50, 月グループ1(未実施分)
1/6(木), 午前中〜3時限目までOK。
1/7(金), 午前中 or 17:00-18:00
17:00-17:20, 金グループ101/11(火), 丸一日OK
11:30-12:00, 金グループ6(探索2)
14:00-14:20, 金グループ5
14:40-15:00, 月グループ6
15:00-15:20, 月グループ8
16:00-17:00, 別件
18:00-18:20, 金グループ2
>未実施
(月8&10)>終了
金1,2,3,4,(5),6,7,8,(10)
月1,3,4,5,6,7,(8)>オプション(探索アルゴリズム2)終了
金3,4,6
月1,4>修正確認(探索アルゴリズム1)
金1,3,(4),6,8
月1,4,5,6,7>修正確認(探索アルゴリズム2)
金4
月1,7
提出状況(メール報告があった分)
>探索アルゴリズム1
金1,2,3,4,5,6,7,8,10
月1,3,4,5,6,7,8
>探索アルゴリズム2
金1,2,3,4,5,6,7,8,10
月1,3,4,5,6,7,8
実験1のテーマ「スクリプトプログラミング(5/11, 5/14)」の資料を仮アップしました。課題は調整中です。
情報工学実験2: 探索アルゴリズムその2を公開しました。
情報工学実験2: 探索アルゴリズムその1を公開しました。レポートのスケルトンを準備中です。