コード例 #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
ファイル: Fitness.cs プロジェクト: vvancak/ai
 public void buildTree(List <int> permutation = null)
 {
     root            = TreeSolver.buildTree(inp, permutation);
     this.leafsCount = root.computeLeafs();
     minVal          = root.getMinimum();
     maxVal          = root.getMaximum();
     treeDepth       = root.getDepth();
 }
コード例 #3
0
ファイル: Fitness.cs プロジェクト: vvancak/ai
        public TreeVisualizer(TreeSolver s)
        {
            this.solver    = s;
            this.treePB    = s.treePictureBox;
            this.fitnessPB = s.fitnessPictureBox;

            this.width        = treePB.Width;
            this.height       = treePB.Height;
            this.treePB.Image = new Bitmap(width, height);
            gTree             = Graphics.FromImage(treePB.Image);

            this.fitnessPB.Image = new Bitmap(fitnessPB.Width, fitnessPB.Height);
            gFitness             = Graphics.FromImage(fitnessPB.Image);
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: vvancak/ai
        private void CreateTreeButton_Click(object sender, EventArgs e)
        {
            if (treeS == null || treeS.IsDisposed)
            {
                treeS = new TreeSolver(inp);
            }
            treeS.inp = inp;
            treeS.Show();
            treeS.buildTree();
            treeS.computeLeafs();
            Length_label.Text = treeS.leafsCount.ToString();
            TreeVisualizer tviz = new TreeVisualizer(treeS);

            tviz.draw(treeS.root, treeS.maxVal, treeS.minVal);
        }
コード例 #5
0
ファイル: TSPPreprocessor.cs プロジェクト: vvancak/ai
 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);
     }
 }