예제 #1
0
        /// <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++;
                }
            }
        }
예제 #2
0
 /// <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();
 }
예제 #3
0
        /// <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();
                }
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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();
                }
            }
        }