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); }
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); }
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); }