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)
def iniciar_crencas(self): self.crencas = Crencas()