private async Task RankWithNoOptions(PersonalizerClient client) { IList <object> contextFeatures = new List <object>() { new { Features = new { day = "tuesday", time = "night", weather = "rainy" } }, new { Features = new { userId = "1234", payingUser = true, favoriteGenre = "documentary", hoursOnSite = 0.12, lastwatchedType = "movie" } } }; IList <PersonalizerRankableAction> actions = new List <PersonalizerRankableAction>(); actions.Add( new PersonalizerRankableAction( id: "Person1", features: new List <object>() { new { videoType = "documentary", videoLength = 35, director = "CarlSagan" }, new { mostWatchedByAge = "30-35" } } )); actions.Add( new PersonalizerRankableAction( id: "Person2", features: new List <object>() { new { videoType = "documentary", videoLength = 35, director = "CarlSagan" }, new { mostWatchedByAge = "40-45" } } )); // Action PersonalizerRankResult response = await client.RankAsync(actions, contextFeatures); Assert.AreEqual(actions.Count, response.Ranking.Count); }
public void GenerateRankResultTest() { List <PersonalizerRankableAction> originalActions = GetActions(); List <PersonalizerRankableAction> rankableActions = new List <PersonalizerRankableAction>(); List <PersonalizerRankableAction> excludedActions = new List <PersonalizerRankableAction>(); rankableActions.Add(originalActions[1]); rankableActions.Add(originalActions[2]); rankableActions.Add(originalActions[3]); excludedActions.Add(originalActions[0]); List <ActionProbabilityWrapper> rankedActions = new List <ActionProbabilityWrapper> { new ActionProbabilityWrapperForTest(0, 0.7f), new ActionProbabilityWrapperForTest(1, 0.2f), new ActionProbabilityWrapperForTest(2, 0.1f) }; RankingResponseWrapper responseWrapper = new RankingResponseWrapperForTest(rankedActions); string eventId = "testEventId"; PersonalizerRankResult rankResponse = RlObjectConverter.GenerateRankResult(originalActions, rankableActions, excludedActions, responseWrapper, eventId); Assert.AreEqual("action1", rankResponse.RewardActionId); Assert.AreEqual(originalActions.Count, rankResponse.Ranking.Count); for (int i = 0; i < rankResponse.Ranking.Count; i++) { Assert.AreEqual(originalActions[i].Id, rankResponse.Ranking[i].Id); } }
public async Task RankNullParameters() { PersonalizerClient client = GetPersonalizerClient(); IList <PersonalizerRankableAction> actions = new List <PersonalizerRankableAction>(); actions.Add (new PersonalizerRankableAction( id: "Person", features: new List <object>() { new { videoType = "documentary", videoLength = 35, director = "CarlSagan" }, new { mostWatchedByAge = "30-35" } } )); var request = new PersonalizerRankOptions(actions); // Action PersonalizerRankResult response = await client.RankAsync(request); // Assert Assert.AreEqual(actions.Count, response.Ranking.Count); for (int i = 0; i < response.Ranking.Count; i++) { Assert.AreEqual(actions[i].Id, response.Ranking[i].Id); } }
public async Task RankServerFeatures() { PersonalizerClient client = GetPersonalizerClient(); IList <object> contextFeatures = new List <object>() { new { Features = new { day = "tuesday", time = "night", weather = "rainy" } }, new { Features = new { userId = "1234", payingUser = true, favoriteGenre = "documentary", hoursOnSite = 0.12, lastwatchedType = "movie" } } }; IList <PersonalizerRankableAction> actions = new List <PersonalizerRankableAction>(); actions.Add( new PersonalizerRankableAction( id: "Person1", features: new List <object>() { new { videoType = "documentary", videoLength = 35, director = "CarlSagan" }, new { mostWatchedByAge = "30-35" } } )); actions.Add( new PersonalizerRankableAction( id: "Person2", features: new List <object>() { new { videoType = "documentary", videoLength = 35, director = "CarlSagan" }, new { mostWatchedByAge = "40-45" } } )); IList <string> excludeActions = new List <string> { "Person1" }; string eventId = "123456789"; var request = new PersonalizerRankOptions(actions, contextFeatures, excludeActions, eventId); // Action PersonalizerRankResult response = await client.RankAsync(request); // Assert Assert.AreEqual(eventId, response.EventId); Assert.AreEqual(actions.Count, response.Ranking.Count); for (int i = 0; i < response.Ranking.Count; i++) { Assert.AreEqual(actions[i].Id, response.Ranking[i].Id); } }
// </classVariables> // <mainLoop> static void Main(string[] args) { int iteration = 1; bool runLoop = true; IList <PersonalizerRankableAction> actions = GetActions(); PersonalizerClient client = InitializePersonalizerClient(new Uri(ServiceEndpoint)); do { Console.WriteLine("\nIteration: " + iteration++); string timeOfDayFeature = GetUsersTimeOfDay(); string tasteFeature = GetUsersTastePreference(); IList <object> currentContext = new List <object>() { new { time = timeOfDayFeature }, new { taste = tasteFeature } }; IList <string> excludeActions = new List <string> { "juice" }; string eventId = Guid.NewGuid().ToString(); var rankOptions = new PersonalizerRankOptions(actions, currentContext, excludeActions, eventId); PersonalizerRankResult result = client.Rank(rankOptions); Console.WriteLine("\nPersonalizer service thinks you would like to have: " + result.RewardActionId + ". Is this correct? (y/n)"); float reward = 0.0f; string answer = GetKey(); if (answer == "Y") { reward = 1f; Console.WriteLine("\nGreat! Enjoy your food."); } else if (answer == "N") { reward = 0f; Console.WriteLine("\nYou didn't like the recommended food choice."); } else { Console.WriteLine("\nEntered choice is invalid. Service assumes that you didn't like the recommended food choice."); } Console.WriteLine("\nPersonalizer service ranked the actions with the probabilities as below:"); foreach (var rankedResponse in result.Ranking) { Console.WriteLine(rankedResponse.Id + " " + rankedResponse.Probability); } client.Reward(result.EventId, reward); Console.WriteLine("\nPress q to break, any other key to continue:"); runLoop = !(GetKey() == "Q"); } while (runLoop); }