/// <summary> /// Writes the faulty runs to disk. /// </summary> /// <param name="faultyRunIndices">The faulty run indices.</param> private void LogFaultyRuns(ConcurrentBag <int> faultyRunIndices) { var file = new FileInfo( Path.Combine(this._postTuningFile.DirectoryName !, $"faultyPostTuningRuns_{ProcessUtils.GetCurrentProcessId()}.csv")); var recorder = new StringArrayRecorder( file, GenomeInstancePairStringRepresentation.GetHeader(), true); var faultyRuns = faultyRunIndices.Select(index => this._listOfPostTuningGenomeInstancePairs[index]); recorder.WriteRows( faultyRuns.Select(gip => gip.ToStringArray()).ToList()); }
/// <summary> /// Initializes all log file recorder. /// </summary> private void InitializeLogFileRecorder() { // Get log file suffix from current simulation configuration. var logFileSuffix = $"SG_{this._simulationConfiguration.GrayBoxStartGeneration}_ST_{this._simulationConfiguration.GrayBoxStartTimePoint.TotalMilliseconds:0}_CT_{this._simulationConfiguration.GrayBoxConfidenceThreshold:0.####}_ID_{ProcessUtils.GetCurrentProcessId()}"; // Get feature importance header from first element in data dictionary. var featureImportanceHeader = new[] { "Generation", }.Concat( this._customGrayBoxMethods.GetGrayBoxFeatureNamesFromDataRecord(this._dataDictionary.Values.First().First())).ToArray(); // Define instance count header. var instanceCountHeader = new[] { "Instance", "CancelledBlackBoxRuns", "FinishedBlackBoxRuns", "CancelledGrayBoxRuns", "FinishedGrayBoxRuns", }; // Initialize log file recorder. this._featureImportanceRecorder = new StringArrayRecorder( new FileInfo(Path.Combine(this._logFileDirectory.FullName, $"featureImportance_{logFileSuffix}.csv")), featureImportanceHeader, true); this._predictionScoresRecorder = new StringArrayRecorder( new FileInfo(Path.Combine(this._logFileDirectory.FullName, $"predictionScores_{logFileSuffix}.csv")), GrayBoxSimulationPredictionScores.GetHeader(), true); this._tuningScoresRecorder = new StringArrayRecorder( new FileInfo(Path.Combine(this._logFileDirectory.FullName, $"tuningScores_{logFileSuffix}.csv")), GrayBoxSimulationTuningScores.GetHeader(), true); this._instanceCountRecorder = new StringArrayRecorder( new FileInfo(Path.Combine(this._logFileDirectory.FullName, $"instanceCounts_{logFileSuffix}.csv")), instanceCountHeader, true); }