private void select()
        {
            //Reload the world. Update StartEndPairs
            int selection = MapSelect.SelectedIndex;

            if (selection == -1)
            {
                return;
            }
            GridHelper.readInputs(selection, mvm.world, mvm.startPairs, mvm.endPairs, mvm.hardPairs);
            //Visualize the world.
            Visualize();
            mvm.RefreshPairs();
            //Recalculate Algorithm
            float wght;

            if (!float.TryParse(Weight.Text, out wght))
            {
                wght = 1;
            }
            search    = new Naiive(mvm.world);
            seqsearch = new Sequential(mvm.world);
            intsearch = new Integrated(mvm.world);
            //bool result = search.hSearch(Heuristic.SelectedIndex, Algo.SelectedIndex, wght, mvm.startPairs[0, 0], mvm.startPairs[0, 1], mvm.endPairs[0, 0], mvm.endPairs[0, 1]);
        }
        private static void threadbench(int m)
        {
            string        filename = $"C:\\Users\\Public\\Gridworld_Heuristics\\testresults_world{m}_{DateTime.Now.ToFileTime()}";
            MainViewModel benchvm  = new MainViewModel();
            float         w1       = 1;
            float         w2       = 1;

            GridHelper.readInputs(m, benchvm.world, benchvm.startPairs, benchvm.endPairs, benchvm.hardPairs);
            Naiive     searchLocal    = new Naiive(benchvm.world);
            Sequential seqsearchLocal = new Sequential(benchvm.world);
            Integrated intSearchLocal = new Integrated(benchvm.world);

            for (int j = 0; j < 5; j++)     //Startend pairs
            {
                for (int k = 0; k < 5; k++) //Algos
                {
                    if (k < 2)
                    {
                        for (int f = 0; f < 5; f++) // Heuristics
                        {
                            searchLocal.initAttr(f, k, w1, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                 benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                            searchLocal.hSearch();
                            snapshot(searchLocal, filename, m, j, k, f, w1, w2);
                            if (k == 1)
                            {//Weighted a*
                                w1 = 1.25f;
                                searchLocal.initAttr(f, k, w1, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                     benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                                searchLocal.hSearch();
                                snapshot(searchLocal, filename, m, j, k, f, w1, w2);
                                w1 = 2f;
                                searchLocal.initAttr(f, k, w1, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                     benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                                searchLocal.hSearch();
                                snapshot(searchLocal, filename, m, j, k, f, w1, w2);
                            }
                        }
                    }
                    if (k == 2)
                    {
                        searchLocal.initAttr(-1, k, w1, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                             benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal.hSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);
                    }
                    if (k == 3)
                    {
                        w1 = 1.25f;
                        w2 = 1.25f;
                        seqsearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = seqsearchLocal.seqSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);

                        w2 = 2f;
                        seqsearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = seqsearchLocal.seqSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);

                        w1 = 2f;
                        seqsearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = seqsearchLocal.seqSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);

                        w2 = 1.25f;
                        seqsearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = seqsearchLocal.seqSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);
                    }
                    else
                    {
                        w1 = 1.25f;
                        w2 = 1.25f;
                        intSearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = intSearchLocal.intSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);
                        w2 = 2f;
                        intSearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = intSearchLocal.intSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);
                        w1 = 2f;
                        intSearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = intSearchLocal.intSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);
                        w2 = 1.25f;
                        intSearchLocal.initAttr(w1, w2, benchvm.startPairs[j, 0], benchvm.startPairs[j, 1],
                                                benchvm.endPairs[j, 0], benchvm.endPairs[j, 1]);
                        searchLocal = intSearchLocal.intSearch();
                        snapshot(searchLocal, filename, m, j, k, -1, w1, w2);
                    }
                }
            }
        }