Modo de Execução do Sistema de Agentes (Torre de Hannoi) 1. Abrir 8 (oito) shels do Sicstus Prolog; 2. Arrumar as oito janelas de forma que fiquem visíveis ao mesmo tempo no vídeo; 3. Em cada janela executar : ?- ['/path/agente21.pl'], onde path é o caminho onde se encontra o arquivo agente21.pl. Note que a barra é padrão UNIX "/" e não "\"; 4. Na janela 1 executar: ?- use_module(library('linda/server')),linda. (Você está criando um servidor linda e receberá a mensagem contendo o nome do servidor SERVER e o número da porta PORT). 5. Nas demais janelas executar: ?- use_module(library('linda/client')).; 6. Nessas mesmas janelas executar: ?- linda_client('SERVER':PORT). (SERVER é o nome do servidor e PORT o número da porta); 7. Na janela 2 executar: ?- inicializa(a). (Você está inicializando o disco a); 8. Na janela 3 executar: ?- inicializa(b). (Você está inicializando o disco b) 9. Na janela 4 executar: ?- inicializa(c). (Você está inicializando o disco c) 10. Na janela 5 executar: ?- inicializa(mesa1). (Você está inicializando o pino 1) 11. Na janela 6 executar: ?- inicializa(mesa2). (Você está inicializando o pino 2) 12. Na janela 7 executar: ?- inicializa(mesa3). (Você está inicializando o pino 3) 13. Na janela 8 executar: ?- assert(nome(aaa)), assert(cod_mens(0)). (Você está inicializando um agente auxiliar aaa utilizado para matar todos os agentes e encerrar a execução do sistema). 14. Na janela 5 executar: ?- negocia. (mesa1) 15. Na janela 7 executar: ? negocia. (mesa3) 16. Na janela 2 executar: ? negocia. (disco a) 17. Na janela 4 executar: ? negocia. (disco b) 18. Na janela 3 executar: ? negocia. (disco c) (Aguardar até que o disco c inicie o contrato com a mesa3) 19. Na janela 6 executar: ?- negocia. (mesa2) Observe que o início da negociação deve ocorrer na ordem especificada. Isto é necessário porque se o agente C movimentar-se, inicialmente, para o pino 2, o sistema entrará em deadlock. Depois que o sistema tornar-se estável (nenhuma nova mensagem seja enviada) basta executar na janela do agente aaa : ?- envia_mensagem(execute,all,off,_,_,_). Todos os agentes serão mortos e o estado de cada agente será mostrado na tela. Para reiniciar a execução do sistema, execute em qualquer uma das janelas: ?- limpa_client. (Você está eliminando todas as mensagens do servidor) e Repita os passos a partir de 7, com exceção ao passo 13.