BullyAlgorithm • SequencerAlgorithm • SequencerAlgorithmJava
O BullyAlgorithm é um algoritimo que simula o algoritimo de bully, o algoritimo é feito em sistemas multiagents com base em um framework chamado JaCaMo que em suma é uma junção de frameworks o Jason que seria a parte dos agentes que tem como base o ASL (agentspeak language), Cartago uma framework para trabalhar com o Jason, um framework baseado em artefatos, e por fim o Moise um framework para a estruturação dos agentes.
A ideia do codigo é simular o algoritimo de Bully, o sistema inicia com uma interface grafica e o sistema espera que o botão iniciar seja apertado primeiramente. Após o botão de iniciar o sistema o usuario poderá apertar qualquer botão na interface, são eles o botão de matar um processo que espera que você tenha digitado um numero valido de processo no campo de texto, esse botão ira matar o processo escolhido, o proximo botão é o botão de reviver um processo que vai ressucitar um processo previamente morto, e por fim o botão de qual processo vai iniciar a percepção de que o processo líder está morto.
- Java 17+
- Gradle 8.7+
Acessar a pasta do projeto SequencerAlgorithmJava
cd BullyAlgorithmRodar o comando abaixo na raiz do projeto:
gradle runDepois disso ele vai pegar todas as dependencias necessarias e vai rodar o programa abrindo a interface grafica.
Qualquer dificuldade em rodar o programa mais informações podem ser adquiridas no link a seguir Instalação JaCaMo
O VisualSequencer é um projeto criado em HTML e JavaScript para simular um sequenciador móvel. No exemplo, 3 clientes podem enviar mensagens a 6 processos sequenciadores que enviam a 3 receptores.
O usuário tem liberdade para personalizar mensagens que são enviadas pelos clientes C1, C2 e C3 e também pode escolher que algum desses não envie nada. Ao pressionar o botão de envio, os clientes selecionados enviarão suas respectivas mensages ao processo sequenciador líder.
O processo sequenciador líder é representado por um processo verde. Ao receber as mensagens dos clientes, o processo líder reorganiza a ordem das mensagens (para simular, a lista de mensagens é apenas invertida) e envia para os 3 receptores. Simulando latências, os tempos de envio, recebimento e processamento dos processos e receptores são aleatórios, com um mínimo de 3 segundos de espera para fins de visualização.
Quando os receptores recebem as mensagens do sequenciador líder, os três iniciam uma simulação de processamento (com tempo aleatório) e, quando o primeiro receptor finaliza o processamento, ele avisa aos outros receptores que finalizou e que retornará uma mensagem de OK ao processo líder. Ao receber o OK, o processo líder sequencia e passa ao próximo processo no sequenciador.
Ao fim de todo o ciclo de mensagens, o programa passa a esperar um novo envio de mensagens do usuário, com um novo líder dos processos sequenciadores.
- Python
- Flask
Acesse o diretório do projeto VisualSequencerAlgorithm
cd VisualSequencerAlgorithmUse o comando na raiz do projeto:
python app.pyIsso iniciará um servidor em 127.0.0.1:5000, com a página web rodando.
SequencerAlgorithmJava é um projeto que simula um algoritmo sequenciador móvel em Java. Para tal, foram considerados 3 processos clientes, 3 processos sequenciadores e 3 processos servidores.
O programa primeiramente sorteia um processo sequenciador para ser o lider. Após isso, os processos clientes enviam cada uma mensagem (M1, M2, M3) para o líder, que por sua vez, sequencia as mensagens aleatoriamente e envia para os servidores.
Os servidores recebem as mensagens sequenciadas e processam a requisição. O primeiro processo servidor a finalizar a requisição (definido aleatoriamente pelo programa) envia uma mensagem OK para os demais servidores e envia a resposta da requisição ao sequenciador lider, que então repassa a resposta aos clientes.
Ao final desta execução, troca-se o líder pelo próximo sequenciador disponível e o processo se repete (Como há 3 processos sequenciadores, então há 3 rodadas de execução do programa).
O programa imprime no console e em um arquivo pdf todas as etapas, além das mensagens enviadas e recebidas por cada processo.
Após isso, o programa finaliza.
- Java 17+
- Maven 3.9.3+
Acessar a pasta do projeto SequencerAlgorithmJava
cd SequencerAlgorithmJavaRodar o comando abaixo na raiz do projeto:
mvn clean install -DskipTestsApós isso, rodar o comando abaixo para executar o projeto:
java -jar ./target/sequenceralgorithmjava-1.jarO programa vai printar no console a sequência de execução dos processos e também vai gerar um relatório em pdf na pasta raiz do projeto, com o nome de "Relatorio.pdf".