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
Ejemplo n.º 6
0
    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