/// <summary> /// このクラスを使う前にセットしてください。 /// </summary> public static void Init(IEngineConf engineConf) { Util_KifuTreeLogWriter.REPORT_ENVIRONMENT = new KyokumenPngEnvironmentImpl( Path.Combine(engineConf.LogDirectory, "_log_KifuTreeLog/"), //argsDic["outFolder"], Path.Combine(engineConf.DataDirectory, "img/gkLog/"), //argsDic["imgFolder"], engineConf.GetResourceBasename("Koma1PngBasename"), //argsDic["kmFile"], engineConf.GetResourceBasename("Suji1PngBasename"), //argsDic["sjFile"], "20", //argsDic["kmW"], "20", //argsDic["kmH"], "8", //argsDic["sjW"], "12" //argsDic["sjH"] ); }
/// <summary> /// PP 5枚の持駒 /// </summary> /// <param name="fv"></param> /// <param name="fvDirectory"></param> public static void Write_PP_5Mai(IEngineConf engineConf, FeatureVector fv, string fvDirectory) { var profilePath = System.Configuration.ConfigurationManager.AppSettings["Profile"]; var toml = Toml.ReadFile(Path.Combine(profilePath, "Engine.toml")); //StringBuilder sb = new StringBuilder(); { PpItem_P1[] p1Items = new PpItem_P1[] { new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv12PP1pInFvDir")), "1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv13PP1pInFvDir")), "1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv14PP1pInFvDir")), "1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv15PP1pInFvDir")), "1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv26PP2pInFvDir")), "2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv27PP2pInFvDir")), "2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv28PP2pInFvDir")), "2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv29PP2pInFvDir")), "2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____), }; foreach (PpItem_P1 item in p1Items) { File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Moti.Format_PP_P1Moti_5Mai(fv, item.Title, item.P1_base)); //sb.AppendLine(item.Filepath); } } }
/// <summary> /// PP 19枚の持駒 /// </summary> /// <param name="fv"></param> /// <param name="fvDirectory"></param> public static void Write_PP_19Mai(IEngineConf engineConf, FeatureVector fv, string fvDirectory) { var profilePath = System.Configuration.ConfigurationManager.AppSettings["Profile"]; var toml = Toml.ReadFile(Path.Combine(profilePath, "Engine.toml")); //StringBuilder sb_result = new StringBuilder(); { PpItem_P1[] p1Items = new PpItem_P1[] { new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv11PP1pInFvDir")), "1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv25pp2pInFvDir")), "2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____), }; foreach (PpItem_P1 item in p1Items) { File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Moti.Format_PP_P1_Moti19Mai(fv, item.Title, item.P1_base)); //sb_result.AppendLine(item.Filepath); } } }
public static void Write_KP(IEngineConf engineConf, FeatureVector fv, string fvDirectory) { string filepathW1 = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv02n1pKPInFvDir")); string filepathW2 = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv03n2pKPInFvDir")); //---------------------------------------- // 1P玉 //---------------------------------------- { File.WriteAllText(filepathW1, Format_FeatureVector_KP.Format_KP(fv, Playerside.P1)); //sb.AppendLine(filepathW1); } //---------------------------------------- // 2p玉 //---------------------------------------- { File.WriteAllText(filepathW2, Format_FeatureVector_KP.Format_KP(fv, Playerside.P2)); //sb.AppendLine(filepathW2); } }
/// <summary> /// 評価明細の書き出し。 /// </summary> /// <param name="id"></param> /// <param name="node"></param> /// <param name="treeFolder"></param> /// <param name="env"></param> public static void AAAA_Write_HyokaMeisai( IEngineConf engineConf, string id, KifuNode node, string treeFolder, KyokumenPngEnvironment env ) { StringBuilder sb = new StringBuilder(); // 見出し sb.Append(id); sb.Append(" "); sb.Append(((int)node.Score).ToString()); sb.Append(" "); switch (node.Value.KyokumenConst.KaisiPside) { case Playerside.P1: sb.Append("P2が指し終えた局面。手番P1"); break; case Playerside.P2: sb.Append("P1が指し終えた局面。手番P2"); break; case Playerside.Empty: sb.Append("手番Empty"); break; } sb.AppendLine(); foreach (KeyValuePair <string, KyHyokaMeisai_Koumoku> entry in node.KyHyokaSheet_Mutable.Items) { KyHyokaMeisai_Koumoku koumoku = ((KyHyokaMeisai_Koumoku)entry.Value); sb.Append(" "); sb.Append(entry.Key); //項目名 sb.Append(" "); sb.Append(koumoku.UtiwakeValue); //評価値 sb.Append(" "); sb.Append(koumoku.Utiwake);//内訳 sb.AppendLine(); } sb.AppendLine(); ////------------------------------ //// TODO: 局面ハッシュ ////------------------------------ //sb.Append("hash:"); //sb.AppendLine(Conv_Sky.ToKyokumenHash(node.Value.ToKyokumenConst).ToString()); //sb.AppendLine(); File.AppendAllText($"{env.OutFolder}{treeFolder}{engineConf.GetResourceBasename("HyokaMeisaiLogTxtBasename")}", sb.ToString()); }
/// <summary> /// フィーチャー・ベクター関連のファイルを全て開きます。 /// </summary> /// <param name="fv"></param> /// <param name="tv_orNull">学習でしか使いません。</param> /// <param name="rv_orNull">学習でしか使いません。</param> /// <param name="fv_komawari_file_path"></param> /// <returns></returns> public static string OpenFv(IEngineConf engineConf, FeatureVector fv, string fv_komawari_file_path) { StringBuilder sb_result = new StringBuilder(); {//駒割 string filepath = fv_komawari_file_path; if (!Util_FeatureVectorInput.Make_FromFile_Komawari(fv, filepath)) { sb_result.Append($"ファイルオープン失敗 Fv[{filepath}]。"); goto gt_EndMethod; } sb_result.Append("開fv。"); } string fvDirectory = Path.GetDirectoryName(fv_komawari_file_path); // komawari.csvと同じフォルダー { //スケール string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv00ScaleInFvDir")); if (!Util_FeatureVectorInput.Make_FromFile_Scale(fv, filepath)) { sb_result.Append($"ファイルオープン失敗 Fv[{filepath}]。"); goto gt_EndMethod; } sb_result.Append("開Sc。"); } {//KK string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv01KKInFvDir")); if (!Util_FeatureVectorInput.Make_FromFile_KK(fv, filepath)) { sb_result.Append($"ファイルオープン失敗 KK[{filepath}]。"); goto gt_EndMethod; } sb_result.Append("開KK。"); } {//1pKP string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv02n1pKPInFvDir")); if (!Util_FeatureVectorInput.Make_FromFile_KP(fv, filepath, Playerside.P1)) { sb_result.Append($"ファイルオープン失敗 1pKP[{filepath}]。"); goto gt_EndMethod; } sb_result.Append("開1pKP。"); } {//2pKP string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv03n2pKPInFvDir")); if (!Util_FeatureVectorInput.Make_FromFile_KP(fv, filepath, Playerside.P2)) { sb_result.Append($"ファイルオープン失敗 2pKP[{filepath}]。"); goto gt_EndMethod; } sb_result.Append("開2pKP。"); } {//盤上の駒 List <PP_P1Item> p1List = new List <PP_P1Item>() { new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv04PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv05PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv06pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv07pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv08pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv09pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv10pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv18pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv19pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv20pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv21pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv22pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv23pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv24pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), }; foreach (PP_P1Item p1Item in p1List) { if (!Util_FeatureVectorInput.Make_FromFile_PP_Banjo(fv, p1Item.Filepath, p1Item.P1_base)) { sb_result.Append($"ファイルオープン失敗 PP_Banjo[{p1Item.Filepath}]。"); goto gt_EndMethod; } sb_result.Append($"開{Path.GetFileName(p1Item.Filepath)}。"); } } {//19枚の持ち駒 List <PP_P1Item> p1Items = new List <PP_P1Item>() { new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv11PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv25pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____) }; foreach (PP_P1Item ppItem in p1Items) { if (!Util_FeatureVectorInput.Make_FromFile_PP_Moti19Mai(fv, ppItem.Filepath, ppItem.P1_base)) { sb_result.Append($"ファイルオープン失敗 PP_Banjo[{ppItem.Filepath}]。"); goto gt_EndMethod; } sb_result.Append($"開{Path.GetFileName(ppItem.Filepath)}。"); } } {//3枚の持駒 List <PP_P1Item> p1Items = new List <PP_P1Item>() { new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv12PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv13PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv14PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv15PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv26PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv27PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv28PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv29PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____), }; foreach (PP_P1Item ppItem in p1Items) { if (!Util_FeatureVectorInput.Make_FromFile_PP_Moti3or5Mai(fv, ppItem.Filepath, ppItem.P1_base, 5)) { sb_result.Append($"ファイルオープン失敗 PP_Banjo[{ppItem.Filepath}]。"); goto gt_EndMethod; } sb_result.Append($"開{Path.GetFileName(ppItem.Filepath)}。"); } } {//2枚の持駒 List <PP_P1Item> p1Items = new List <PP_P1Item>() { new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv16pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIHISYA__), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv17pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKAKU___), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv30pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIHISYA__), new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv31pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKAKU___), }; foreach (PP_P1Item ppItem in p1Items) { if (!Util_FeatureVectorInput.Make_FromFile_PP_Moti3or5Mai(fv, ppItem.Filepath, ppItem.P1_base, 3)) { sb_result.Append($"ファイルオープン失敗 PP_Banjo[{ppItem.Filepath}]。"); goto gt_EndMethod; } sb_result.Append($"開{Path.GetFileName(ppItem.Filepath)}。"); } } gt_EndMethod: ; return(sb_result.ToString()); }
/// <summary> /// PP 盤上の駒 /// </summary> /// <param name="fv"></param> /// <param name="fvDirectory"></param> public static void Write_PP_Banjo(IEngineConf engineConf, FeatureVector fv, string fvDirectory) { // P1が盤上の駒 { PpItem_P1[] p1Items = new PpItem_P1[] { new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv04PP1pInFvDir")), "1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv05PP1pInFvDir")), "1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv06pp1pInFvDir")), "1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv07pp1pInFvDir")), "1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv08pp1pInFvDir")), "1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv09pp1pInFvDir")), "1P飛", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv10pp1pInFvDir")), "1P角", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv18pp2pInFvDir")), "2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv19pp2pInFvDir")), "2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv20pp2pInFvDir")), "2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv21pp2pInFvDir")), "2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv22pp2pInFvDir")), "2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv23pp2pInFvDir")), "2P飛", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv24pp2pInFvDir")), "2P角", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), }; foreach (PpItem_P1 item in p1Items) { File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Banjo.Format_PP_P1Banjo(fv, item.Title, item.P1_base)); //sb.AppendLine(item.Filepath); } } }
public static void Write_KK(IEngineConf engineConf, FeatureVector fv, string fvDirectory) { File.WriteAllText(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv01KKInFvDir")), Format_FeatureVector_KK.Format_KK(fv)); }