/// <summary> /// Constructor. /// </summary> /// <param name="id"></param> /// <param name="nnEvaluator"></param> /// <param name="searchParams"></param> /// <param name="childSelectParams"></param> /// <param name="gameLimitManager"></param> /// <param name="paramsSearchExecutionModifier"></param> public GameEngineCeresInProcess(string id, NNEvaluatorDef evaluatorDef, ParamsSearch searchParams = null, ParamsSelect childSelectParams = null, IManagerGameLimit gameLimitManager = null, ParamsSearchExecutionModifier paramsSearchExecutionModifier = null) : base(id) { if (evaluatorDef == null) { throw new ArgumentNullException(nameof(evaluatorDef)); } // Use default settings for search and select params if not specified. if (searchParams == null) { searchParams = new ParamsSearch(); } if (childSelectParams == null) { childSelectParams = new ParamsSelect(); } // Use default limit manager if not specified. if (gameLimitManager == null) { gameLimitManager = new ManagerGameLimitCeres(); } ParamsSearchExecutionModifier = paramsSearchExecutionModifier; EvaluatorDef = evaluatorDef; SearchParams = searchParams; GameLimitManager = gameLimitManager; ChildSelectParams = childSelectParams; }
/// <summary> /// Constructor. /// </summary> public GameEngineDefCeres(string id, NNEvaluatorDef evaluatorDef, ParamsSearch searchParams = null, ParamsSearchExecutionModifier paramsSearchExecutionPostprocessor = null, ParamsSelect selectParams = null, IManagerGameLimit overrideTimeManager = null) : base(id) { EvaluatorDef = evaluatorDef; SearchParams = searchParams ?? new ParamsSearch(); ParamsSearchExecutionPostprocessor = paramsSearchExecutionPostprocessor; SelectParams = selectParams ?? new ParamsSelect(); OverrideTimeManager = overrideTimeManager; }
/// <summary> /// Constructor. /// </summary> public GameEngineDefCeres(string id, NNEvaluatorDef evaluatorDef, ParamsSearch searchParams = null, ParamsSearchExecutionModifier paramsSearchExecutionPostprocessor = null, ParamsSelect selectParams = null, IManagerGameLimit overrideTimeManager = null) : base(id) { // Make a defensive clone of the EvaluatorDef so it will definitely not be shared. EvaluatorDef = ObjUtils.DeepClone(evaluatorDef); SearchParams = searchParams ?? new ParamsSearch(); ParamsSearchExecutionPostprocessor = paramsSearchExecutionPostprocessor; SelectParams = selectParams ?? new ParamsSelect(); OverrideTimeManager = overrideTimeManager; }
/// <summary> /// Primary method that sets the optimal parameters. /// </summary> /// <param name="estNumNodes"></param> /// <param name="postprocessor">optional delegated called after parameters are set allowing modifications</param> public void ChooseOptimal(int estNumNodes, ParamsSearchExecutionModifier postprocessor) { if (ParamsSearch.AutoOptimizeEnabled) { // Start by resetting to default values by constructing new instance. ParamsSearch.Execution = new ParamsSearchExecution(); // Then choose optimal values. DoChooseOptimal(estNumNodes); } postprocessor?.Invoke(ParamsSearch.Execution); }
/// <summary> /// Constructor. /// </summary> /// <param name="id"></param> /// <param name="evaluatorDef"></param> /// <param name="searchParams"></param> /// <param name="childSelectParams"></param> /// <param name="gameLimitManager"></param> /// <param name="paramsSearchExecutionModifier"></param> /// <param name="logFileName"></param> public GameEngineCeresInProcess(string id, NNEvaluatorDef evaluatorDef, ParamsSearch searchParams = null, ParamsSelect childSelectParams = null, IManagerGameLimit gameLimitManager = null, ParamsSearchExecutionModifier paramsSearchExecutionModifier = null, string logFileName = null) : base(id) { if (evaluatorDef == null) { throw new ArgumentNullException(nameof(evaluatorDef)); } // Use default settings for search and select params if not specified. if (searchParams == null) { searchParams = new ParamsSearch(); } if (childSelectParams == null) { childSelectParams = new ParamsSelect(); } // Use default limit manager if not specified. if (gameLimitManager == null) { gameLimitManager = new ManagerGameLimitCeres(); } ParamsSearchExecutionModifier = paramsSearchExecutionModifier; EvaluatorDef = evaluatorDef; SearchParams = searchParams; GameLimitManager = gameLimitManager; ChildSelectParams = childSelectParams; SearchLogFileName = logFileName; VerboseMoveStats = CeresUserSettingsManager.Settings.VerboseMoveStats; if (!string.IsNullOrEmpty(CeresUserSettingsManager.Settings.SearchLogFile)) { SearchLogFileName = CeresUserSettingsManager.Settings.SearchLogFile; } }