Exemple #1
0
        protected override async Task Context()
        {
            await base.Context();

            _simulationRunOptions = new SimulationRunOptions();
            _simulation           = A.Fake <IndividualSimulation>();
            A.CallTo(() => _entityTask.Validate(_simulation)).Returns(true);
        }
Exemple #2
0
        protected override Task Context()
        {
            _simulationEngine             = A.Fake <ISimulationEngine <IndividualSimulation> >();
            _popSimulationEngine          = A.Fake <ISimulationEngine <PopulationSimulation> >();
            _simulationEngineFactory      = A.Fake <ISimulationEngineFactory>();
            _simulationPersistableUpdater = A.Fake <ISimulationPersistableUpdater>();
            _lazyLoadTask = A.Fake <ILazyLoadTask>();
            _entityTask   = A.Fake <IEntityValidationTask>();
            A.CallTo(() => _simulationEngineFactory.Create <PopulationSimulation>()).Returns(_popSimulationEngine);
            A.CallTo(() => _simulationEngineFactory.Create <IndividualSimulation>()).Returns(_simulationEngine);

            sut = new SimulationRunner(_simulationEngineFactory, _lazyLoadTask, _entityTask, _simulationPersistableUpdater);

            _simulationRunOptions = new SimulationRunOptions();
            return(_completed);
        }
        public SimulationRunResults RunSimulation(IModelCoreSimulation simulation, SimulationRunOptions simulationRunOptions)
        {
            try
            {
                _simulationRunOptions = simulationRunOptions;
                _canceled             = false;
                doIfNotCanceled(() => loadSimulation(simulation));
                doIfNotCanceled(() => FinalizeSimulation(_simModelSimulation));
                doIfNotCanceled(simulate);

                return(new SimulationRunResults(!_canceled, _simModelSimulation.SolverWarnings, getResults(simulation)));
            }
            finally
            {
                _simModelSimulation = null;
                RaiseTerminated(this, EventArgs.Empty);
            }
        }
Exemple #4
0
        private static void performTask(string pkmlPath, int numberOfSimulationToRun)
        {
            var simulationTask             = Api.GetSimulationPersister();
            var concurrentSimulationRunner = Api.GetConcurrentSimulationRunner();
            var begin          = DateTime.UtcNow;
            var allSimulations = new List <Simulation>();

            for (int i = 0; i < numberOfSimulationToRun; i++)
            {
                var sim = simulationTask.LoadSimulation(pkmlPath, resetIds: true);
                allSimulations.Add(sim);
            }

            var end       = DateTime.UtcNow;
            var timeSpent = end - begin;

            Console.WriteLine($"Loading {numberOfSimulationToRun} simulations in {timeSpent.ToDisplay()}");

            var simulationRunOptions = new SimulationRunOptions
            {
                NumberOfCoresToUse = Math.Max(Environment.ProcessorCount - 1, 1)
            };

            begin = DateTime.UtcNow;
            concurrentSimulationRunner.SimulationRunOptions = simulationRunOptions;
            foreach (var simulation in allSimulations)
            {
                concurrentSimulationRunner.AddSimulation(simulation);
            }

            var res = concurrentSimulationRunner.RunConcurrently();

            end       = DateTime.UtcNow;
            timeSpent = end - begin;
            Console.WriteLine($"Running {numberOfSimulationToRun} simulations in {timeSpent.ToDisplay()}");
            allSimulations.Clear();
            doGC(concurrentSimulationRunner);
        }