Example #1
0
        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);
        }
Example #2
0
        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);
        }