public bool AdjustProbVariablesDuringPlanning(int bufferedInteractionsCount) { bool regenerate = false; //1. About bot //exclude this action because there are no items for it if (ProbVariables.Bot.PrSharePureFactInfoAboutBot[(int)PV.Current].Value != 0 && KorraModelHelper.GetItemsLeftForSubCategory(ActionsEnum.SharePureFactInfoAboutBot, ItemProviders) == 0) { //adjust pure facts probabilities: disable AboutBot and boost AboutUser ProbVariables.Bot.PrSharePureFactInfoAboutBot[(int)PV.Current] = Prob(0); SharedHelper.LogWarning("Disabled all pure facts about bot, because there were no items."); //we re-inforce AboutUser so that it is stronger than Suggestion action if (ProbVariables.Bot.PrAskPureFactQuestionAboutUser[(int)PV.Current].Value > 0) { ProbVariables.Bot.PrAskPureFactQuestionAboutUser[(int)PV.Current] = ProbVariables.Bot.PrAskPureFactQuestionAboutUser[(int)PV.Increased]; } regenerate = true; } //2. About User //exclude this action because there are no items for it if (ProbVariables.Bot.PrAskPureFactQuestionAboutUser[(int)PV.Current].Value != 0 && KorraModelHelper.GetItemsLeftForSubCategory(ActionsEnum.AskPureFactQuestionAboutUser, ItemProviders) == 0) { //adjust pure facts probabilities: disable AboutUser and boost AboutBot ProbVariables.Bot.PrAskPureFactQuestionAboutUser[(int)PV.Current] = Prob(0); SharedHelper.Log("Disabled all pure facts about user, because there were no items."); //we re-inforce AboutBot so that it is stronger than Suggestion action if (ProbVariables.Bot.PrSharePureFactInfoAboutBot[(int)PV.Current].Value > 0) { ProbVariables.Bot.PrSharePureFactInfoAboutBot[(int)PV.Current] = ProbVariables.Bot.PrSharePureFactInfoAboutBot[(int)PV.Increased]; } regenerate = true; } //3. Suggestions //if there are no Pure or Uncertain facts left then we boost suggestions bool noFactsLeft = (ProbVariables.Bot.PrAskPureFactQuestionAboutUser[(int)PV.Current].Value == 0 && ProbVariables.Bot.PrSharePureFactInfoAboutBot[(int)PV.Current].Value == 0); if (noFactsLeft && ProbVariables.Bot.PrMakeSuggestion[(int)PV.Current] != ProbVariables.Bot.PrMakeSuggestion[(int)PV.Default]) { ProbVariables.Bot.PrMakeSuggestion[(int)PV.Current] = ProbVariables.Bot.PrMakeSuggestion[(int)PV.Default]; SharedHelper.Log("All pure facts used. PrMakeSuggestion changed to: " + ProbVariables.Bot.PrMakeSuggestion[(int)PV.Current]); } //Keep suggestions decreased if there are more pure facts if (!noFactsLeft && ProbVariables.Bot.PrMakeSuggestion[(int)PV.Current] != ProbVariables.Bot.PrMakeSuggestion[(int)PV.Descreased]) { SharedHelper.Log("PrMakeSuggestion changed decreased."); ProbVariables.Bot.PrMakeSuggestion[(int)PV.Current] = ProbVariables.Bot.PrMakeSuggestion[(int)PV.Descreased]; } return(regenerate); }