Agente baseado em lógica proposicional

O agente baseado em lógica proposicional utiliza proposições lógicas para inferir conhecimento sobre o ambiente e tomar decisões. Ele opera em micromundos bem definidos, como o Wumpus World, onde as regras e estados são claramente estabelecidos. Segundo Soares (2024), a lógica proposicional oferece ferramentas como a validade, a satisfatibilidade e as regras de inferência, que permitem derivar conclusões corretas e completas.

Processo de Inferência

A inferência é o núcleo da lógica proposicional, permitindo deduzir novas informações a partir de fatos e regras conhecidas. Por exemplo, no Wumpus World, o agente pode deduzir que uma célula é segura se todas as células adjacentes conhecidas não apresentam perigo, utilizando uma lógica como ¬Pit_x,y ∧ ¬Wumpus_x,y.

Técnicas como Modus Ponens e resolução são amplamente empregadas. Modus Ponens segue a estrutura "Se P ⇒ Q e P forem verdadeiros, então Q é verdadeiro". A resolução, por outro lado, combina cláusulas complementares para deduzir novas informações. Essas abordagens garantem que o agente tome decisões com base em um modelo confiável e lógico.

Vantagens e Limitações

Eficiência em Ambientes Controlados: Agentes lógicos são ideais para resolver problemas em micromundos bem definidos, como jogos e simulações. O Wumpus World é um exemplo clássico usado para ilustrar a inferência em IA (RUSSELL; NORVIG, 2021).

Limitações Práticas: A lógica proposicional carece de expressividade para lidar com incertezas ou relações complexas. Em ambientes reais, isso pode limitar a aplicação prática, como observado por Levesque e Lakemeyer (2001).

Impacto na Inteligência Artificial Moderna

Apesar de suas limitações, agentes baseados em lógica proposicional estabeleceram fundamentos importantes para a IA, como o raciocínio simbólico e o planejamento. Esses conceitos são usados em sistemas de verificação formal e automação de provas matemáticas.

Um exemplo de aplicação prática é a automação de diagnósticos médicos. Por exemplo, regras como "Se febre ∧ tosse ⇒ gripe" podem ser usadas em sistemas especialistas para sugerir diagnósticos baseados em sintomas.

Exemplo Prático

Aqui está um exemplo prático de um agente baseado em lógica proposicional que simula a tomada de decisão de um ciclista ao pedalar por um caminho cheio de possíveis obstáculos. O agente é projetado para perceber o ambiente, identificar o tipo de obstáculo (como crianças atravessando, lixo na pista ou buracos no chão) e tomar a ação apropriada com base em regras predefinidas. Essas regras representam a base de conhecimento do agente, permitindo que ele associe percepções a ações específicas e reaja de forma lógica e eficiente.

class BicycleAgent:
    def __init__(self):
        # Base de conhecimento (regras de lógica proposicional)
        self.knowledge_base = {
            "obstacle_child": "stop",
            "obstacle_trash": "swerve_right",
            "obstacle_hole": "swerve_left",
            "no_obstacle": "move_forward"
        }

    def perceive_environment(self, perception):
        """
        Simula a percepção do ambiente e retorna a proposição correspondente.
        """
        if perception == "child":
            return "obstacle_child"
        elif perception == "trash":
            return "obstacle_trash"
        elif perception == "hole":
            return "obstacle_hole"
        else:
            return "no_obstacle"

    def decide_action(self, proposition):
        """
        Toma uma decisão com base na base de conhecimento e na proposição percebida.
        """
        return self.knowledge_base.get(proposition, "wait")

    def act(self, perception):
        """
        Fluxo completo: percepção -> decisão -> ação.
        """
        proposition = self.perceive_environment(perception)
        action = self.decide_action(proposition)
        print(f"Perception: {perception}")
        print(f"Proposition: {proposition}")
        print(f"Action: {action}\n")


# Simulação do ambiente
def simulate_bicycle_agent():
    agent = BicycleAgent()

    # Lista de percepções simulando obstáculos no caminho
    perceptions = ["child", "trash", "hole", "no_obstacle", "trash", "child"]

    for perception in perceptions:
        agent.act(perception)


if __name__ == "__main__":
    simulate_bicycle_agent()

Explicação do Algoritmo

1. Base de Conhecimento: É definida como um dicionário onde cada proposição é mapeada para uma ação específica.

2. Percepção: O método perceive_environment traduz as percepções (crianças, lixo, buracos, etc.) em proposições.

3. Decisão: O método decide_action utiliza a base de conhecimento para determinar a ação apropriada com base na proposição recebida.

4. Ação:O método act integra os passos de percepção, decisão e execução da ação, exibindo o fluxo completo para cada percepção.

4. Simulação:A função simulate_bicycle_agent cria uma instância do agente e processa uma sequência de percepções, representando diferentes obstáculos encontrados no caminho.

Saída do Algoritmo

Perception: child
Proposition: obstacle_child
Action: stop

Perception: trash
Proposition: obstacle_trash
Action: swerve_right

Perception: hole
Proposition: obstacle_hole
Action: swerve_left

Perception: no_obstacle
Proposition: no_obstacle
Action: move_forward

Perception: trash
Proposition: obstacle_trash
Action: swerve_right

Perception: child
Proposition: obstacle_child
Action: stop

Esse exemplo mostra como o agente decide ações baseadas em percepções do ambiente utilizando lógica proposicional.

Conclusão

Agentes baseados em lógica proposicional são ferramentas poderosas em ambientes controlados, mas possuem limitações práticas em cenários complexos. No entanto, eles continuam sendo uma base teórica essencial para avanços em inteligência artificial.