public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { if (bindingContext.ModelType != typeof(IModelFieldSelector <Press>)) { return(null); } var keyStr = bindingContext.ValueProvider.GetValue("key"); if (keyStr == null) { return(null); } string[] keys = ((string)keyStr.ConvertTo(typeof(string))).Split(','); if (keys.Count() <= 0) { return(null); } var selector = new PressSelector(); foreach (var key in keys) { var keyData = key.Split('-'); if (keyData.Count() < 2) { continue; } var field = keyData[0]; var value = keyData[1]; switch (field) { case "name": selector.FieldSelectors.Add(new PressNameSelector(value)); break; } } return(selector); }
private void RunGA() { _projMgr.ModelRunning = true; ResetGraphs(); ResetOutputFields(); double crossoverRate = Convert.ToDouble(txtCrossoverRate.Text); double mutationRate = Convert.ToDouble(txtMutRate.Text); int numGen = Convert.ToInt32(txtNumGen.Text); int popSize = Convert.ToInt32(txtPopSize.Text); FitnessCriteria fitnessCriteria = GetFitnessCriteria(); _maxIndVars = Convert.ToInt32(txtMaxVars.Text); if (chkSeed.Checked) { int seed = Convert.ToInt32(txtSeed.Text); RandomNumbers.SetRandomSeed(seed); } else RandomNumbers.SetRandomSeed(); _maxVIF = Convert.ToInt32(txtMaxVIF.Text); List<IIndividual> initPop = new List<IIndividual>(popSize); for (int i = 0; i < popSize; i++) { initPop.Add(new MLRIndividual(_maxIndVars, _totVar, fitnessCriteria, _maxVIF, _decisionThreshold, _mandateThreshold)); //initPop.Add(new MLRIndividual(_maxIndVars, _totVar, fitnessCriteria, _maxVIF)); } Population population = new Population(initPop); population.CrossoverMethod = new MLROnePointCrossover(crossoverRate); if (fitnessCriteria == FitnessCriteria.Akaike) { population.Comparer = new AscendSort(); AICSelector aicSelector = new AICSelector(); aicSelector.Comparer = population.Comparer; population.Selector = aicSelector; } else if (fitnessCriteria == FitnessCriteria.AICC) { population.Comparer = new AscendSort(); AICCSelector aiccSelector = new AICCSelector(); aiccSelector.Comparer = population.Comparer; population.Selector = aiccSelector; } else if (fitnessCriteria == FitnessCriteria.BIC) { population.Comparer = new AscendSort(); BICSelector bicSelector = new BICSelector(); bicSelector.Comparer = population.Comparer; population.Selector = bicSelector; } else if (fitnessCriteria == FitnessCriteria.Press) { population.Comparer = new AscendSort(); PressSelector pressSelector = new PressSelector(); pressSelector.Comparer = population.Comparer; population.Selector = pressSelector; } else if (fitnessCriteria == FitnessCriteria.AdjustedR2) { population.Comparer = new DescendSort(); AdjR2Selector adjR2Selector = new AdjR2Selector(); adjR2Selector.Comparer = population.Comparer; population.Selector = adjR2Selector; } else if (fitnessCriteria == FitnessCriteria.R2) { population.Comparer = new DescendSort(); R2Selector r2Selector = new R2Selector(); r2Selector.Comparer = population.Comparer; population.Selector = r2Selector; } else if (fitnessCriteria == FitnessCriteria.RMSE) { population.Comparer = new AscendSort(); RMSESelector rmseSelector = new RMSESelector(); rmseSelector.Comparer = population.Comparer; population.Selector = rmseSelector; } else if (fitnessCriteria == FitnessCriteria.Sensitivity) { population.Comparer = new DescendSort(); SensitivitySelector sensitivitySelector = new SensitivitySelector(); sensitivitySelector.Comparer = population.Comparer; population.Selector = sensitivitySelector; } else if (fitnessCriteria == FitnessCriteria.Specificity) { population.Comparer = new DescendSort(); SpecificitySelector specificitySelector = new SpecificitySelector(); specificitySelector.Comparer = population.Comparer; population.Selector = specificitySelector; } else if (fitnessCriteria == FitnessCriteria.Accuracy) { population.Comparer = new DescendSort(); AccuracySelector accuracySelector = new AccuracySelector(); accuracySelector.Comparer = population.Comparer; population.Selector = accuracySelector; } population.ChromosomeComparer = new CompareChromosomes(); population.Initialize(); population.Mutator = new MLRMutator(mutationRate, _totVar); //GALib.GAManager ga = new GALib.GAManager(); _gaManager = new GALib.GAManager(); _gaManager.Init(population); _gaManager.NumberOfGenerations = numGen; _gaManager.GAProgress += new GAManager.GAProgressHandler(GAUpdate); _gaManager.GAComplete += new GAManager.GACompleteHandler(GAComplete); GAManager ga = new GAManager(); _runThread = new Thread(_gaManager.Run); _runThread.Start(); //list = ga.Run(population); }