Exemplo n.º 1
0
class ControloBDIPlan(ControloBDI):
    def __init__(self, mec_rac):
        super(ControloBDIPlan, self).__init__()
        self.iniciar_crencas()
        self.mec_rac = mec_rac
     
    def iniciar_crencas(self):
        self.crencas = Crencas()

    def actualizar_crencas(self, per):
        self.crencas.actualizar(per)

    def reconsiderar(self):
        return not self.intencoes or \
                    not self.plano or \
                    self.crencas.elemento(self.intencoes[0]) != 'alvo'

    def planear(self):
        self.plano = self.mec_rac.planear(self.crencas,
                                          self.crencas.estado_agente(),
                                          self.intencoes[0])
     
    #produz os desejos dos agentes
    def gerar_opcoes(self):
        #desembrulhar os planos aqui e gerando os desejos
        self.desejos = self.crencas.estados('alvo')
        
    def seleccionar_opcoes(self):
        if self.desejos:
            estado_actual = self.crencas.estado_agente()
            criterio_seleccao = lambda desejo: psa.util.dist(estado_actual, desejo)
            self.intencoes = sorted(self.desejos, key=criterio_seleccao)
        else:
            self.intencoes = None
        
    def executar_plano(self):
        if self.plano:
            operador = self.plano.pop(0)
            return psa.actuador.MOVER(operador.direccao)
Exemplo n.º 2
0
 def iniciar_crencas(self):
     self.crencas = Crencas()