/// <summary> /// Tworzy nową populację oraz w niej nową losową generację o określonym rozmiarze. /// </summary> /// <param name="evolutionController">Kontroler ewolucji.</param> /// <param name="generationSize">Wielkość generacji które będą należeć do tej generacji.</param> public Population(IEvolutionController evolutionController, uint generationSize) { GenerationsSize = generationSize; this.evolutionController = evolutionController ?? throw new ArgumentNullException("evolutionController nie może być null."); CurrentGeneration = new Generation(evolutionController, generationSize); }
/// <summary> /// Tworzy nową generację z obiektami oraz kontrolerem ewolucyjnym. /// </summary> /// <param name="evolutionController">Kontroler ewolucyjny.</param> /// <param name="objects">Objekty należące do tej generacji.</param> public Generation(IEvolutionController evolutionController, IDna[] objects) { Objects = objects; this.evolutionController = evolutionController ?? throw new ArgumentNullException("evolutionController nie może być null."); for (int i = 0; i < Objects.Length; i++) { Objects[i].Generation = this; Objects[i].Id = i; } }
/// <summary> /// Tworzy nową generację z określoną ilością obiektów oraz kontrolerem ewolucyjnym. /// </summary> /// <param name="evolutionController">Kontroler ewolucyjny.</param> /// <param name="size">Ilość obiektów.</param> public Generation(IEvolutionController evolutionController, uint size) { Objects = new IDna[size]; this.evolutionController = evolutionController ?? throw new ArgumentNullException("evolutionController nie może być null."); for (int i = 0; i < size; i++) { Objects[i] = evolutionController.GetRandomDna(); Objects[i].Generation = this; Objects[i].Id = i; } }