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); }
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); }
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; }
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; }
private Task <SensitivityAnalysisRunResult> calculateSensitivityBasedOn(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, PopulationRunResults runResults) { return(Task.Run(() => _runResultCalculator.CreateFor(sensitivityAnalysis, variationData, runResults.Results))); }