Anda di halaman 1dari 15

MINISTRIO DA EDUCAO

SECRETARIA DE EDUCAO MDIA E TECNOLGICA


INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DO AMAZONAS
PR-REITORIA DE PESQUISA, PS GRADUAO E INOVAO
CAMPUS MANAUS DISTRITO INDUSTRIAL
COORDENAO DE PESQUISA E INOVAO TECNOLOGICA

INTELIGNCIA COMPUTACIONAL TUTORIAL AGENTE MVEL


EQUIPE: lvaro de Azevedo Peres, Bartolomeu Hebert de S Barbosa, Csar Augusto
Mota da Silva, Claybiane Cunha, Francisco Ferreira, Jordy Mendes, Leonardo Ferreira,
Tatiane Pinto dos Santos.
Este documento demonstra como configurar ambiente de desenvolvimento Eclipse
Neon para aplicao de agentes mveis utilizando a verso 4.4 do Jade.
Passos executados para o desenvolvimento deste tutorial:
1. Copiar a pasta Jade.bin para o workspace do Eclipse.
2. Criar um novo projeto no jade, com o nome desejado, como mostra a Figura 1.

Figura 1 - Criao do projeto


3. Na janela da Figura 1 clicar em Next Libraries Add External JARs, como
mostra a figura 2.

Figura 2 - Adicionando JARs


4. Ao clicar em Add External JARs, adicionar as extenses jade.jar e migration.jar.

Figura 3 - selecionado arquivos JARs


5. Criar novo Package, para que um novo agente possa ser criado a partir do agente no
JADE RMA Gui.

Figura 4 - Criao de Package


6. Criao das classes, herdeira do agente e de interface grfica, Migration e Migration
Gui, respectivamente.

Figura 5 - Classe Migration


Figura 6 - Classe MigrationGui
7. Na classe MigrationGui possvel personalizar o formato da janela de mensagem
enviada recebida pelos agentes, como mostrado na prxima figura.

Figura 7 - Criando design para as janelas de mensagens


8. Foram realizadas as linhas de comando dos algoritmos para criao de agentes,
configurando os argumentos do agente {"-gui","-
jade_core_migration_IPMS_migration_timeout","10000","-
jade_core_migration_IPMS_migration_timeout_responder","10000","-
services","jade.core.mobility.AgentMobilityService;jade.core.migration.InterPlatformM
obilityService;jade.core.event.NotificationService","-acceptforeign-agents","true"} que
so mostrados em (AMETLLER, J. E. e CUCURULL, J.J. , 2008).
9. Para criar o arquivo executvel .jar, necessita ir na guia file>export como mostrado na
Figura 8. Feito isso, selecionar o tipo de aplicao Java, e dentro de Java escolher
Runnable JAR file, mostrado na Figura 9. Logo aps, clicando em Next deve-se escolher
o diretrio e salvar o arquivo. Esses passos esto descritos nas Figuras 10, 11, 12 e 13.
Figura 8 Exportando o JAR executvel

Figura 9 Aplicao JAVA


Figura 10 Selecionando o Launch do JAVA

Figura 11 Seleo do tipo de aplicao Java.


Figura 12 Confirmao da escolha de diretrio.

Figura 13 Arquivo salvo em pasta.


RESULTADOS
Aps a execuo do programa .jar gerado, o console Jade RAM aberto. Em
seguida, necessrio criar um agente que ter a funo mvel. Deve-se nomear o agente
e selecionar a classe Migration, como mostrado nas Figuras 14, 15, 16 e 17.

Figura 14 Console de agentes.

Figura 15 Criao do agente mvel.

Figura 16 Seleo da classe Migration.Migration para o agente.


Figura 17 Propriedades do agente a ser criado.
Aps a criao do agente, gerada a interface grfica responsvel por receber o
endereo da mquina de destino e o comando de mover o agente. Caso o endereo no
exista ou a mquina de destino passe do tempo pr-selecionado, ele retorna o agente para
a segurana do mesmo, representado nas Figuras 18 e 19.

Figura 18 Agente Testando criado.

Figura 19 Passando endereo de destino do agente.


Caso o endereo de destino exista, a mquina em que o agente est sendo enviado
exibe uma mensagem com a palavra Ping, como na Figura 20.
Figura 20 Mensagem de envio do agente.
Aps o usurio apertar o boto OK apresentado na Figura 20, o usurio se move
para a mquina identificada com o endereo desejado e a mensagem recebida, neste caso,
Pong, como na Figura 21.

Figura 21 Agente Testando recebido, mensagem pong enviada.


Quando a mensagem Pong chega para a mquina receptora e pressionado o boto
OK, h a possibilidade de esta mesma mquina mandar de volta para a outra mquina ou
para uma nova o agente e a mensagem Ping. A outra mquina ir receber o agente e a
mensagem Pong. E assim sucessivamente, movimentando o agente, que podem ser
observados nas Figuras 22 e 23.
Figura 22 Enviando de volta o agente e a mensagem.

Figura 23 Agente voltando para a origem.


ANEXO
1 package Migration;
2 import javax.swing.JOptionPane;
3 import jade.core.AID;
4 import jade.core.Agent;
5 import jade.core.PlatformID;
6 import jade.core.behaviours.TickerBehaviour;
7 @SuppressWarnings("serial")
8 public class Migration extends Agent{
9 int liberado = 0;
10 String MeuEnderecoInicial,MeuHAP;
11 MigrationGui mygui,novogui;
12 Agent M = this;
13 protected void setup(){
14 mygui = new MigrationGui(this);
15 mygui.setVisible(true);
16 addBehaviour(new TickerBehaviour(M,100){
17 protected void onTick(){
18 if(mygui.liberado == 1 && liberado == 0){
19 beforeMove();
20 MeuEnderecoInicial = getAID().getAddressesArray()[0];
21 MeuHAP = getAID().getHap();
22 AID remoteAMS = new AID("ams@"+mygui.endereco+":1099/JADE",
AID.ISGUID);
23 remoteAMS.addAddresses("http://"+mygui.endereco+":7778/acc");
24 PlatformID destination = new PlatformID(remoteAMS);
25 myAgent.doMove(destination);
26 mygui.liberado = 0;
27 liberado = 1;
28 System.out.println(MeuEnderecoInicial);
29 mygui.Endereco.setText("");
30 JOptionPane.showMessageDialog(null, "PING");
31 mygui.setVisible(false);
32 }
33 else if(mygui.liberado == 0 && liberado == 1){
34 liberado = 0;
35 JOptionPane.showMessageDialog(null, "PONG\n");
36 novogui = new MigrationGui(M);
37 novogui.setVisible(true);
38 mygui = novogui;
39 }
40 afterMove();
41 }});
42 }
43 public static void main(String[] Args){
44 String[] p =
{"-gui","-jade_core_migration_IPMS_migration_timeout","10000","-
jade_core_migration_IPMS_mig
ration_timeout_responder","10000","-services","jade.core.mobility.AgentMobilityService;jade.
core.migration.InterPlatformMobilityService;jade.core.event.NotificationService","-acceptfor
eign-agents","true"};
45 jade.Boot.main(p);
46 }
47 }
Anexo 1 - Cdigo do Agente
1 package Migration;
2 import java.awt.EventQueue;
3 import javax.swing.JFrame;
4 import javax.swing.JPanel;
5 import javax.swing.border.EmptyBorder;
6 import jade.core.Agent;
7 import java.awt.Color;
8 import javax.swing.JLabel;
9 import javax.swing.JTextField;
10 import javax.swing.JButton;
11 import java.awt.event.ActionListener;
12 import java.awt.event.ActionEvent;
13 import java.awt.event.WindowAdapter;
14 import java.awt.event.WindowEvent;
15 public class MigrationGui extends JFrame {
16 private static final long serialVersionUID = 1L;
17 private JPanel contentPane;
18 public JTextField Endereco;
19 public String endereco;
20 public int liberado=0;
21 public JButton btnMandar;
22 /**
23 * Launch the application.
24 */
25 public static void main(String[] args) {
26 EventQueue.invokeLater(new Runnable() {
27 public void run() {
28 try {
29 MigrationGui frame = new MigrationGui(null);
30 frame.setVisible(true);
31 } catch (Exception e) {
32 e.printStackTrace();
33 System.out.println("Fechou");
34 }
35 }
36 });
37 }
38 public MigrationGui(Agent agent) {
39
40 addWindowListener(new WindowAdapter() {
41 @Override
42 public void windowClosed(WindowEvent arg0) {
43 agent.doDelete();
44 }
45 });
46 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
47
48 setTitle(agent.getLocalName());
49 setBounds(100, 100, 209, 148);
50 contentPane = new JPanel();
51 contentPane.setBackground(Color.WHITE);
52 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
53 setContentPane(contentPane);
54 contentPane.setLayout(null);
55
56 JLabel lblEndereo = new JLabel("Endere\u00E7o");
57 lblEndereo.setBounds(10, 11, 65, 14);
58 contentPane.add(lblEndereo);
59
60 Endereco = new JTextField();
61 Endereco.setBounds(97, 8, 86, 20);
62 contentPane.add(Endereco);
63 Endereco.setColumns(10);
64
65 JLabel lblOrigem = new JLabel("Origem");
66 lblOrigem.setBounds(10, 72, 46, 14);
67 contentPane.add(lblOrigem);
68
69 JLabel lblNewLabel = new JLabel("");
70 lblNewLabel.setBounds(66, 72, 117, 26);
71 contentPane.add(lblNewLabel);
72
73 btnMandar = new JButton("Mandar");
74 btnMandar.addActionListener(new ActionListener() {
75 public void actionPerformed(ActionEvent arg0) {
76 endereco = Endereco.getText();
77 liberado = 1;
78 lblNewLabel.setText(agent.getHap());
79 }
80 });
81 btnMandar.setBounds(94, 39, 89, 23);
82 contentPane.add(btnMandar);
83 }
84 }
Anexo 2 Cdigo da Interface Grfica
REFERNCIAS
1. AMETLLER, J. E. e CUCURULL, J.J. , Inter-Platform Mobility Service
Documentation for the JADE Platform: version 1.2, 2008
2. Jade. Encontrado em <http://jade.tilab.com/download/jade/license/?x=25&y=7>
3. Mobility. Encontrado em:
<https://sourceforge.net/projects/jipms/files/jipms/1.2/ipms-1.2-jade-
3.5.zip/download?use_mirror=ufpr&use_mirror=switch>

Anda mungkin juga menyukai