/// <summary> /// Writes data rows (result experiments) to the <paramref name="resultSheet"/> /// </summary> /// <param name="model"><see cref="Model"/> instance to be exported</param> /// <param name="resultSheet"><see cref="ExcelWorksheet"/> instance to write exported data to</param> private void WriteResultRows(Model model, ExcelWorksheet resultSheet) { if (resultSheet == null) { throw new ArgumentNullException("resultSheet"); } Indices.UpdateColumnOffsets(model); int rowOffset = Indices.DataRowOffset; OptimizationMethodResult result = model.Properties.GetProperty <OptimizationMethodResult>(OptimizationMethodResult.PropertyName); if (result == null) { throw new InvalidOperationException("Optimization result was not found in model properties"); } foreach (TId experimentId in result.SortedPoints) { Experiment experiment = model.Experiments[experimentId]; if (experiment.IsActive) { WriteExperiment(experiment, rowOffset, resultSheet, model); rowOffset++; } } }
/// <summary> /// Writes results file header with some basic information /// </summary> /// <param name="result"><see cref="OptimizationMethodResult"/> or derived class instance describing optimization result</param> /// <param name="outputFileWriter"><see cref="StreamWriter"/> to be used for the output</param> private void WriteFileHeader(OptimizationMethodResult result, StreamWriter outputFileWriter) { outputFileWriter.WriteLine(NamesAndFormats.Delimiter); outputFileWriter.WriteLine(NamesAndFormats.FileHeader); outputFileWriter.WriteLine(string.Format(NamesAndFormats.DateLineFormat, DateTime.UtcNow.ToString(NamesAndFormats.DateTimeFormat))); outputFileWriter.WriteLine(string.Format(NamesAndFormats.MethodLineFormat, result.MethodName)); outputFileWriter.WriteLine(NamesAndFormats.Delimiter); outputFileWriter.WriteLine(); outputFileWriter.WriteLine(); outputFileWriter.WriteLine(); }
/// <summary> /// Writes model information and optimization results /// </summary> /// <param name="model"><see cref="Model"/> instance to be exported</param> /// <param name="result"><see cref="OptimizationMethodResult"/> or derived class instance describing optimization result</param> /// <param name="outputFile">File to write results to</param> private void WriteResult(Model model, OptimizationMethodResult result, FileInfo outputFile) { using (FileStream outputFileStream = outputFile.OpenWrite()) using (StreamWriter outputFileWriter = new StreamWriter(outputFileStream, Encoding.UTF8)) { WriteFileHeader(result, outputFileWriter); WriteModelDetails(model, outputFileWriter); WriteOptimizationResult(model, result, outputFileWriter); outputFileWriter.Flush(); } }
/// <summary> /// Exports <paramref name="model"/> (optimization results) to text format /// </summary> /// <param name="model"><see cref="Model"/> instance to be exported</param> public void Export(Model model) { if (model == null) { throw new ArgumentNullException("model"); } OptimizationMethodResult result = model.Properties.GetProperty <OptimizationMethodResult>(OptimizationMethodResult.PropertyName); if (result == null) { throw new InvalidOperationException("Optimization result was not found in model properties"); } FileInfo outputFile = new FileInfo(settings.FilePath); WriteResult(model, result, outputFile); }
/// <summary> /// Writes list of experiments sorted according to the selected optimization method /// </summary> /// <param name="model"><see cref="Model"/> instance to be exported</param> /// <param name="result"><see cref="OptimizationMethodResult"/> or derived class instance describing optimization result</param> /// <param name="outputFileWriter"><see cref="StreamWriter"/> to be used for the output</param> private void WriteOptimizationResult(Model model, OptimizationMethodResult result, StreamWriter outputFileWriter) { outputFileWriter.WriteLine(); outputFileWriter.WriteLine(); outputFileWriter.WriteLine(); outputFileWriter.WriteLine(); outputFileWriter.WriteLine(NamesAndFormats.Results); outputFileWriter.WriteLine(); foreach (TId experimentId in result.SortedPoints) { Experiment experiment = model.Experiments[experimentId]; if (experiment.IsActive) { outputFileWriter.Write(string.Format(NamesAndFormats.ExperimentNumberFormat, experiment.Number)); foreach (Parameter parameter in model.Parameters.Values) { outputFileWriter.Write(string.Format( NamesAndFormats.ValueFormat, parameter.Name, experiment.ParameterValues[parameter.Id].ToStringInvariant(SettingsManager.Instance.DoubleStringFormat))); } foreach (Criterion criterion in model.Criteria.Values) { outputFileWriter.Write(string.Format( NamesAndFormats.ValueFormat, criterion.Name, experiment.CriterionValues[criterion.Id].ToStringInvariant(SettingsManager.Instance.DoubleStringFormat))); } foreach (Constraint constraint in model.FunctionalConstraints.Values) { outputFileWriter.Write(string.Format( NamesAndFormats.ValueFormat, constraint.Name, experiment.ConstraintValues[constraint.Id].ToStringInvariant(SettingsManager.Instance.DoubleStringFormat))); } outputFileWriter.WriteLine(); } } }