Exemplo n.º 1
0
        protected override void Context()
        {
            base.Context();
            _allEvents = new List <SensitivityAnalysisEvent>();
            A.CallTo(() => _eventPublisher.PublishEvent(A <SensitivityAnalysisStartedEvent> ._))
            .Invokes(x => _allEvents.Add(x.GetArgument <SensitivityAnalysisStartedEvent>(0)));

            A.CallTo(() => _eventPublisher.PublishEvent(A <SensitivityAnalysisTerminatedEvent> ._))
            .Invokes(x => _allEvents.Add(x.GetArgument <SensitivityAnalysisTerminatedEvent>(0)));

            A.CallTo(() => _eventPublisher.PublishEvent(A <SensitivityAnalysisResultsUpdatedEvent> ._))
            .Invokes(x => _allEvents.Add(x.GetArgument <SensitivityAnalysisResultsUpdatedEvent>(0)));

            _variationData = A.Fake <VariationData>();
            _dataTable     = new DataTable();
            A.CallTo(() => _variationData.ToDataTable()).Returns(_dataTable);
            A.CallTo(() => _sensitivyAnalysisVariationDataCreator.CreateForRun(_sensitivityAnalysis)).Returns(_variationData);
            _populationRunResult = new PopulationRunResults {
                Results = new SimulationResults()
            };
            A.CallTo(() => _populationRunner.RunPopulationAsync(_modelCoreSimulation, _dataTable, null, null)).ReturnsAsync(_populationRunResult);

            _sensitivityAnalysisResults = new SensitivityAnalysisRunResult();
            A.CallTo(() => _runResultCalculator.CreateFor(_sensitivityAnalysis, _variationData, _populationRunResult.Results)).Returns(_sensitivityAnalysisResults);
        }
Exemplo n.º 2
0
 protected override void Context()
 {
     base.Context();
     _populationSimulation = A.Fake <PopulationSimulation>();
     _modelSimulation      = A.Fake <IModelCoreSimulation>();
     _populationData       = A.Fake <DataTable>();
     _runResults           = new PopulationRunResults();
     A.CallTo(() => _popExportTask.CreatePopulationDataFor(_populationSimulation)).Returns(_populationData);
     A.CallTo(() => _simMapper.MapFrom(_populationSimulation, false)).Returns(_modelSimulation);
     A.CallTo(() => _populationRunner.RunPopulationAsync(_modelSimulation, _populationData, A <DataTable> ._, A <DataTable> ._)).ReturnsAsync(_runResults);
 }
Exemplo n.º 3
0
        public async Task <PopulationRunResults> RunPopulationAsync(IModelCoreSimulation simulation, RunOptions runOptions, DataTable populationData, DataTable agingData = null, DataTable initialValues = null)
        {
            try
            {
                var numberOfCoresToUse = runOptions.NumberOfCoresToUse;
                if (numberOfCoresToUse < 1)
                {
                    numberOfCoresToUse = 1;
                }

                _populationDataSplitter  = new PopulationDataSplitter(numberOfCoresToUse, populationData, agingData, initialValues);
                _cancellationTokenSource = new CancellationTokenSource();
                _populationRunResults    = new PopulationRunResults();

                _numberOfSimulationsToRun     = _populationDataSplitter.NumberOfIndividuals;
                _numberOfProcessedSimulations = 0;

                _simulationName = simulation.Name;
                _parameterCache = _entitiesInSimulationRetriever.ParametersFrom(simulation);

                //create simmodel-XML
                var simulationExport = await CreateSimulationExportAsync(simulation, SimModelExportMode.Optimized);

                //Starts one task per core
                var tasks = Enumerable.Range(0, numberOfCoresToUse)
                            .Select(coreIndex => runSimulation(coreIndex, simulationExport, _cancellationTokenSource.Token)).ToList();

                await Task.WhenAll(tasks);

                //all tasks are completed. Can return results

                _populationRunResults.SynchronizeResults();

                return(_populationRunResults);
            }
            finally
            {
                _populationRunResults   = null;
                _populationDataSplitter = null;
                _parameterCache         = null;
                RaiseTerminated(this, EventArgs.Empty);
            }
        }
        public override void GlobalContext()
        {
            base.GlobalContext();
            _simModelExporter            = IoC.Resolve <ISimModelExporter>();
            _withIdRepository            = IoC.Resolve <IWithIdRepository>();
            _objectPathFactory           = IoC.Resolve <IObjectPathFactory>();
            _entityInSimulationRetriever = IoC.Resolve <IEntitiesInSimulationRetriever>();

            _simulation = IoC.Resolve <SimulationHelperForSpecs>().CreateSimulation();
            new RegisterTaskForSpecs(_withIdRepository).RegisterAllIn(_simulation.Model.Root);

            _populationData    = createPopTableParameters();
            _agingData         = createPopAgingParameters();
            _initialValuesData = createPopInitialValues();

            _runOptions = new RunOptions();
            sut         = new PopulationRunner(_simModelExporter, new SimModelSimulationFactory(), _objectPathFactory, _entityInSimulationRetriever);

            _results = sut.RunPopulationAsync(_simulation, _runOptions, _populationData, _agingData).Result;
        }
Exemplo n.º 5
0
        public async Task <PopulationRunResults> RunPopulationAsync(IModelCoreSimulation simulation, DataTable populationData, DataTable agingData = null, DataTable initialValues = null)
        {
            try
            {
                if (NumberOfCoresToUse < 1)
                {
                    NumberOfCoresToUse = 1;
                }

                agingData               = agingData ?? undefinedAgingData();
                initialValues           = initialValues ?? undefinedInitialValues();
                _populationDataSplitter = new PopulationDataSplitter(populationData, agingData, initialValues, NumberOfCoresToUse);
                _cancelationTokenSource = new CancellationTokenSource();
                _populationRunResults   = new PopulationRunResults();

                _numberOfSimulationsToRun     = _populationDataSplitter.NumberOfIndividuals;
                _numberOfProcessedSimulations = 0;

                _simulationName = simulation.Name;
                //create simmodel-XML
                string simulationExport = await CreateSimulationExportAsync(simulation, SimModelExportMode.Optimized);

                //Starts one task per core
                var tasks = Enumerable.Range(0, NumberOfCoresToUse)
                            .Select(coreIndex => runSimulation(coreIndex, simulationExport, _cancelationTokenSource.Token)).ToList();

                await Task.WhenAll(tasks);

                //all tasks are completed. Can return results

                _populationRunResults.SynchronizeResults();

                return(_populationRunResults);
            }
            finally
            {
                _populationRunResults   = null;
                _populationDataSplitter = null;
                RaiseTerminated(this, EventArgs.Empty);
            }
        }
        public override void GlobalContext()
        {
            base.GlobalContext();
            _simModelExporter  = IoC.Resolve <ISimModelExporter>();
            _withIdRepository  = IoC.Resolve <IWithIdRepository>();
            _objectPathFactory = IoC.Resolve <IObjectPathFactory>();

            _simulation = IoC.Resolve <SimulationHelperForSpecs>().CreateSimulation();
            new RegisterTaskForSpecs(_withIdRepository).RegisterAllIn(_simulation.Model.Root);
            var schemaPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "OSPSuite.SimModel.xsd");

            XMLSchemaCache.InitializeFromFile(schemaPath);

            _populationData    = createPopTableParameters();
            _agingData         = createPopAgingParameters();
            _initialValuesData = createPopInitialValues();

            sut = new PopulationRunner(_simModelExporter, new SimModelSimulationFactory(), _objectPathFactory);

            _results = sut.RunPopulationAsync(_simulation, _populationData, _agingData).Result;
        }
Exemplo n.º 7
0
 private Task <SensitivityAnalysisRunResult> calculateSensitivityBasedOn(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, PopulationRunResults runResults)
 {
     return(Task.Run(() => _runResultCalculator.CreateFor(sensitivityAnalysis, variationData, runResults.Results)));
 }