示例#1
0
        public void CanUseDecisionProcess()
        {
            var container = CreateContainer();
            var log       = container.GetInstance <ILog>();

            var item         = "Gold accessory";
            var targetGrade  = 1;
            var failstack    = 0;
            var initialState = new EnhancementState(failstack);
            var process      = new EnhancementProcess(initialState)
            {
                Rewards = new List <IActionReward <EnhancementState> > {
                    new NumberOfAttemptsReward(targetGrade)
                }
            };
            var policy = new JustEnhancePolicy(item, targetGrade)
            {
                TrackNumberOfAttempts = true
            };

            var value = process.GetOptimalValue(policy);

            log.Info($"Optimal value : {value}");
            Assert.Equal(3.1213873601591193, value);
        }
示例#2
0
        public void CanCalculateSuccessProbability()
        {
            var container = CreateContainer();
            var log       = container.GetInstance <ILog>();

            var item         = "Silver Embroidered";
            var targetGrade  = 2;
            var failstack    = 0;
            var initialState = new EnhancementState(failstack)
            {
                Items = new []
                {
                    50,
                    1,
                    0,
                    0,
                    0,
                },
            };
            var process = new EnhancementProcess(initialState)
            {
                Rewards = new List <IActionReward <EnhancementState> > {
                    new SuccessProbabilityReward(targetGrade)
                }
            };
            var policy = new JustEnhancePolicy(item, targetGrade);

            var value = process.GetOptimalValue(policy);

            log.Info($"Enhancement probability : {value}");
            Assert.Equal(0.6391845543605477, value);
        }
示例#3
0
        public void CanGetExpectedNumberOfAttemptsViaProcess()
        {
            var container = CreateContainer();
            var log       = container.GetInstance <ILog>();

            var item         = "Silver Embroidered";
            var targetGrade  = 2;
            var failstack    = 36;
            var initialState = new EnhancementState(failstack);

            initialState.Items[targetGrade - 1] = int.MaxValue;
            var process = new EnhancementProcess(initialState)
            {
                Rewards = new List <IActionReward <EnhancementState> > {
                    new NumberOfAttemptsReward(targetGrade)
                }
            };
            var policy = new JustEnhancePolicy(item, targetGrade)
            {
                TrackNumberOfAttempts = true
            };

            var value = process.GetOptimalValue(policy);

            log.Info($"Optimal value : {value}");
            Assert.Equal(2.0855537713302703, value);
        }