示例#1
0
 public KubismeBot(MT19937Generator rnd)
 {
     DecisionMaker = new NodeDecisionMaker(rnd)
     {
         Evaluator         = new Evaluator(),
         Generator         = new MoveGenerator(),
         MaximumDepth      = 10,
         MaximumDuration   = TimeSpan.FromMilliseconds(700),
         DefaultEvaluation = EvaluatorParameters.GetDefault(),
     };
 }
示例#2
0
        /// <summary>Gets the default parameters.</summary>
        /// <remarks>
        /// Input for the genetics algorithm and used by the 'real' bot.
        /// </remarks>
        public static EvaluatorParameters GetDefault()
        {
            var pars = new EvaluatorParameters()
                       // Elo: 1620, Runs:  1844 (54.8%, PT: 0.654, #: 52.8, T1: 5.04%, T2: 19.85%, I4: 0.68%, CL: 0.16%), ID: 8731, Parent: 8703, Gen: 78
            {
                //PointsCalc = new[] { 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35 },
                //ComboCalc = new[] { -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, -13, -13, -12, -12, -11, -11, -11, -10, -10, -9, -9 },
                //HolesReachableCalc = new[] { -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26 },
                //HolesUnreachableCalc = new[] { -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38 },
                //UnreachableRowsCalc = new[] { -295, -296, -296, -296, -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, -298, -298, -298, -298, -298, -298, -298, -298 },
                //TSpinSingle0PotentialCalc = new[] { 54, 53, 53, 52, 52, 52, 51, 51, 51, 50, 50, 49, 49, 49, 48, 48, 48, 47, 47, 47, 46, 46 },
                //TSpinSingle1PotentialCalc = new[] { -49, -49, -49, -49, -49, -49, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -47, -47, -47, -47, -47, -47 },
                //TSpinDoublePotentialCalc = new[] { -4, -1, 3, 8, 14, 22, 30, 40, 51, 63, 76, 89, 104, 120, 137, 154, 173, 192, 213, 234, 256, 279 },
                //TDoubleClearPotentialCalc = new[] { -2, -1, 1, 3, 6, 10, 14, 19, 24, 30, 37, 44, 52, 60, 69, 79, 89, 100, 111, 123, 136, 149 },
                //EmptyRowsCalc = new[] { 60, 91, 113, 131, 146, 160, 172, 183, 193, 202, 211, 220, 228, 235, 242, 249, 256, 263, 269, 275, 281, 286 },
                //SingleEmptiesCalc = new[] { 0, -1, -10, -51, -132, -750 },
                //SkipsCalc = new[] { 26, 27, 28, 28, 29, 29, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38 },
                //PerfectClearPotentialCalc = new[] { 61, 61, 61, 61, 61, 61, 61, 61, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 },
                SingleEmpties         = new[] { -1, -1, -5, -17, -33, -150 },
                SingleGroupBonus      = new[] { 9, 10, 18, 17 },
                Groups                = new[] { 176, 9, -12, -39, -42, -50 },
                Points                = new ParamCurve(0.0944685986265548, 0.99900740309998, 33),
                Combo                 = new ParamCurve(0.8414358782582, 0.836691961251202, -20),
                HolesReachable        = new ParamCurve(0.0124674282968008, 0.659975231438876, -26),
                HolesUnreachable      = new ParamCurve(-1.38468137569726, -0.0141344600357108, -37),
                UnreachableRows       = new ParamCurve(-10.2020491494797, 0.0755151487886917, -285),
                TSpinSingle0Potential = new ParamCurve(-0.410325448215007, 0.965253904554995, 54),
                TSpinSingle1Potential = new ParamCurve(0.503174321260303, 0.567334262095394, -50),
                TSpinDoublePotential  = new ParamCurve(1.0355431213975, 1.81606172358361, -5),
                TDoubleClearPotential = new ParamCurve(0.341211244370789, 1.97129311514329, -2),
                EmptyRows             = new ParamCurve(107.86466049695, 0.365828333422542, -48),
                Skips                 = new ParamCurve(1.04878548439592, 0.812320481054486, 25),
                PerfectClearPotential = new ParamCurve(-0.163741579931229, 0.514722767565401, 61),
            };

            return(pars.Calc());
        }
		/// <summary>Gets the default parameters.</summary>
		/// <remarks>
		/// Input for the genetics algorithm and used by the 'real' bot.
		/// </remarks>
		public static EvaluatorParameters GetDefault()
		{
			var pars = new EvaluatorParameters()
			// Elo: 1620, Runs:  1844 (54.8%, PT: 0.654, #: 52.8, T1: 5.04%, T2: 19.85%, I4: 0.68%, CL: 0.16%), ID: 8731, Parent: 8703, Gen: 78
			{
				//PointsCalc = new[] { 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35 },
				//ComboCalc = new[] { -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, -13, -13, -12, -12, -11, -11, -11, -10, -10, -9, -9 },
				//HolesReachableCalc = new[] { -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26 },
				//HolesUnreachableCalc = new[] { -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38 },
				//UnreachableRowsCalc = new[] { -295, -296, -296, -296, -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, -298, -298, -298, -298, -298, -298, -298, -298 },
				//TSpinSingle0PotentialCalc = new[] { 54, 53, 53, 52, 52, 52, 51, 51, 51, 50, 50, 49, 49, 49, 48, 48, 48, 47, 47, 47, 46, 46 },
				//TSpinSingle1PotentialCalc = new[] { -49, -49, -49, -49, -49, -49, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -47, -47, -47, -47, -47, -47 },
				//TSpinDoublePotentialCalc = new[] { -4, -1, 3, 8, 14, 22, 30, 40, 51, 63, 76, 89, 104, 120, 137, 154, 173, 192, 213, 234, 256, 279 },
				//TDoubleClearPotentialCalc = new[] { -2, -1, 1, 3, 6, 10, 14, 19, 24, 30, 37, 44, 52, 60, 69, 79, 89, 100, 111, 123, 136, 149 },
				//EmptyRowsCalc = new[] { 60, 91, 113, 131, 146, 160, 172, 183, 193, 202, 211, 220, 228, 235, 242, 249, 256, 263, 269, 275, 281, 286 },
				//SingleEmptiesCalc = new[] { 0, -1, -10, -51, -132, -750 },
				//SkipsCalc = new[] { 26, 27, 28, 28, 29, 29, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38 },
				//PerfectClearPotentialCalc = new[] { 61, 61, 61, 61, 61, 61, 61, 61, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 },
				SingleEmpties = new[] { -1, -1, -5, -17, -33, -150 },
				SingleGroupBonus = new[] { 9, 10, 18, 17 },
				Groups = new[] { 176, 9, -12, -39, -42, -50 },
				Points = new ParamCurve(0.0944685986265548, 0.99900740309998, 33),
				Combo = new ParamCurve(0.8414358782582, 0.836691961251202, -20),
				HolesReachable = new ParamCurve(0.0124674282968008, 0.659975231438876, -26),
				HolesUnreachable = new ParamCurve(-1.38468137569726, -0.0141344600357108, -37),
				UnreachableRows = new ParamCurve(-10.2020491494797, 0.0755151487886917, -285),
				TSpinSingle0Potential = new ParamCurve(-0.410325448215007, 0.965253904554995, 54),
				TSpinSingle1Potential = new ParamCurve(0.503174321260303, 0.567334262095394, -50),
				TSpinDoublePotential = new ParamCurve(1.0355431213975, 1.81606172358361, -5),
				TDoubleClearPotential = new ParamCurve(0.341211244370789, 1.97129311514329, -2),
				EmptyRows = new ParamCurve(107.86466049695, 0.365828333422542, -48),
				Skips = new ParamCurve(1.04878548439592, 0.812320481054486, 25),
				PerfectClearPotential = new ParamCurve(-0.163741579931229, 0.514722767565401, 61),
			};
			return pars.Calc();
		}