private void SetInitialSolution() { var individual = BinaryStringHelper.GenerateRandomIndividual(IndividualLength); ActualSolution = new Reduct(individual, ClusteredDataObjects); CheckedReducts.Add(ActualSolution); }
private void AddRandomIndividualToPopulation() { var randomIndividual = BinaryStringHelper.GenerateRandomIndividual(IndividualLength); TryAddReductToCheckedReductsList(randomIndividual); ActualPopulation.Individuals.Add(CheckedReducts.FirstOrDefault(r => r.Individual == randomIndividual)); }
private void SetInitialPopulation() { ActualPopulation = new Population(); for (var i = 0; i < _inputValues.PopulationSize; i++) { var randomIndividual = BinaryStringHelper.GenerateRandomIndividual(IndividualLength); TryAddReductToCheckedReductsList(randomIndividual); ActualPopulation.Individuals.Add(CheckedReducts.FirstOrDefault(r => r.Individual == randomIndividual)); } }
public override void Calculate() { CalculateApproximationForAllAttributes(); for (var i = 1; i < _numberOfSolutions; i++) { var individual = BinaryStringHelper.ConvertIntToBinaryString(i, IndividualLength); var reduct = new Reduct(individual, ClusteredDataObjects); if (ShouldChangeBestSolution(reduct)) { BestSolution = reduct; } } }
private void GenerateNewSolutionFromNeighbors(Reduct eliteReduct, int neighborhoodSize, int neighborhoodSteps) { var neighborhood = new List <Reduct>(); for (var i = 0; i < neighborhoodSize; i++) { var neighborIndividual = string.Empty; for (var j = 0; j < neighborhoodSteps; j++) { neighborIndividual = BinaryStringHelper.GenerateNeighborSolution(eliteReduct.Individual); } TryAddReductToCheckedReductsList(neighborIndividual); neighborhood.Add(CheckedReducts.FirstOrDefault(r => r.Individual == neighborIndividual)); } ActualPopulation.Individuals.Add(neighborhood.OrderByDescending(r => r.Approximation).ThenBy(i => i.Subset.Count).FirstOrDefault()); }
protected void CalculateApproximationForAllAttributes() { var individual = BinaryStringHelper.GenerateIndividualWithAllAttributes(IndividualLength); AllAttributesSolution = new Reduct(individual, ClusteredDataObjects); }