示例#1
0
        /// <summary>
        /// Starts a simulation on the curent thread and runs to completion
        /// </summary>
        /// <param name="func"></param>
        /// <param name="args"></param>
        public T[] Start(T[] initialValues)
        {
            SimulationStart?.Invoke(this, new SimulationEventArgs <T>());
            T[] result    = InitialConditions.InitialCondition(initialValues);
            var deltaTime = 0.0;

            while (true)
            {
                var iterResult = Iteration(CalculateDeltaTime(ref deltaTime), result);
                SimulationProgress?.Invoke(this, new SimulationEventArgs <T>(iterResult.Item1));

                if (iterResult.Item2.IsComplete(iterResult.Item1))
                {
                    SimulationStopping?.Invoke(this, new SimulationEventArgs <T>(iterResult.Item1));
                    break;
                }
            }
            SimulationStopped?.Invoke(this, new SimulationEventArgs <T>(result));
            return(result);
        }
示例#2
0
 protected virtual void OnSimulationStart(double messageGenerateChance, int tableUpdatePeriod,
                                          bool isDatagramMode, bool isRouterStupid, int messagesSize)
 {
     SimulationStart?.Invoke(messageGenerateChance, tableUpdatePeriod, isDatagramMode, isRouterStupid,
                             messagesSize);
 }