//ラウンドを実行し,そのラウンドの正解率を求める public ExpResult ExecRound(bool learning = true) { // ラウンド開始 StartRound(); ManySteps(SensorRate); // 実行結果:Accuracyを受け取る ExpAccuracy res = this.EnvAccuracy; // 実行結果:ImportanceLevelを受け取る ExpAgentsParam aveIL = calcAverageImportanceLevel(); if (learning) { // ラウンド終了。エージェントは学習し、初期化される。 FinishRound(); } else { // ラウンド終了。エージェントは学習せず、初期化される。 CancelRound(); } return(new ExpResult(res, aveIL)); }
public ExpResult(ExpAccuracy acc, ExpAgentsParam a) { Accuracy = acc; AgentsParam = a; }
public ExpAccuracy Run()//お手本 { var roundAccLog = L.g("roundacc"); Initialize(); //1st step PrepareAlgorithm(); ////////////評価開始:正確性を求める//////////// double correctRound = 0; double incorrectRound = 0; double undeterRound = 0; roundAccLog.WriteLine("<LEARNING> RoundNum: " + RoundNum); //LEARNING while (!this.LearningIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(); ////////////////////////////////////////////////////////////////////// roundAccLog.WriteLine( string.Format("{0}, {1}, {2}, ", Round, //ラウンド番号:すなわち,センサーのランダムのシード Environment.TheFact.Value, //事実の値 roundResult)); //正解率およびImportanceLevelと推定値の平均 } roundAccLog.WriteLine("***EVALUATION***"); //EVALUATION while (!this.EvaluationIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(false);//学習しないラウンドを実行 ////////////////////////////////////////////////////////////////////// correctRound += roundResult.Accuracy.Correct; incorrectRound += roundResult.Accuracy.Incorrect; undeterRound += roundResult.Accuracy.Undeter; //ラウンドを実行して,そのラウンドでの正確性を求める roundAccLog.WriteLine( string.Format("{0}, {1}, {2}, ", Round, //ラウンド番号:すなわち,センサーのランダムのシード Environment.TheFact.Value, //事実の値 roundResult)); //正解率およびImportanceLevelと推定値の平均 } //すべてのラウンドの平均 double correctRoundRate = correctRound / RoundNum; // = accuracy double incorrectRoundRate = incorrectRound / RoundNum; double undeterRoundRate = undeterRound / RoundNum; var res = new ExpAccuracy(correctRoundRate, incorrectRoundRate, undeterRoundRate); L.g("all").WriteLine(",," + res.ToString()); return(res); }
public ExpAccuracy Run()//お手本 { var roundAccLog = L.g("roundacc"); Initialize(); //1st step BuildCandidates(); ////////////評価開始:正確性を求める//////////// double correctRound = 0; double incorrectRound = 0; double undeterRound = 0; roundAccLog.WriteLine("<LEARNING> RoundNum: " + RoundNum); //LEARNING while (!this.LearningIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(); ////////////////////////////////////////////////////////////////////// roundAccLog.WriteLine( string.Format("Round: {0} fact: {1} {2}", Round, Environment.TheFact.Value, roundResult)); } roundAccLog.WriteLine("***EVALUATION***"); //EVALUATION while (!this.EvaluationIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(false);//学習しないラウンドを実行 ////////////////////////////////////////////////////////////////////// correctRound += roundResult.Accuracy.Correct; incorrectRound += roundResult.Accuracy.Incorrect; undeterRound += roundResult.Accuracy.Undeter; //ラウンドを実行して,そのラウンドでの正確性を求める roundAccLog.WriteLine( string.Format("Round: {0} fact: {1} {2}", Round, Environment.TheFact.Value, roundResult)); } //すべてのラウンドの平均 double correctRoundRate = correctRound / RoundNum; // = accuracy double incorrectRoundRate = incorrectRound / RoundNum; double undeterRoundRate = undeterRound / RoundNum; var res = new ExpAccuracy(correctRoundRate, incorrectRoundRate, undeterRoundRate); L.g("roundacc,console").WriteLine(res.ToString()); return(res); }
//お手本 public ExpAccuracy Run() { var roundAccLog = L.g("roundacc"); Initialize(); //1st step BuildCandidates(); ////////////評価開始:正確性を求める//////////// double correctRound = 0; double incorrectRound = 0; double undeterRound = 0; roundAccLog.WriteLine("<LEARNING> RoundNum: " + RoundNum); //LEARNING while (!this.LearningIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(); ////////////////////////////////////////////////////////////////////// roundAccLog.WriteLine( string.Format("Round: {0} fact: {1} {2}", Round, Environment.TheFact.Value, roundResult )); } roundAccLog.WriteLine("***EVALUATION***"); //EVALUATION while (!this.EvaluationIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(false);//学習しないラウンドを実行 ////////////////////////////////////////////////////////////////////// correctRound += roundResult.Accuracy.Correct; incorrectRound += roundResult.Accuracy.Incorrect; undeterRound += roundResult.Accuracy.Undeter; //ラウンドを実行して,そのラウンドでの正確性を求める roundAccLog.WriteLine( string.Format("Round: {0} fact: {1} {2}", Round, Environment.TheFact.Value, roundResult )); } //すべてのラウンドの平均 double correctRoundRate = correctRound / RoundNum; // = accuracy double incorrectRoundRate = incorrectRound / RoundNum; double undeterRoundRate = undeterRound / RoundNum; var res = new ExpAccuracy(correctRoundRate, incorrectRoundRate, undeterRoundRate); L.g("roundacc,console").WriteLine(res.ToString()); return res; }
//お手本 public ExpAccuracy Run() { var roundAccLog = L.g("roundacc"); Initialize(); //1st step PrepareAlgorithm(); ////////////評価開始:正確性を求める//////////// double correctRound = 0; double incorrectRound = 0; double undeterRound = 0; roundAccLog.WriteLine("<LEARNING> RoundNum: " + RoundNum); //LEARNING while (!this.LearningIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(); ////////////////////////////////////////////////////////////////////// roundAccLog.WriteLine( string.Format("{0}, {1}, {2}, ", Round, //ラウンド番号:すなわち,センサーのランダムのシード Environment.TheFact.Value, //事実の値 roundResult ));//正解率およびImportanceLevelと推定値の平均 } roundAccLog.WriteLine("***EVALUATION***"); //EVALUATION while (!this.EvaluationIsFinished) { ///////////////////////////////ラウンドを実行/////////////////////////////// // このラウンドでの事実bを決める Environment.TheFact.randomNext(); //ラウンドを実行 var roundResult = ExecRound(false);//学習しないラウンドを実行 ////////////////////////////////////////////////////////////////////// correctRound += roundResult.Accuracy.Correct; incorrectRound += roundResult.Accuracy.Incorrect; undeterRound += roundResult.Accuracy.Undeter; //ラウンドを実行して,そのラウンドでの正確性を求める roundAccLog.WriteLine( string.Format("{0}, {1}, {2}, ", Round, //ラウンド番号:すなわち,センサーのランダムのシード Environment.TheFact.Value, //事実の値 roundResult ));//正解率およびImportanceLevelと推定値の平均 } //すべてのラウンドの平均 double correctRoundRate = correctRound / RoundNum; // = accuracy double incorrectRoundRate = incorrectRound / RoundNum; double undeterRoundRate = undeterRound / RoundNum; var res = new ExpAccuracy(correctRoundRate, incorrectRoundRate, undeterRoundRate); L.g("all").WriteLine(",," + res.ToString()); return res; }