private void OnOptimizationComplete(object sender, OptimizationCompletedEventArgs e) { var logArgumentsOptimizer = new[] { "optimizationCompleted", e.Duration.TotalMilliseconds.ToString("F3"), e.Model.Solutions.Count.ToString("D"), e.Model.IsFeasible ? "TRUE": "FALSE", e.Model.UserModel.CognitiveCapacity.ToString("F3"), e.Model.UserModel.CognitiveLoad.ToString("F3"), e.Model.NumMinPlacementSlots.ToString("D"), e.Model.NumMaxPlacementSlots.ToString("D"), e.Model.VisibilityReward.ToString("F3"), e.Model.WeightImportance.ToString("F3"), e.Model.WeightUtility.ToString("F3") }; OptimizationLogger.Log(logArgumentsOptimizer); DebugLogger.Log(logArgumentsOptimizer); for (var solutionIndex = 0; solutionIndex < e.Model.Solutions.Count; solutionIndex++) { var solution = e.Model.Solutions[solutionIndex]; var logArguments = new List <string> { solutionIndex.ToString("D"), solution.Objective.ToString("F3") }; for (var solutionElementIndex = 0; solutionElementIndex < solution.SolutionElements.Count; solutionElementIndex++) { var solutionSolutionElement = solution.SolutionElements[solutionElementIndex]; var appElement = AppController.AppModel.Elements[solutionElementIndex]; logArguments.Add(appElement.ElementIsInView ? "InView" : "NotInView"); foreach (var key in solutionSolutionElement.LodAndVisiblityDictionary.Keys) { var lod = key; var visibility = solutionSolutionElement.LodAndVisiblityDictionary[key]; logArguments.Add(lod.ToString("D")); logArguments.Add(visibility.ToString("F1")); } } OptimizationLogger.Log(logArguments.ToArray()); DebugLogger.Log(logArguments.ToArray()); } }
void cmaes_OptimizationCompleted(object sender, OptimizationCompletedEventArgs e) { Console.WriteLine("Best result: {0:d}", e.ResultFitness); Debug.Assert(e.ResultFitness < initialFitness); }