public Features(IMultHeuristic multHeuristic, Func <double, double> responseFunc, Func <double, double> responseFuncInv)
        {
            if (Global.DOMAINTYPE != typeof(SlidingPuzzle))
            {
                throw new Exception();
            }

            this.numInputs       = multHeuristic.HArr.Length + 1;
            this.multHeuristic   = multHeuristic;
            this.responseFunc    = responseFunc;
            this.responseFuncInv = responseFuncInv;
        }
        public Features(IMultHeuristic multHeuristic, Func <double, double> responseFunc, Func <double, double> responseFuncInv)
        {
            if (Global.DOMAINTYPE != typeof(PancakePuzzle))
            {
                throw new Exception();
            }

            this.numInputs        = multHeuristic.HArr.Length + 2;
            this.multHeuristic    = multHeuristic;
            this.responseFunc     = responseFunc;
            this.responseFuncInv  = responseFuncInv;
            this.middleTokenIndex = Global.SIZE / 2;
        }
예제 #3
0
        static void Main(string[] args)
        {
            Control.UseNativeMKL();

            Console.WriteLine("start1");

            //PancakePuzzle.BuildPDBs.BuildPDBs24();

            //GenTest(null, 50,Global.MAXSTEPS);

            multHeuristic = null;

            representationSolve = new SlidingPuzzle.Representations.TwoDim(new Func <double, double>(x => x / 10), new Func <double, double>(x => x * 10));

            representationUncert = new SlidingPuzzle.Representations.TwoDim(null, null);


            for (int r = 1; r <= 5; r++)
            {
                {
                    List <Tuple <int, bool, int> > paramaters = new List <Tuple <int, bool, int> >();
                    paramaters.Add(new Tuple <int, bool, int>(1, true, 1));

                    foreach (var p in paramaters)
                    {
                        Train(r, Global.NITER, p.Item1, p.Item2, p.Item3, false);
                    }
                }



                {
                    int nnIndex = Global.NITER - 1;
                    List <Tuple <string, int, double?> > paramaters = new List <Tuple <string, int, double?> >();
                    paramaters.Add(new Tuple <string, int, double?>("1", nnIndex, null));


                    foreach (var p in paramaters)
                    {
                        TestAdmissibility(r, p.Item1, p.Item2, p.Item3);
                    }
                }



                {
                    List <Tuple <int, bool, int> > paramaters = new List <Tuple <int, bool, int> >();

                    paramaters.Add(new Tuple <int, bool, int>(2, true, 1));

                    foreach (var p in paramaters)
                    {
                        Train(r, Global.NITER, p.Item1, p.Item2, p.Item3, false);
                    }
                }



                {
                    int nnIndex = Global.NITER - 1;
                    List <Tuple <string, int, double?> > paramaters = new List <Tuple <string, int, double?> >();
                    paramaters.Add(new Tuple <string, int, double?>("2", nnIndex, 0.5));
                    paramaters.Add(new Tuple <string, int, double?>("2", nnIndex, 0.95));
                    paramaters.Add(new Tuple <string, int, double?>("2", nnIndex, 0.9));
                    paramaters.Add(new Tuple <string, int, double?>("2", nnIndex, 0.75));
                    paramaters.Add(new Tuple <string, int, double?>("2", nnIndex, 0.25));
                    paramaters.Add(new Tuple <string, int, double?>("2", nnIndex, 0.1));
                    paramaters.Add(new Tuple <string, int, double?>("2", nnIndex, 0.05));


                    foreach (var p in paramaters)
                    {
                        TestAdmissibility(r, p.Item1, p.Item2, p.Item3);
                    }
                }



                {
                    List <Tuple <int, bool, int> > paramaters = new List <Tuple <int, bool, int> >();
                    paramaters.Add(new Tuple <int, bool, int>(1, true, 1));
                    paramaters.Add(new Tuple <int, bool, int>(1, false, 1));
                    paramaters.Add(new Tuple <int, bool, int>(1, false, 2));
                    paramaters.Add(new Tuple <int, bool, int>(1, false, 4));
                    paramaters.Add(new Tuple <int, bool, int>(1, false, 6));
                    paramaters.Add(new Tuple <int, bool, int>(1, false, 8));
                    paramaters.Add(new Tuple <int, bool, int>(1, false, 10));

                    foreach (var p in paramaters)
                    {
                        Train(r, Global.NITER, p.Item1, p.Item2, p.Item3, true);
                    }
                }



                {
                    int numTasks = 1000;

                    int numIter = 5;

                    int nnIndex = Global.NITER - 1;

                    TestDomainData[][] testData = new TestDomainData[numIter][];

                    for (int i = 0; i < numIter; i++)
                    {
                        TestDomainData[] data = new TestDomainData[numTasks];

                        for (int j = 0; j < numTasks; j++)
                        {
                            data[j] = GenTest(null, 1, j + 1, false, false)[0];
                        }

                        testData[i] = data;
                    }

                    List <Tuple <string, int> > paramaters = new List <Tuple <string, int> >();
                    paramaters.Add(new Tuple <string, int>("1e", nnIndex));
                    paramaters.Add(new Tuple <string, int>("k1", nnIndex));
                    paramaters.Add(new Tuple <string, int>("k2", nnIndex));
                    paramaters.Add(new Tuple <string, int>("k4", nnIndex));
                    paramaters.Add(new Tuple <string, int>("k6", nnIndex));
                    paramaters.Add(new Tuple <string, int>("k8", nnIndex));
                    paramaters.Add(new Tuple <string, int>("k10", nnIndex));

                    foreach (var p in paramaters)
                    {
                        TestEfficiency(r, p.Item1, p.Item2, testData);
                    }
                }
            }


            Console.ReadLine();
        }
예제 #4
0
 public MaxHeuristic(IMultHeuristic multHeuristic)
 {
     this.multHeuristic = multHeuristic;
 }