internal void EndPositionDiscovered(GWPosition <PositionData, ActionData> position) { if (position.IsEndPosition) { CategoryEvaluationLogic.AddPositionFound(position); position.Score = EndPositionEvaluator.Evaluate(position); if (BestResult == null || position.Score > BestResult.Score) { BestResult = position; NewBestResult.Enter(position); } } }
private void Prepare() { random = new Random(2016); ComputationInfo.Progress = 0; BestResult = null; RunnerPool.Clear(); CheckPoints.Clear(); CategoryEvaluationLogic.Reset(); LastGeneration = new List <PreSolution <PositionData, ActionData, CheckPointType> >(); PreSolutions = new List <PreSolution <PositionData, ActionData, CheckPointType> >(); var startPos = MandatoryActionExecuter.ExecuteMandatoryActions(new GWPosition <PositionData, ActionData>(Input.CreateStartPosition(), 0, null)); PreSolutions.AddRange(startPos.Select(pos => new PreSolution <PositionData, ActionData, CheckPointType>(pos))); ProgressEstimator.Init(PreSolutions.First().Position.Data); }
private CategoryEvaluation EvaluateCategory(GWPosition <PositionData, ActionData> pos) { var score = CategoryEvaluationLogic.Evaluate(pos); return(score); }