Example #1
0
        public override Structuring BuildStructuring()
        {
            try
            {
                int _current = 1;
                int _max     = IterationsCount;
                if (IContainerProgressBar != null)
                {
                    IContainerProgressBar.ResetProgressBar(1, _max, true);
                    IContainerProgressBar.UpdateProgressBar(1, "Running HCE algorithm...", true);
                }

                int n = StructuringsCount * (StructuringsCount - 1) / 2;

                HeapArrayMax <Pair> _pairs = new HeapArrayMax <Pair>(n);
                for (int i = 0; i < StructuringsCount; i++)
                {
                    for (int j = i + 1; j < StructuringsCount; j++)
                    {
                        Pair _temp = Fitness(Structurings[i], Structurings[j]);

                        _pairs.Add(_temp);
                    }
                }

                for (int i = 0; i < IterationsCount; i++)
                {
                    Pair parents = _pairs.First;
                    _pairs.RemoveFirst();

                    Crossover(parents);

                    //calcular nuevo fitness//////////////***********//////////////
                    _pairs.Add(Fitness(parents.P1, parents.P2));

                    if (IContainerProgressBar != null)
                    {
                        IContainerProgressBar.UpdateProgressBar(_current++, "Running HCE algorithm...", false);
                    }
                }

                if (IContainerProgressBar != null)
                {
                    IContainerProgressBar.FinishProgressBar();
                }

                return(_pairs.First.P2);
            }
            catch
            {
                if (IContainerProgressBar != null)
                {
                    IContainerProgressBar.ShowError("Error occurred in HCE algorithm.");
                }
                return(null);
            }
        }
        public override Structuring BuildStructuring()
        {
            try
            {
                int _current = 1;
                int _max = IterationsCount;
                if (IContainerProgressBar != null)
                {
                    IContainerProgressBar.ResetProgressBar(1, _max, true);
                    IContainerProgressBar.UpdateProgressBar(1, "Running HCE algorithm...", true);
                }

                int n = StructuringsCount * (StructuringsCount - 1) / 2;

                HeapArrayMax<Pair> _pairs = new HeapArrayMax<Pair>(n);
                for (int i = 0; i < StructuringsCount; i++)
                {
                    for (int j = i + 1; j < StructuringsCount; j++)
                    {
                        Pair _temp = Fitness(Structurings[i], Structurings[j]);                       

                        _pairs.Add(_temp);
                    }
                }

                for (int i = 0; i < IterationsCount; i++)
                {
                    Pair parents = _pairs.First;
                    _pairs.RemoveFirst();                    

                    Crossover(parents);

                    //calcular nuevo fitness//////////////***********//////////////
                    _pairs.Add(Fitness(parents.P1, parents.P2));

                    if (IContainerProgressBar != null)
                        IContainerProgressBar.UpdateProgressBar(_current++, "Running HCE algorithm...", false);

                }

                if (IContainerProgressBar != null)
                    IContainerProgressBar.FinishProgressBar();
                
                return _pairs.First.P2;
            }
            catch
            {
                if (IContainerProgressBar != null)
                    IContainerProgressBar.ShowError("Error occurred in HCE algorithm.");
                return null;
            }
        }