def work(self, belief): """Primary response function of HDC policy """ global_summary = SummaryMapping.globalSummary(belief, domainUtil=self.domainUtil) array_slot_summary = SummaryMapping.arraySlotSummary(belief, self.domainUtil) logger.debug(str(global_summary)) logger.debug('HDC policy: getGlobal') done, output = self._getGlobal(belief, global_summary) if not done: logger.debug('HDC policy: getConfirmSelect') done, output = self._getConfirmSelect(belief, array_slot_summary) if not done: logger.debug('HDC policy: getInform') inform_summary = [] for num_accepted in range(1, MAX_NUM_ACCEPTED+1): temp = SummaryMapping.actionSpecificInformSummary(belief, num_accepted, self.domainUtil) inform_summary.append(temp) done, output = self._getInform(belief, global_summary, inform_summary) if not done: logger.debug('HDC policy: getRequest') done, output = self._getRequest(belief, array_slot_summary) if not done: logger.warning("HDCPolicy couldn't find action: execute reqmore().") output = 'reqmore()' if output == 'badact()' or output == 'null()': logger.warning('HDCPolicy chose bad or null action') output = 'null()' if self.use_confreq: #TODO - known problem here if use_confreq is True (ie being used) FIXME output = DMUtils.add_venue_count(output, belief) return output
def getConfirm(self, belief, slot): """ """ array_slot_summary = SummaryMapping.arraySlotSummary(belief, self.domainUtil) summary = array_slot_summary[slot] (top_value, top_prob) = summary["TOPTWO"][0] (sec_value, sec_prob) = summary["TOPTWO"][1] if top_prob > 0: return True, 'confirm(%s="%s")' % (slot, top_value) return False, "null()"
def getRequest(self, belief, slot): """ """ array_slot_summary = SummaryMapping.arraySlotSummary(belief, self.domainUtil) summary = array_slot_summary[slot] (_, topprob) = summary["TOPTWO"][0] (_, secprob) = summary["TOPTWO"][1] # if topprob < 0.4 and secprob<= 0.3: return True, "request(%s)" % slot
def getConfirm(self, belief, slot): ''' ''' array_slot_summary = SummaryMapping.arraySlotSummary( belief, self.domainUtil) summary = array_slot_summary[slot] (top_value, top_prob) = summary['TOPTWO'][0] (sec_value, sec_prob) = summary['TOPTWO'][1] if top_prob > 0: return True, 'confirm(%s="%s")' % (slot, top_value) return False, 'null()'
def getRequest(self, belief, slot): ''' ''' array_slot_summary = SummaryMapping.arraySlotSummary( belief, self.domainUtil) summary = array_slot_summary[slot] (_, topprob) = summary['TOPTWO'][0] (_, secprob) = summary['TOPTWO'][1] #if topprob < 0.4 and secprob<= 0.3: return True, 'request(%s)' % slot
def work(self, belief): """Primary response function of HDC policy """ global_summary = SummaryMapping.globalSummary( belief, domainUtil=self.domainUtil) array_slot_summary = SummaryMapping.arraySlotSummary( belief, self.domainUtil) logger.debug(str(global_summary)) logger.debug('HDC policy: getGlobal') done, output = self._getGlobal(belief, global_summary) if not done: logger.debug('HDC policy: getConfirmSelect') done, output = self._getConfirmSelect(belief, array_slot_summary) if not done: logger.debug('HDC policy: getInform') inform_summary = [] for num_accepted in range(1, MAX_NUM_ACCEPTED + 1): temp = SummaryMapping.actionSpecificInformSummary( belief, num_accepted, self.domainUtil) inform_summary.append(temp) done, output = self._getInform(belief, global_summary, inform_summary) if not done: logger.debug('HDC policy: getRequest') done, output = self._getRequest(belief, array_slot_summary) if not done: logger.warning( "HDCPolicy couldn't find action: execute reqmore().") output = 'reqmore()' if output == 'badact()' or output == 'null()': logger.warning('HDCPolicy chose bad or null action') output = 'null()' if self.use_confreq: #TODO - known problem here if use_confreq is True (ie being used) FIXME output = DMUtils.add_venue_count(output, belief) return output