/** * <summary> The execute method takes an {@link Experiment} and a {@link MultipleRun} as inputs. By selecting a candidateList from given * Experiment it tries to find a FeatureSubSet that gives best performance.</summary> * * <param name="multipleRun">{@link MultipleRun} type input.</param> * <param name="experiment"> {@link Experiment} type input.</param> * <returns>FeatureSubSet that gives best performance.</returns> */ public FeatureSubSet Execute(MultipleRun multipleRun, Experiment.Experiment experiment) { var processed = new HashSet <FeatureSubSet>(); var best = initialSubSet; processed.Add(best); var betterFound = true; ExperimentPerformance bestPerformance = null; if (best.Size() > 0) { bestPerformance = multipleRun.Execute(experiment.FeatureSelectedExperiment(best)); } while (betterFound) { betterFound = false; var candidateList = Operator(best, experiment.GetDataSet().GetDataDefinition().AttributeCount()); foreach (var candidateSubSet in candidateList) { if (!processed.Contains(candidateSubSet)) { if (candidateSubSet.Size() > 0) { var currentPerformance = multipleRun.Execute(experiment.FeatureSelectedExperiment(candidateSubSet)); if (bestPerformance == null || currentPerformance.IsBetter(bestPerformance)) { best = candidateSubSet; bestPerformance = currentPerformance; betterFound = true; } } processed.Add(candidateSubSet); } } } return(best); }
public ExGraph() { expe = new Experiment.Experiment(); InitializeComponent(); Sample1(); }