Teatro das Luzes - Introdução ao PDDL

Bruno Ribeiro

Preâmbulo

O grande evento de inauguração do Teatro das Luzes, organizado pela FLIA (Federação de Luminotécnicos e Iluminadores Artísticos), está se aproximando. No entanto, surgiu um problema técnico inesperado: o sistema de iluminação do palco ainda não está configurado corretamente para o início do espetáculo.

Sua tarefa é modelar essa situação em PDDL, representando o desafio de ajustar todas as luzes no momento certo, garantindo que tudo esteja pronto antes da primeira cena. O sistema de luzes opera por meio de interruptores que podem estar em dois estados: ligado ou desligado. Esses estados são representados pelos predicados switch-is-on (interruptor ligado) e switch-is-off (interruptor desligado).

A missão é planejar o processo de ligar as luzes corretamente, respeitando uma sequência que foi planejada pelos técnicos de iluminação.

Objetivo

Você deve criar um arquivo de problema em PDDL, com o nome turn-it-on, utilizando o domínio fornecido abaixo fliaswitch. O objetivo é garantir que todas as luzes necessárias estejam ligadas antes do início da primeira cena, respeitando as instruções e a sequência corretas.

Entrada

Este problema não possui uma entrada, pois todos os detalhes já estão definidos na descrição do cenário.

Saída

Não há uma saída específica esperada para esse problema. Sua função é garantir que o arquivo de problema criado funcione adequadamente com o domínio fornecido. Isso será verificado utilizando um planejador capaz de processar problemas PDDL (Planning Domain Definition Language), que rodará o domínio e o arquivo de problema juntos.

Nota: Verifique se o seu arquivo está funcionando adequadamente antes de enviar. Você pode testar o seu problema diretamente através do seguinte link: https://plan-editor.naquadah.com.br/

O que deve ser enviado

Você deverá enviar apenas o arquivo de problema com a extensão .pddl, que implemente o cenário descrito, utilizando o domínio abaixo.

Domínio

O código do domínio a ser utilizado é o seguinte:

(define (domain fliaswitch)
   (:requirements :strips)
   (:predicates 
      (switch-is-on)   ;; O interruptor está ligado
      (switch-is-off)) ;; O interruptor está desligado

   ;; Ação para ligar o interruptor
   (:action switch-on
       :parameters ()
       :precondition (switch-is-off)
       :effect (and (switch-is-on) (not (switch-is-off))))

   ;; Ação para desligar o interruptor
   (:action switch-off
       :parameters ()
       :precondition (switch-is-on)
       :effect (and (switch-is-off) (not (switch-is-on)))))

Author: Bruno Ribeiro