예제 #1
0
        /*
         * static void Main()
         * {
         *  runTests();
         * }
         */
        static void runTests()
        {
            List <TSPInput> inputs = new List <TSPInput>();

            for (int i = 5; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    inputs.Add(TSPGenerator.generateUniform(i));
                }
            }

            TSPPreprocessor p = new TSPPreprocessor();
            TreeEvaluator   e = new TreeEvaluator();

            Console.WriteLine("Number\tsize\tnormal\tbest\ttime (sec)");
            for (int i = 0; i < inputs.Count; i++)
            {
                Console.Write(i + "\t" + inputs[i].nodesCount + "\t");
                TreeNode root = TreeSolver.buildTree(inputs[i]);
                Console.Write(e.eval(root) + "\t");
                DateTime start = DateTime.Now;
                p.findBestPermutation(inputs[i]);
                DateTime end = DateTime.Now;
                Console.WriteLine(p.bestFitness + "\t" + (end - start).TotalSeconds);
            }
        }
예제 #2
0
 private void searchPermutations(List <int> available, List <int> permutation)
 {
     if (available.Count == 0)
     {
         root = TreeSolver.buildTree(inp, permutation);
         double val = evaluator.eval(root, permutation);
         if (val < bestFitness)
         {
             bestFitness = val;
             bestPermutation.Clear();
             bestPermutation.AddRange(permutation);
         }
         return;
     }
     for (int i = 0; i < available.Count; i++)
     {
         permutation.Add(available[i]);
         available.RemoveAt(i);
         searchPermutations(available, permutation);
         available.Insert(i, permutation[permutation.Count - 1]);
         permutation.RemoveAt(permutation.Count - 1);
     }
 }
예제 #3
0
파일: Fitness.cs 프로젝트: vvancak/ai
 private void evalButton_Click(object sender, EventArgs e)
 {
     valueLabel.Text = evaluator.eval(this.root).ToString();
 }