
- •Агентная платформа jade
- •1. Описание агентной платформы jade
- •1.1. Архитектурная модель
- •1.2. Функциональная модель
- •2. Архитектура и реализация платформы jade
- •2.1. Структуры компонент-соединитель
- •2.1.1. Агент
- •2.1.2. Поведения
- •2.1.3. Платформа
- •2.1.4. Сервис обмена сообщениями
- •2.1.5. Анализ атрибутов качества
- •2.1.5.1. Производительность
- •2.1.5.2. Масштабируемость
- •2.1.5.3. Готовность
- •2.2.2. Сервис обмена сообщениями
- •2.2.2.1. Модифицируемость
- •2.3.1.1. Безопасность
- •3. Установка и настройка
- •3.1. Требования к окружению
- •3.2. Eclipse интегрированная среда разработки
- •3.2.1. Установка
- •3.2.2. Настройка приложения
- •3.2.3. Добавление кода
- •3.2.4. Запуск и отладка кода
- •3.3. Установка и настройка jade
- •1.1. Файл CalcModel.Java
- •1.1. Файл CalcPanel.Java
- •1.1. Файл Calculator.Java
- •2.1.Листинг: Файл PingAgent.Java
- •2.2. Листинг: Файл PongAgent.Java
1.1. Файл Calculator.Java
package com.devious.calculator;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.KeyEvent;
/**
* The "driver" program for our simple Swing-based calculator.
*
*/
public class Calculator
{
public static void main(String[] args)
{
try {
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) {}
JFrame calcFrame = new JFrame("Calculator");
CalcModel model = new CalcModel();
CalcPanel calcPanel = new CalcPanel(model);
calcPanel.init();
calcFrame.setContentPane(calcPanel);
calcFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
calcFrame.pack();
calcFrame.setVisible(true);
}
}
Приложение 2
2.1.Листинг: Файл PingAgent.Java
package ru.agentlab;
import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.domain.AMSService;
import jade.domain.FIPAAgentManagement.AMSAgentDescription;
import jade.domain.FIPAAgentManagement.SearchConstraints;
import jade.lang.acl.ACLMessage;
public class PingAgent extends Agent {
private static final long serialVersionUID = 8257866411543354395L;
public void setup() {
System.out.println("Hello World, my name is : " + getAID().getName());
// Поведение агента исполняемое в цикле
addBehaviour(new CyclicBehaviour(this) {
private static final long serialVersionUID = 7774831398907094833L;
public void action() {
ACLMessage msg = receive();
if (msg != null) {
// Вывод на экран локального имени агента и полученного
// сообщения
System.out.println(" – " + myAgent.getLocalName() + " received: " + msg.getContent());
}
// Блокируем поведение, пока в очереди сообщений агента
// не появится хотя бы одно сообщение
block();
}
});
AMSAgentDescription[] agents = null;
try {
SearchConstraints c = new SearchConstraints();
c.setMaxResults(new Long(-1));
agents = AMSService.search(this, new AMSAgentDescription(), c);
} catch (Exception e) {
System.out.println("Problem searching AMS: " + e);
e.printStackTrace();
}
for (AMSAgentDescription agent : agents) {
AID agentID = agent.getName();
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(agentID);// id агента которому отправляем сообщение
msg.setLanguage("English");// Язык сообщения
msg.setContent("Ping"); // Содержимое сообщения
send(msg); // отправляем сообщение
}
}
}
2.2. Листинг: Файл PongAgent.Java
package ru.agentlab;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
public class PongAgent extends Agent {
private static final long serialVersionUID = 3663966406239393054L;
protected void setup() {
addBehaviour(new CyclicBehaviour(this) {
private static final long serialVersionUID = -1912882200351395625L;
public void action() {
ACLMessage msg = receive();
if (msg != null) {
// Вывод на экран локального имени агента и полученного сообщения
System.out.println(" – " + myAgent.getLocalName() + " received: " + msg.getContent());
ACLMessage reply = msg.createReply();
reply.setPerformative(ACLMessage.INFORM); // устанавливаем перформатив сообщения
reply.setContent("Pong"); // содержимое сообщения
send(reply);// отправляем сообщения
}
block();
}
});
}
}