def __init__(self): self._rmax = 100 self._s = None self._a = None self._accoes = [Mover(ang, ang_abs=True) for ang in psa.dirmov()] self._mec_aprend = MecAprend(self._accoes)
def __init__(self, mecanismo_raciocinio): self._crencas = ModeloMundo() self._desejos = None #vai ser lista de posicoes self._intencoes = None #vai ser lista de posicoes self._capacidades = [ Mover(self._crencas, angulo) for angulo in psa.dirmov() ] self._mecanismo_raciocinio = mecanismo_raciocinio
def transicoes(self, estado): transicoes = [] for ang in psa.dirmov(): posn = psa.util.mover(estado, ang) elem = self.obter_elemento(posn) if elem and elem is not OBST: transicoes.append((posn,ang)) return transicoes
def esquema(self, crencas): if self._pre_condicoes(crencas): # vai esccolher uma casa vazia junto do grupo de bases bases = crencas.obter_chaves('base') entrada_bases= [] for base in bases: for movimento in dirmov(): nova_posicao = mover(base, movimento) if not crencas.obter_valor(nova_posicao) and nova_posicao not in entrada_bases: # e uma casa livre entrada_bases.append(nova_posicao) base_entrada = entrada_bases[0] # escolhe uma casa livre junto das bases #vai ordenar as bases com base no uso de frente de onda V= {} frente_de_onda = [] maximo = 100 gama = 0.9 s = base_entrada # vai usar a frente de onda para descobrir a base vazia mais distante V[s] = maximo frente_de_onda.append(s) while frente_de_onda: s = frente_de_onda.pop(0) # lista de todos os estados 'sn' adjacentes de s for sn in self._transicoes(s, crencas): if sn != s: d = dist(s, sn) vs = V.get(s,0) * math.pow(gama, d ) vsn = V.get( sn, 0) if vsn == 0 or vs > vsn: #ainda nao foi explorado o caminho ou precisa de ser reavaliado V[sn] = vs frente_de_onda.append(sn) #actualiza as crencas com o "potencial de cada base" e a posicao da entrada crencas.definir_entrada_bases(base_entrada) crencas.inicializar_bases(V)
def __init__(self): # ** deveriamos passar os parametros psa para anular as dependencais self.alfa = 0.5 # se for 1 fica reativo self.gama = 0.9 # e o elemento de previsao do futuro self.epson = 0.010 # faz sentido ser pequeno senao nao aproveita so explora self.Q= {} #dicionario com par de estado accao com chave a que e associado o valor r self.accoes= psa.dirmov()
def __init__(self): self.elementos = None self.pos_agente = None #capacidades do agente, neste caso os possÃveis movimentos self.cap_agente = [Mover(self, ang) for ang in psa.dirmov()]
def _transicoes(self, estado, crencas): novos_estados = [mover(estado, accao) for accao in dirmov()] return [ estado for estado in novos_estados if crencas.obter_valor(estado) == 'base']