Example #1
0
 public Ant(int initialCity, Graph graph, PheromonMatrix pheromonMatrix, AcoProcessor.AcoParameters parameters)
 {
     _currentCity    = initialCity;
     _graph          = graph;
     _pheromonMatrix = pheromonMatrix;
     _parameters     = parameters;
 }
Example #2
0
        public static string ParamsToTable(ICollection <AcoProcessor.AcoParameters> paramList, ICollection <double> results)
        {
            // Draw labels
            string result = "\nalpha\tbeta\tro\ttMax\tResult\n";

            for (int i = 0; i < paramList.Count; i++)
            {
                AcoProcessor.AcoParameters param = paramList.ElementAt(i);
                result += param.alpha + "\t" + param.beta + "\t" + param.p + "\t" + param.tMax + "\t";
                if (results != null)
                {
                    result += results.ElementAt(i).ToString("F");
                }
                result += '\n';
            }

            return(result);
        }
Example #3
0
        public AcoProcessor.AcoParameters[] Iterate(AcoProcessor.AcoParameters paramBase)
        {
            List <AcoProcessor.AcoParameters> result = new List <AcoProcessor.AcoParameters>();

            double alpha     = _aMin;
            double alphaStep = (_aMax - _aMin) / _iterations;

            double roStep = (_roMax - _roMin) / _iterations;

            for (int i = 0; i < _iterations; i++)
            {
                /*double beta = _c - alpha;
                 * double ro = _roMin;*/
                double beta = _aMin;
                for (int m = 0; m < _iterations; m++)
                {
                    double ro = _roMin;
                    for (int j = 0; j < _iterations; j++)
                    {
                        for (int t = _tMin; t <= _tMax; t++)
                        {
                            AcoProcessor.AcoParameters iteration = paramBase;
                            iteration.alpha = alpha;
                            iteration.beta  = beta;
                            iteration.p     = ro;
                            iteration.tMax  = t;

                            result.Add(iteration);
                        }
                        ro += roStep;
                    }
                    beta += alphaStep;
                }
                alpha += alphaStep;
                if (alpha > _aMax)
                {
                    alpha = _aMax;
                }
            }

            return(result.ToArray());
        }