ゼミのお話/一覧/スコアリングのためのモジュール化 の変更点


スコアの計算方法が人によって異ならず,他の人と同様にスコア計算することは,公平な競技では重要である.ここでは,公平なスコア計算を行うために,以下のことを考える.

-プレーヤー(n本腕バンディットを解く人)は,解くプログラムを以下のように関数化する
--void init_player();
---なんか初期化するのに使う.
--void set_arm_num(int arm_num);
---バンディットの腕の数(n)を知るための関数
--int decision_making(double previous_reward);
---decision_makingとは,意思決定の意味である.つまり,バンディットのどの腕を選択するかを考える関数である.この関数の返り値は,選択する腕である.
---引数は,意思決定(次にどの腕を選ぶか)を考え行うために必要と思われる情報とした.
---引数 previous_rewardは前回選択した腕でいくら報酬がもらえたか,である.試行の第1回目は"前回"がないので,この場合には"0.0"が与えられる.
--void close_player();
---なんか終了処理をする.特にポインタなどを使っている場合、この中でfreeをするのに使う.
//---引数は二つある.これは,意思決定(次にどの腕を選ぶか)を考え行うために必要と思われる情報とした.
//---一つ目の引数は,previous_selected_arm,前回自分で選択した腕,である.1回目は最初の腕選択なので"前回自分で選択した腕"はない.この場合には,"0"が与えられる.
//---二つ目の引数は,前回選択した腕でいくら報酬がもらえたか,である.一つ目同様,1回目は"前回"がないので,この場合には"0"が与えられる.
//---意思決定関数の改定.以下でもよい~
//int decision_making(int previous_reward);

-上記関数を以下のファイルで実装し,オフィシャルに提供する
--player.h
---上記関数の定義
--player.o
---gcc -c player.c で作成
---player.cは関数decision_making(...)の実装を行う.

-オフィシャル(n本腕バンディットを作って提供する人)はプレーヤーから提供された関数を元に,以下のプログラムによってスコア計算を行う.
--[[スコア計算用プログラム>./officialスコア計算用プログラム]]

-gcc -o game collect.c player.c bandit**.o での作成が慣れてきたら,以下を行い,公式スコアに登録してみる
//--gcc -c player.c
//---player.c から player.o を作成
//--cp player.o /Network/Public/kentarou/bandit/******/
--cp player.c /mnt/public/YakanEnshuB/bandit/******/player.c
---*****は自分の学籍番号.例えば学籍番号100000なら cp player.o /mnt/public/YakanEnshuB/bandit/1000000/player.c
---*****は自分の学籍番号.例えば学籍番号100000なら cp player.c /mnt/public/YakanEnshuB/bandit/1000000/player.c
--中間モニタにて公式スコアを計算し続けているので、自分のスコアを確認
--注意
//---自分のスコアを計算している時には,cp player.o ....を行わない方がよい.
---自分のスコアを計算している時には,cp player.c ....を行わない方がよい.