예제 #1
0
 /// <summary>
 /// DeepBeliefNetworkを取得します。
 /// </summary>
 /// <param name="version">AIプレイヤのバージョン</param>
 /// <returns>DeepBeliefNetwork</returns>
 public DeepBeliefNetwork GetDeepBeliefNetwork(AiPlayer.Version version)
 {
     if (!this.DeepBeliefNetworks.ContainsKey(version))
     {
         this.DeepBeliefNetworks[version] = Serializer.Load <DeepBeliefNetwork>(string.Format(LearningConfig.LearnerSavePath + @"/{0}_{1}.bin", DeepBeliefNetworkFileName, version.ToString().ToLower()));
     }
     return(this.DeepBeliefNetworks[version]);
 }
예제 #2
0
        /// <summary>
        /// 指定したバージョンのベクトルを取得します。
        /// </summary>
        /// <param name="version">ベクトルバージョン</param>
        /// <param name="context">フィールド状態</param>
        /// <returns>ベクトル</returns>
        public SparseVector <double> GetVector(AiPlayer.Version version, FieldContext context)
        {
            if (!this.VectorGens.ContainsKey(version))
            {
                throw new ArgumentException("ベクトル種別が不正です");
            }

            var vector = this.GetVector(this.VectorGens[version], context);

            return(vector);
        }
예제 #3
0
        /// <summary>
        /// MultipleLinearRegression。
        /// </summary>
        /// <param name="learner">MultipleLinearRegression</param>
        /// <param name="version">AIプレイヤのバージョン</param>
        public void SaveMultipleLinearRegression(MultipleLinearRegression learner, AiPlayer.Version version)
        {
            var filePath = string.Format(LearningConfig.LearnerSavePath + @"/{0}_{1}_{2}.csv", MultipleLinearRegressionFileName, DateTime.Now.ToString("yyyyMMddhhmmss"), version.ToString().ToLower());
            var sb       = new StringBuilder();

            foreach (var w in learner.Weights)
            {
                sb.Append($"{w},");
            }
            sb.Append(learner.Intercept.ToString());
            FileHelper.Write(sb.ToString(), filePath);
        }
예제 #4
0
 /// <summary>
 /// MultipleLinearRegressionを取得します。
 /// </summary>
 /// <param name="version">AIプレイヤのバージョン</param>
 /// <returns>MultipleLinearRegression</returns>
 public MultipleLinearRegression GetMultipleLinearRegression(AiPlayer.Version version)
 {
     if (!this.MultipleLinearRegressions.ContainsKey(version))
     {
         var csv = Resources.Load <TextAsset>($"Csvs/Learners/{MultipleLinearRegressionFileName}_{version.ToString().ToLower()}").ToString();
         var weightsAndIntercept = csv.Split(',');
         var weightsLength       = weightsAndIntercept.Count() - 1;
         var intercept           = weightsAndIntercept.Last();
         var weights             = weightsAndIntercept.Take(weightsLength).Select(w => double.Parse(w)).ToArray();
         this.MultipleLinearRegressions[version] = new MultipleLinearRegression();
         this.MultipleLinearRegressions[version].NumberOfInputs = weightsLength;
         this.MultipleLinearRegressions[version].Intercept      = double.Parse(intercept);
         this.MultipleLinearRegressions[version].Weights        = weights;
     }
     return(this.MultipleLinearRegressions[version]);
 }
예제 #5
0
        /// <summary>
        /// 指定した種別の評価値を取得します。
        /// </summary>
        /// <param name="version">バージョン</param>
        /// <param name="context">フィールド状態</param>
        /// <returns>評価値</returns>
        public double GetEval(AiPlayer.Version version, FieldContext context)
        {
            double ev = 0.0d;

            switch (version)
            {
            case AiPlayer.Version.V1_0:
            case AiPlayer.Version.V2_0:
                ev  = this.LinearRegressionEvaluators[version].Evaluate(context);
                ev += this.AliveEvaluators[version].Sum(e => e.Evaluate(context));
                ev += this.RandomEvaluator.Evaluate(this.RandomParams[version]);
                break;

            default:
                throw new ArgumentException("バージョンが不正です");
            }
            return(ev);
        }
예제 #6
0
        /// <summary>
        /// DeepBeliefNetworkを保存します。
        /// </summary>
        /// <param name="network">DeepBeliefNetwork</param>
        public void SaveDeepBeliefNetwork(DeepBeliefNetwork network, AiPlayer.Version version)
        {
            var filePath = string.Format(LearningConfig.LearnerSavePath + @"/{0}_{1}_{2}.bin", DeepBeliefNetworkFileName, DateTime.Now.ToString("yyyyMMddhhmmss"), version.ToString().ToLower());

            network.Save(filePath);
        }
예제 #7
0
 /// <summary>
 /// 依存する情報を注入します。
 /// </summary>
 /// <param name="version">AIプレイヤのバージョン</param>
 public void Inject(AiPlayer.Version version)
 {
     this.Version     = version;
     this.Regression  = DiProvider.GetContainer().GetInstance <LearnerManager>().GetMultipleLinearRegression(this.Version);
     this.HasInjected = true;
 }