/// <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); }
protected virtual void OnSimulationStart(double messageGenerateChance, int tableUpdatePeriod, bool isDatagramMode, bool isRouterStupid, int messagesSize) { SimulationStart?.Invoke(messageGenerateChance, tableUpdatePeriod, isDatagramMode, isRouterStupid, messagesSize); }