スコアの計算方法が人によって異ならず,他の人と同様にスコア計算することは,公平な競技では重要である.ここでは,公平なスコア計算を行うために,以下のことを考える. -プレーヤー(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 ....を行わない方がよい.