Автор: Пользователь скрыл имя, 29 Мая 2013 в 07:01, дипломная работа
Целью настоящей дипломной работы была реализация агентного подхода к вышеуказанной проблеме дистанционного управления сетевым трафиком.
Задачами настоящей работы были:
• Исследование предметной области
o Обзор и анализ технологий агентного программирования
o Рассмотрение и анализ существующих методов достижения поставленной цели
• Выбор мультиагентной платформы
o Выработка критериев выбора мультиагентной платформы
o Анализ и оценка наиболее известных мультиагентных платформ по выработанным критериям
o Осуществление выбора платформы, в наибольшей степени удовлетворяющей целям настоящей работы
• Разработка прототипов
o Разработка интеллектуального агента
o Разработка мобильного агента
• Применение в коммерческой задаче
1. Введение______________________________________ 3
2. Исследование предметной области________________ 5
2.1. Агенты. Основные понятия___________________ 5
2.2. Интеллектуальные агенты____________________ 7
2.3. Понятие мультагентной системы_______________8
2.4. Технологии создания мультиагентной системы__10
2.5. Обзор существующих методов________________11
3. Разработка мультиагентной системы______________12 3.1. Выбор мультиагентной платформы____________12 3.2. Особенности платформы JASDK_____________ 14
3.3. API-интерфейсы аглетов_____________________16
3.4. Реализация мобильности аглетов______________18
4. Реализация прототипов_________________________21
4.1. Простейший агент__________________________21
5. Область применения___________________________23
6. Заключение__________________________________25
7. Список литературы____________________________26
Приложение 1__________________________________27
Приложение 2__________________________________28
} catch (Exception ex) {
ex.printStackTrace();
}
}
// Клон уходит на требуемый компьютер
public void sendSelf(Message msg) {
// greetings
setText("I'll go to... " + (String)msg.getArg() );
waitMessage(1000);
try {
itinerary.go( (String)msg.getArg(), "sayClone" );
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* Создание и показ диалогового окна.
* Этот аглет хранит ссылку на вход диалога, чтобы избегать множественного
* открытия окна.
*/
public void dialog(Message msg) {
// проверить и создать dialog box
if (my_dialog == null) {
my_dialog = new MyDialog(this);
my_dialog.pack();
my_dialog.resize(my_dialog.
}
my_dialog.show(); // показать dialog box
}
}
/*
* MyDialog class это окно, которое будет открываться когда требуется диалог.
*/
class MyDialog extends Frame {
// аглет, с которым пользователь взаимодействует
private MyAglet aglet = null;
// Компоненты графического
private AddressChooser dest = new AddressChooser();
private TextField msg = new TextField(18);
private Label time_txt = new Label("Время работы (сек.):");
private TextField time = new TextField(4);
private Button go = new Button("GO!");
private Button send = new Button("Send CLONE!");
private Button close = new Button("CLOSE");
// Конструктор
MyDialog(MyAglet aglet) {
this.aglet = aglet;
layoutComponents();
dest.setAddress("atp://");
msg.setText(aglet.message);
time.setText(""+aglet.
}
// Размещаем компоненты
private void layoutComponents() {
// Layouts components
GridBagLayout grid = new GridBagLayout();
GridBagConstraints cns = new GridBagConstraints();
setLayout(grid);
cns.insets = new Insets(5,5,5,5);
cns.weightx = 1.0;
cns.weighty = 1.0;
cns.gridheight = 2;
cns.gridwidth = GridBagConstraints.REMAINDER;
cns.fill = GridBagConstraints.HORIZONTAL; // пересчет размера окна по горизонтали
grid.setConstraints(dest, cns);
add(dest); // добавляем адресную книгу
cns.fill = GridBagConstraints.BOTH; // пересчет по горизонтали и вертикали
grid.setConstraints(msg, cns);
add(msg);
cns.gridwidth = GridBagConstraints.RELATIVE;
grid.setConstraints(time_txt, cns);
add(time_txt);
cns.gridwidth = GridBagConstraints.REMAINDER;
cns.fill = GridBagConstraints.VERTICAL;
grid.setConstraints(time, cns);
add(time);
cns.weighty = 0.0;
cns.fill = GridBagConstraints.NONE;
cns.gridheight = 1;
Panel p = new Panel(); // делаем панель и вносим в нее кнопки
grid.setConstraints(p, cns);
add(p);
p.setLayout(new FlowLayout());
p.add(go);
p.add(send);
p.add(close);
}
// обработчик событий
public boolean handleEvent(Event ev) {
if (ev.id == Event.WINDOW_DESTROY) {
hide();
return true;
}
return super.handleEvent(ev);
}
// обработчик действий
public boolean action(Event ev, Object obj) {
if (ev.target == send) {
aglet.message = msg.getText();
try {
StringTokenizer serv_seq = new StringTokenizer( (String)dest.getAddress() );
while( serv_seq.hasMoreTokens() ) {
String serv = new String( serv_seq.nextToken() );
AgletProxy p = (AgletProxy)aglet.clone();
p.sendOnewayMessage( new Message("sendSelf", serv) );
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (ev.target == go) {
aglet.message = msg.getText();
aglet.worktime = ( new Integer(time.getText()) ).intValue();
aglet.handleMessage( new Message("startTrip", dest.getAddress()) );
} else if (ev.target == close) {
hide();
} else {
return false;
}
return true;
}
}
Информация о работе Мультиагентные платформы и их применение в сетевых задачах