示例#1
0
        protected override void Context()
        {
            _rangeImageCreator = A.Fake <IOptimizedParameterRangeImageCreator>();
            sut = new ParameterIdentificationRunResultToRunResultDTOMapper(_rangeImageCreator);

            _parameterIdentification = new ParameterIdentification();
            _runResult             = A.Fake <ParameterIdentificationRunResult>().WithDescription("Desc");
            _runResult.Index       = 5;
            _optimizationRunResult = new OptimizationRunResult();
            _runResult.BestResult  = _optimizationRunResult;
            A.CallTo(() => _runResult.NumberOfEvaluations).Returns(10);
            A.CallTo(() => _runResult.TotalError).Returns(5);

            _identificationParameter1 = new IdentificationParameter().WithName("P1");
            _identificationParameter1.Add(parameterNamed(1, Constants.Parameters.MIN_VALUE));
            _identificationParameter1.Add(parameterNamed(2, Constants.Parameters.START_VALUE));
            _identificationParameter1.Add(parameterNamed(3, Constants.Parameters.MAX_VALUE));

            _identificationParameter2 = new IdentificationParameter().WithName("P2");
            _identificationParameter2.Add(parameterNamed(4, Constants.Parameters.MIN_VALUE));
            _identificationParameter2.Add(parameterNamed(5, Constants.Parameters.START_VALUE));
            _identificationParameter2.Add(parameterNamed(6, Constants.Parameters.MAX_VALUE));

            _identificationParameter3 = new IdentificationParameter().WithName("P3");
            _identificationParameter3.Add(parameterNamed(7, Constants.Parameters.MIN_VALUE));
            _identificationParameter3.Add(parameterNamed(8, Constants.Parameters.START_VALUE));
            _identificationParameter3.Add(parameterNamed(9, Constants.Parameters.MAX_VALUE));
            _identificationParameter3.IsFixed = true;

            _parameterIdentification.AddIdentificationParameter(_identificationParameter1);
            _parameterIdentification.AddIdentificationParameter(_identificationParameter2);
            _parameterIdentification.AddIdentificationParameter(_identificationParameter3);

            _optimizedParameterValue1 = new OptimizedParameterValue("P1", 2.5, 2.1);
            _optimizationRunResult.AddValue(_optimizedParameterValue1);
            _optimizedParameterValue2 = new OptimizedParameterValue("P2", 5.5, 5.2);
            _optimizationRunResult.AddValue(_optimizedParameterValue2);
            //does not exist in PI anymore
            _optimizationRunResult.AddValue(new OptimizedParameterValue("P DOES NOT EXIST", 50, 60));

            A.CallTo(_rangeImageCreator).WithReturnType <Image>().Returns(ApplicationIcons.OK);
        }
        protected override void Context()
        {
            base.Context();
            _bestColumn    = DomainHelperForSpecs.ObservedData().FirstDataColumn();
            _currentColumn = DomainHelperForSpecs.ObservedData().FirstDataColumn();

            _bestResult    = A.Fake <OptimizationRunResult>();
            _currentResult = A.Fake <OptimizationRunResult>();
            sut.EditParameterIdentification(_parameterIdentification);
            sut.SelectedOutput = A.Fake <OutputMapping>();

            A.CallTo(() => _bestResult.SimulationResultFor(A <string> ._)).Returns(_bestColumn);
            A.CallTo(() => _currentResult.SimulationResultFor(A <string> ._)).Returns(_currentColumn);

            _runState = A.Fake <ParameterIdentificationRunState>();
            A.CallTo(() => _runState.BestResult).Returns(_bestResult);
            A.CallTo(() => _runState.CurrentResult).Returns(_currentResult);
            A.CallTo(() => _runState.Status).Returns(RunStatus.CalculatingSensitivity);
            _view.OutputSelectionEnabled = true;
        }
示例#3
0
        protected override void Context()
        {
            _presentationSettingsTask = A.Fake <IPresentationSettingsTask>();
            _view = A.Fake <IParameterIdentificationSingleRunAnalysisView>();
            _chartEditorAndDisplayPresenter = A.Fake <IChartEditorAndDisplayPresenter>();
            _curveNamer            = A.Fake <ICurveNamer>();
            _pathElementsMapper    = A.Fake <IDataColumnToPathElementsMapper>();
            _chartTemplatingTask   = A.Fake <IChartTemplatingTask>();
            _dimensionFactory      = A.Fake <IDimensionFactory>();
            _chartEditorLayoutTask = A.Fake <IChartEditorLayoutTask>();
            _projectRetreiver      = A.Fake <IProjectRetriever>();

            _chartPresenterContext = A.Fake <ChartPresenterContext>();
            A.CallTo(() => _chartPresenterContext.EditorAndDisplayPresenter).Returns(_chartEditorAndDisplayPresenter);
            A.CallTo(() => _chartPresenterContext.CurveNamer).Returns(_curveNamer);
            A.CallTo(() => _chartPresenterContext.DataColumnToPathElementsMapper).Returns(_pathElementsMapper);
            A.CallTo(() => _chartPresenterContext.TemplatingTask).Returns(_chartTemplatingTask);
            A.CallTo(() => _chartPresenterContext.PresenterSettingsTask).Returns(_presentationSettingsTask);
            A.CallTo(() => _chartPresenterContext.DimensionFactory).Returns(_dimensionFactory);
            A.CallTo(() => _chartPresenterContext.EditorLayoutTask).Returns(_chartEditorLayoutTask);
            A.CallTo(() => _chartPresenterContext.ProjectRetriever).Returns(_projectRetreiver);


            sut = new ParameterIdentificationResidualVsTimeChartPresenter(_view, _chartPresenterContext);

            _residualVsTimeChart     = new ParameterIdentificationResidualVsTimeChart().WithAxes();
            _parameterIdentification = A.Fake <ParameterIdentification>();

            _parameterIdentificationRunResult = A.Fake <ParameterIdentificationRunResult>();
            A.CallTo(() => _parameterIdentification.Results).Returns(new[] { _parameterIdentificationRunResult });

            _residualResults       = new ResidualsResult();
            _optimizationRunResult = new OptimizationRunResult {
                ResidualsResult = _residualResults
            };
            _parameterIdentificationRunResult.BestResult = _optimizationRunResult;


            A.CallTo(() => _parameterIdentification.MinObservedDataTime).Returns(10);
            A.CallTo(() => _parameterIdentification.MaxObservedDataTime).Returns(50);
        }
示例#4
0
        protected override void Context()
        {
            base.Context();
            _runResult     = A.Fake <OptimizationRunResult>();
            _outputMapping = A.Fake <OutputMapping>();
            A.CallTo(() => _outputMapping.FullOutputPath).Returns("A|B|C");
            _outputMapping.Scaling = Scalings.Linear;
            var outputTime = new BaseGrid("Time", DomainHelperForSpecs.TimeDimensionForSpecs())
            {
                Values = new [] { 1f, 2f, 3f }
            };

            _outputValues = new DataColumn("Output", DomainHelperForSpecs.ConcentrationDimensionForSpecs(), outputTime)
            {
                Values   = new[] { 15f, 16f, 17f },
                DataInfo = { MolWeight = 150 }
            };

            A.CallTo(() => _runResult.SimulationResultFor(_outputMapping.FullOutputPath)).Returns(_outputValues);
            _confidenceInterval = new[] { 10d, 20d, 30d };
        }
示例#5
0
        protected override void Context()
        {
            _view = A.Fake <IParameterIdentificationChartFeedbackView>();
            _chartDisplayPresenter = A.Fake <IChartDisplayPresenter>();
            _dimensionFactory      = A.Fake <IDimensionFactory>();
            _displayUnitRetriever  = A.Fake <IDisplayUnitRetriever>();

            sut = new ParameterIdentificationTimeProfileFeedbackPresenter(_view, _chartDisplayPresenter, _dimensionFactory, _displayUnitRetriever);

            _runState      = A.Fake <ParameterIdentificationRunState>();
            _bestResult    = A.Fake <OptimizationRunResult>();
            _currentResult = A.Fake <OptimizationRunResult>();

            A.CallTo(() => _runState.BestResult).Returns(_bestResult);
            A.CallTo(() => _runState.CurrentResult).Returns(_currentResult);

            _parameterIdentification = A.Fake <ParameterIdentification>();
            _outputMapping1          = A.Fake <OutputMapping>();
            _outputMapping2          = A.Fake <OutputMapping>();
            _outputMapping3          = A.Fake <OutputMapping>();
            A.CallTo(() => _outputMapping1.FullOutputPath).Returns("A|B|C");
            A.CallTo(() => _outputMapping2.FullOutputPath).Returns("A|B|C");
            A.CallTo(() => _outputMapping3.FullOutputPath).Returns("A|B|C|D");
            A.CallTo(() => _parameterIdentification.AllOutputMappings).Returns(new[] { _outputMapping1, _outputMapping2, _outputMapping3 });

            var baseGrid1 = new BaseGrid("TimeCol1", DomainHelperForSpecs.TimeDimensionForSpecs());

            _obsCol1 = new DataColumn("ObsCol1", DomainHelperForSpecs.ConcentrationDimensionForSpecs(), baseGrid1);

            var baseGrid2 = new BaseGrid("TimeCol2", DomainHelperForSpecs.TimeDimensionForSpecs());

            _obsCol2 = new DataColumn("ObsCol2", DomainHelperForSpecs.ConcentrationDimensionForSpecs(), baseGrid2);

            var baseGrid3 = new BaseGrid("TimeCol3", DomainHelperForSpecs.TimeDimensionForSpecs());

            _obsCol3 = new DataColumn("ObsCol3", DomainHelperForSpecs.ConcentrationDimensionForSpecs(), baseGrid3);

            A.CallTo(() => _parameterIdentification.AllObservationColumnsFor(_outputMapping1.FullOutputPath)).Returns(new[] { _obsCol1, _obsCol2 });
            A.CallTo(() => _parameterIdentification.AllObservationColumnsFor(_outputMapping3.FullOutputPath)).Returns(new[] { _obsCol3 });
        }
        /// <summary>
        ///    Optimize objective function (x[0]-3)^2+(x[1]-4)^2
        /// </summary>
        /// <param name="values"></param>
        /// <returns></returns>
        protected virtual OptimizationRunResult ObjectiveFunction(IReadOnlyList <OptimizedParameterValue> values)
        {
            var residualResult  = new ResidualsResult();
            var outputResiduals = new OutputResiduals("A|B", new DataRepository(), new[]
            {
                new Residual(0, values[0].Value - 3, 1),
                new Residual(0, values[1].Value - 4, 1)
            });

            residualResult.AddOutputResiduals(outputResiduals);

            var optimizationRunResult = new OptimizationRunResult
            {
                ResidualsResult = residualResult,
                Values          = values,
            };

            if (optimizationRunResult.TotalError < _optimizationResult.TotalError)
            {
                _optimizationResult = optimizationRunResult;
            }

            return(optimizationRunResult);
        }
        //context shoud represent use case defined in 47-7990 Management of Jacobi Matrix
        protected override void Context()
        {
            _parameterIdentification = A.Fake <ParameterIdentification>();
            _runResult         = A.Fake <OptimizationRunResult>();
            _simModelBatches   = new Dictionary <ISimulation, ISimModelBatch>();
            _allOutputMappings = new List <OutputMapping>();
            _allVariableIdentificationParameters = new List <IdentificationParameter>();

            A.CallTo(() => _parameterIdentification.AllOutputMappings).Returns(_allOutputMappings);
            A.CallTo(() => _parameterIdentification.AllVariableIdentificationParameters).Returns(_allVariableIdentificationParameters);
            sut = new JacobianMatrixCalculator();

            _output1        = A.Fake <OutputMapping>();
            _simulation1    = A.Fake <ISimulation>();
            _simModelBatch1 = A.Fake <ISimModelBatch>();
            _simModelBatches.Add(_simulation1, _simModelBatch1);
            A.CallTo(() => _output1.Simulation).Returns(_simulation1);
            A.CallTo(() => _output1.FullOutputPath).Returns("S1|OutputPath1");
            A.CallTo(() => _output1.OutputPath).Returns("OutputPath1");
            _allOutputMappings.Add(_output1);

            _output2        = A.Fake <OutputMapping>();
            _simulation2    = A.Fake <ISimulation>();
            _simModelBatch2 = A.Fake <ISimModelBatch>();
            A.CallTo(() => _output2.Simulation).Returns(_simulation2);
            A.CallTo(() => _output2.FullOutputPath).Returns("S2|OutputPath2");
            A.CallTo(() => _output2.OutputPath).Returns("OutputPath2");
            _simModelBatches.Add(_simulation2, _simModelBatch2);
            _allOutputMappings.Add(_output2);

            _identificationParameter1 = new IdentificationParameter().WithName("IP1");
            _identificationParameter2 = new IdentificationParameter().WithName("IP2");

            _ps1 = A.Fake <ParameterSelection>();
            _ps1.Parameter.Value = 100;
            A.CallTo(() => _ps1.FullQuantityPath).Returns("S1|ParameterPath1");
            A.CallTo(() => _ps1.Path).Returns("ParameterPath1");
            A.CallTo(() => _ps1.Simulation).Returns(_simulation1);
            _identificationParameter1.AddLinkedParameter(_ps1);

            _ps2 = A.Fake <ParameterSelection>();
            _ps2.Parameter.Value = 200;
            A.CallTo(() => _ps2.FullQuantityPath).Returns("S2|ParameterPath2");
            A.CallTo(() => _ps2.Path).Returns("ParameterPath2");
            A.CallTo(() => _ps2.Simulation).Returns(_simulation2);
            A.CallTo(() => _ps2.Dimension).Returns(_ps1.Dimension);
            _identificationParameter1.AddLinkedParameter(_ps2);

            _ps3 = A.Fake <ParameterSelection>();
            _ps3.Parameter.Value = 300;
            A.CallTo(() => _ps3.FullQuantityPath).Returns("S2|ParameterPath3");
            A.CallTo(() => _ps3.Path).Returns("ParameterPath3");
            A.CallTo(() => _ps3.Simulation).Returns(_simulation2);
            _identificationParameter2.AddLinkedParameter(_ps3);

            _allVariableIdentificationParameters.Add(_identificationParameter1);
            _allVariableIdentificationParameters.Add(_identificationParameter2);

            A.CallTo(() => _runResult.AllResidualsFor(_output1.FullOutputPath)).Returns(new[] { new Residual(1, 11, 1), new Residual(2, 21, 2), new Residual(3, 31, 0) });
            A.CallTo(() => _runResult.AllResidualsFor(_output2.FullOutputPath)).Returns(new[] { new Residual(1, 12, 3), new Residual(3, 32, 4), new Residual(4, 42, 5) });

            A.CallTo(() => _simModelBatch1.SensitivityValuesFor(_output1.OutputPath, _ps1.Path)).Returns(new[] { 11d, 21d, 31d, 41d, 51d });
            A.CallTo(() => _simModelBatch1.SensitivityValuesFor(_output1.OutputPath, _ps2.Path)).Throws(new OSPSuiteException());
            A.CallTo(() => _simModelBatch1.SensitivityValuesFor(_output1.OutputPath, _ps3.Path)).Throws(new OSPSuiteException());

            A.CallTo(() => _simModelBatch2.SensitivityValuesFor(_output2.OutputPath, _ps1.Path)).Throws(new OSPSuiteException());
            A.CallTo(() => _simModelBatch2.SensitivityValuesFor(_output2.OutputPath, _ps2.Path)).Returns(new[] { 12d, 22d, 32d, 42d, 52d, 62d });
            A.CallTo(() => _simModelBatch2.SensitivityValuesFor(_output2.OutputPath, _ps3.Path)).Returns(new[] { 13d, 23d, 33d, 43d, 53d, 63d });

            _simResults1 = new DataColumn
            {
                BaseGrid = new BaseGrid("Time", DomainHelperForSpecs.TimeDimensionForSpecs())
                {
                    Values = new[] { 1f, 2f, 3f, 4f, 5f }
                },
                Values = new[] { 10f, 20f, 30f, 40f, 50f }
            };

            A.CallTo(() => _runResult.SimulationResultFor(_output1.FullOutputPath)).Returns(_simResults1);

            _simResults2 = new DataColumn
            {
                BaseGrid = new BaseGrid("Time", DomainHelperForSpecs.TimeDimensionForSpecs())
                {
                    Values = new[] { 1f, 2f, 3f, 4f, 5f, 6f }
                },
                Values = new[] { 10f, 20f, 30f, 40f, 50f, 60f }
            };

            A.CallTo(() => _runResult.SimulationResultFor(_output2.FullOutputPath)).Returns(_simResults2);
        }
 protected override void Context()
 {
     sut = CreateOptimizationAlgorithm();
     _optimizationResult = new OptimizationRunResult();
 }
示例#9
0
        public DataRepository CreateFor(string confidenceIntervalName, double[] confidenceInterval, OutputMapping outputMapping, OptimizationRunResult runResult)
        {
            if (confidenceInterval == null)
            {
                return(new NullDataRepository());
            }

            var fullOutputPath = outputMapping.FullOutputPath;
            var dataRepository = new DataRepository().WithName(fullOutputPath);

            var simulationResult   = runResult.SimulationResultFor(fullOutputPath);
            var simulationBaseGrid = simulationResult.BaseGrid;
            var timeGrid           = new BaseGrid(simulationBaseGrid.Name, simulationBaseGrid.Dimension)
            {
                Values       = simulationBaseGrid.Values,
                DataInfo     = simulationBaseGrid.DataInfo.Clone(),
                QuantityInfo = simulationBaseGrid.QuantityInfo.Clone(),
            };

            var outputColumn = new DataColumn(simulationResult.Name, simulationResult.Dimension, timeGrid)
            {
                Values       = simulationResult.Values,
                DataInfo     = simulationResult.DataInfo.Clone(),
                QuantityInfo = simulationResult.QuantityInfo.Clone(),
            };

            outputColumn.DataInfo.AuxiliaryType = outputMapping.Scaling == Scalings.Linear ? AuxiliaryType.ArithmeticMeanPop : AuxiliaryType.GeometricMeanPop;

            var interval = new DataColumn(confidenceIntervalName, simulationResult.Dimension, timeGrid)
            {
                DisplayUnit  = simulationResult.DisplayUnit,
                Values       = confidenceInterval.ToFloatArray(),
                QuantityInfo = simulationResult.QuantityInfo.Clone(),
                DataInfo     = { Origin = ColumnOrigins.CalculationAuxiliary, MolWeight = outputColumn.DataInfo.MolWeight },
            };

            outputColumn.IsInternal = true;
            interval.AddRelatedColumn(outputColumn);
            dataRepository.Add(interval);

            return(dataRepository);
        }
示例#10
0
        public JacobianMatrix CalculateFor(ParameterIdentification parameterIdentification, OptimizationRunResult runResult, ICache <ISimulation, ISimModelBatch> simModelBatches)
        {
            var allVariableIdentificationParameters = parameterIdentification.AllVariableIdentificationParameters.ToList();
            var matrix = new JacobianMatrix(allVariableIdentificationParameters.AllNames());

            foreach (var outputMappings in parameterIdentification.AllOutputMappings.GroupBy(x => x.FullOutputPath))
            {
                var outputMapping  = outputMappings.ElementAt(0);
                var simModelBatch  = simModelBatches[outputMapping.Simulation];
                var fullOutputPath = outputMappings.Key;
                var outputResult   = runResult.SimulationResultFor(fullOutputPath);

                matrix.AddRows(jacobianRowFrom(runResult, fullOutputPath, outputResult, allVariableIdentificationParameters, outputMapping, simModelBatch));
                matrix.AddPartialDerivatives(partialDerivativesFrom(fullOutputPath, outputResult, allVariableIdentificationParameters, outputMapping, simModelBatch));
            }

            return(matrix);
        }
示例#11
0
 private void raiseRunStatusChanged(OptimizationRunResult currentRunResult)
 {
     RunStatusChanged(this,
                      new ParameterIdentificationRunStatusEventArgs(new ParameterIdentificationRunState(RunResult, currentRunResult, _totalErrorHistory,
                                                                                                        _parametersHistory)));
 }