/// <summary> /// Funkcja generuje pojedyńczy gen /// </summary> /// <param name="options">Obiekt AlgorytmOptions sluzuący do sterowania parametrami algorytmu</param> /// <param name="funkcja">Funkcja do obliczania wartości</param> /// <returns></returns> private static Gen GetRandomGen(AlgorithmOptions options, Func<double, double> funkcja) { var minValue = (int)options.SectionX_0 * 100; var maxValue = (int)options.SectionX_1 * 100; var number = (double)(RandomNumberGenerator.Next(minValue, maxValue)) / 100; return new Gen { Value = number, FunctionValue = funkcja.Invoke(number) }; }
/// <summary> /// Funkcja zwraca populację jako obiekt klasy Populacja /// </summary> /// <param name="options"></param> /// <param name="funkcja"></param> /// <returns></returns> public static Population GetGensAsPopulation(AlgorithmOptions options, Func<double, double> funkcja) { var population = new Population(); for (int i = 0; i < options.MaxGens; i++) { population.Add(GetRandomGen(options, funkcja)); } return population; }
/// <summary> /// Funkcja zwraca populację jako listę /// </summary> /// <param name="options">Obiekt AlgorytmOptions sluzuący do sterowania parametrami algorytmu</param> /// <param name="funkcja">Funkcja do obliczania wartości</param> /// <returns></returns> public static List<Gen> GetGensAsList(AlgorithmOptions options, Func<double, double> funkcja) { var list = new List<Gen>(); for (int i = 0; i < options.MaxGens; i++) { list.Add(GetRandomGen(options, funkcja)); } return list; }
/// <summary> /// Funkcja zwraca pojedyńczy gen /// </summary> /// <param name="options">Obiekt AlgorytmOptions sluzuący do sterowania parametrami algorytmu</param> /// <param name="funkcja">Funkcja do obliczania wartości</param> /// <returns></returns> public static Gen GetSingleGen(AlgorithmOptions options, Func<double, double> funkcja) { return GetRandomGen(options, funkcja); }