Мультиагентные платформы и их применение в сетевых задачах

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

Мультиагентные платформы и их применение в сетевых задачах.doc

— 236.50 Кб (Скачать)

 

 

 

4. Реализация прототипов

 

 

Теперь, когда мы выбрали мультиагентную платформу и поговорили о ее свойствах, настало время реализовать ряд  прототипов – примеров, которые  помогут нам в дальнейшем при  создании искомой системы.

 

4.1. Простейший агент

 

 

Конечно же, я начал с так называемого  Hello-Agent’а, который печатает “created!”, когда создается и говорит “hello!” когда запускается. В дальнейшем я его несколько усовершенствовал, добавив опцию “sayHelloAgain” – получив соответствующее сообщение, агент снова приветствует нас. Наконец, я добавил самую простую мобильность – включил опцию передачи агента на другой компьютер. Когда агент передается на другой компьютер, он пишет “bye!”. Полный программный код агента можно увидеть в Приложении 1.

 

 

4.2. Интеллектуальный агент

 

 

 

Затем, я создал простейшего интеллектуального  агента. Данный агент был призван  реагировать на изменения внешнего мира. Этот агент выдавал сообщения о прошедших десяти минутах (каждые десять минут, соответственно).

 

 

 

4.3. Мобильный агент

 

 

Агент был призван пройти по адресам, указанным в книге адресов, по прибытии в очередной узел сети он выдавал сообщение о приходе, после чего ждал указанное время, а затем переходил на следующий  узел. Время задержки, сообщение  и адреса можно ввести в диалоговом окне,

 

Интерфейс моего агента выглядел так:

 

 

 

Агент начинает перемещаться, когда  пользователь нажмет на “GO!”

 

Как видно из диалогового окна, агент также поддерживает функцию  отсылки клона, то есть он сам остается в том узле, где и был, а его клон перемещается в указанный в адресах узел сети.

 

Программный код данного агента представлен в Приложении 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. Область  применения

Итак, я реализовал ряд вспомогательных  прототипов моей системы.

Реализовал я свою систему в  рамках проекта «Почта России» в компании СКБ ВТ «ИСКРА». В этой главе я кратко опишу данный проект, а также что я уже сделал и что предстоит сделать.

 

Проект «Почта России» предполагает установку 10000 терминалов (платежных  киосков), которые произвела компания «ИСКРА», в почтовых отделениях по всей России. Очевидно, что для такой большой сети задачи мониторинга и диспетчеризации стоят особенно остро.

 

Перечислю все моменты, которые  следовало рассмотреть:

 

  • Мониторинг. Сюда входят такие моменты, как сбор информации на киосках, слежение за состояниями как киосков в целом, так и составных частей киосков.
  • Диспетчеризация. Здесь можно выделить анализ собранной информации, своевременная и правильная реакция на события, которые происходят в киоске. Например, своевременная замена отказавших частей, заполнение денежного ящика и т.д.
  • Изменение программы. Имеется в виду изменение, например, законодательства, процентов комиссии или стоимостей товаров.

 

 

И осенью 2006 года мной было предложено использовать агентные технологии при решении этих задач. Про первые два пункта уже было сказано немало, почему агентные технологии эффективны при решении подобных задач. Что касается третьего пункта, то его не сложно реализовать, учитывая способность агентов к взаимной коммуникации. В случае некоего изменения по сети распространяется агент, который общается с агентами на соответствующих узлах, после чего агенты на узлах «учатся», то есть изменяют свой код с учетом той информации, которую они получили.

 

Итак, сначала было подготовлено техническое задание данного проекта. Оно было сдано в ноябре 2006 года и утверждено.

 

Затем встала проблема выработки концепций  защиты информации. Эта проблема актуальна, так как если агент приходит в  узел сети, на этом узле нужно уметь  отличать его, например, от вирусов. Также, по сети ходит много информации, которую также надо уметь защитить и сохранить.

 

Далее, когда вся подготовительная часть была сделана, я написал  программу, которая несла в себе только часть функциональности, и  эту программу мы долгое время тестировали. Постепенно, когда первые тесты начали проходить, я добавлял новую функциональность. Так, пошагово, мы отработали систему на локальной сети, состоящей из нескольких узлов (небольшого количества).

 

В данный момент продолжается процесс  добавления функциональности. Также анализируется тестирование, которое было проведено, вследствие чего несколько изменилась исходная программа.

 

В дальнейшем планируется глобальное тестирование, то есть на крупной сети в условиях, максимально приближенных к реальным. Оно намечено на лето 2007 года. Осенью планируется доработать и исправить все выявленные недостатки и недочеты системы.

Окончательный ввод в эксплуатацию запланирован на январь 2008 года.

 

К сожалению, данный программный продукт  является коммерческим, поэтому я не могу представить итоговый программный код. Но принципы использовались те же, что и при реализации прототипов. Единственное, что не отражают прототипы, но что появилось в моей итоговой системе – нейросеть. Она призвана реализовать способность агентов приспосабливаться к изменениям внешней среды и самим реагировать на них, без дополнительного вмешательства со стороны диспетчера.

 

Остается добавить, что возможно, в будущем, я смогу внедрить свою систему и в других проектах, ведь задачи, которые она решает, не теряют свою актуальность в совершенно разных областях.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение.

 

В настоящей работе был рассмотрен и реализован агентный подход к задаче дистанционного управления сетевым трафиком.

 

Был осуществлен обзор и анализ существующих методов решения исходной задачи. Как указано выше, основными недостатками данных методов являются отсутствие поддержки различных операционных систем, а также неспособность самостоятельной эволюции. Было показано, что агентные технологии решают первую проблему за счет переносимости Java-кода, а вторую с помощью применения метода нейросетей и использования интеллектуальных способностей агента.

 

В рамках настоящего исследования была выработана таблица критериев выбора мультиагентной платформы. Наиболее известные мультиагентные платформы подверглись анализу и оценке с учетом вышеуказанных критериев, вследствие чего был осуществлен выбор мультиагентной платформы, наиболее подходящей для решения исходной задачи. Выбранная платформа JASDK (Java Aglets Software Development Kit) удовлетворяла всем основным критериям, таким как: поддержка мобильности разрабатываемых агентов, открытый доступ к мультиагентной платформе, работа в условиях любой операционной системы, наличие удобного пользовательского интерфейса, наличие подробного описания функциональности данной среды разработки.

 

В ходе анализа и подготовки к  реализации итоговой системы был  разработан и реализован ряд прототипов, на которых базируется настоящая система. Первый прототип был разработан в целях ознакомления с мультиагентной платформой (разработка велась в ходе анализа мультиагентных платформ). В дальнейшем были разработаны прототипы мобильного агента, который перемещался по узлам сети и посылал различные сообщения, а также интеллектуального агента, который реагировал на события, происходящие во внешней среде.

 

Наконец, была спроектирована и реализована система, использующая агентные технологии для решения задач мониторинга и диспетчеризации в рамках проекта «Почта России». Было подготовлено техническое задание проекта, решена проблема безопасности передачи данных внутри системы, а также проведено комплексное тестирование системы в условиях локальной сети терминальных устройств. В дальнейшем планируется расширение функциональности системы и ввод ее в эксплуатацию.

 

Результатом настоящей дипломной  работы является разработанная система  мониторинга и диспетчеризации  внутри сети, которая может быть использована не только в рамках вышеупомянутого  проекта «Почта России», но и  в других смежных областях.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список литературы:

 

 

 

 

1. Etzioni O., Weld D. Agent Programming, 1995

 

2. Wooldridg, Jennings, Multi Agent Systems, 1995

 

3. Bradshow I. Agent Methods, 2001

 

4. Чекинов Г.П., Чекинов С.Г. Применение технологии многоагентных систем для интеллектуальной поддержки принятия решения (ИППР). // Сетевой электронный научный журнал «Системотехника», №1, 2003 http://systech.miem.edu.ru/2003/n1/Chekinov.htm

 

5. Трахтенгерц Э.А. Компьютерная поддержка принятия решений. – М.: Наука, 2003.

 

6. Поспелов Д.А. Многоагентные системы – настоящее и будущее // Информационные технологии и вычислительные системы, № 1, 2002. – С. 14-21.

 

7. Евгенев Г.Б. Мультиагентные системы компьютерной инженерной деятельности // Информационные технологии, № 4, 2000. – С. 2-7.

 

8. http://www.microsoft.com

 

9. http://www.raai.org/about/persons/osipov/pages/ai/ai.html.

 

10. http://dll.botik.ru/nut/searchagents.html.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 1. Программный  код простейшего агента.

 

 

                        public class HelloAglet extends Aglet {

                            public void onCreation(Object init) {

                                System.out.println("created!");

                            }

                            public void run() {

                                System.out.println("hello!");

                            }

                            public boolean handleMessage(Message msg) {

                                if (msg.sameKind("sayHelloAgain") {

                                    System.out.println("hello!");

                                    return true;

                                }

                                return false;

                            }

                            public void onDisposing() {

                                System.out.println("bye!");

                            }

                        }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 2. Программный код прототипа мобильного агента.

 

// ПРИЛОЖЕНИЕ: файл MyAglet.java

package my;

 

import com.ibm.aglet.*;

import com.ibm.aglet.event.*;

import com.ibm.aglet.util.*;

import com.ibm.agletx.util.SimpleItinerary;

import java.lang.InterruptedException;

import java.io.Externalizable;

import java.io.ObjectInput;

import java.io.ObjectOutput;

import java.io.IOException;

import java.net.*;

import java.awt.*;

import java.util.*;

 

 

public class MyAglet extends Aglet {

 

    String message = "Hi from MyAglet!"; // Сообщение

    int worktime = 5; // время работы по умолчанию

 

     // UI чтобы взаимодействовать  с пользователем

    transient Frame my_dialog = new MyDialog(this);

 

    // home address представленный как строка

    String home = null;

 

    // Itinerary (Маршрут)

    SimpleItinerary itinerary = null;

 

    // Инициализация аглета: вызывается только один раз  при создании аглета

    public void onCreation(Object init) {

        itinerary = new SimpleItinerary(this);

 

        my_dialog.pack();

        my_dialog.resize(my_dialog.preferredSize());

        my_dialog.show();

 

        // Initialize the variables.

        home = getAgletContext().getHostingURL().toString();

    }

 

    /*

     * Обработчик сообщений

     */

    public boolean handleMessage(Message msg) {

        if (msg.sameKind("atHome")) {

            atHome(msg);

        } else if (msg.sameKind("startTrip")) {

            startTrip(msg);

        } else if (msg.sameKind("sayHello")) {

            sayHello(msg);

        } else if (msg.sameKind("sendSelf")) {

            sendSelf(msg);

        } else if (msg.sameKind("sayClone")) {

            setText("I'm clone"); // сказать, что я клон

        } else if (msg.sameKind("dialog")) {

            dialog(msg);

        } else {

            return false;

        }

        return true;

    }

 

    // Рапортовать по прибытии  домой

    public void atHome(Message msg) {

        setText("I'm back.");

    }

 

    // Начать путешествие!

    public synchronized void startTrip(Message msg) {

        try {

StringTokenizer addr_seq = new StringTokenizer( (String)msg.getArg() );

String addr, itin_str=null;

 

if( addr_seq.hasMoreTokens() ) {

addr = new String( addr_seq.nextToken() );

itin_str = new String( ((String)msg.getArg()).substring(addr.length()) );

            System.out.println( "go to ->" + addr );

             System.out.println( "itinerary: " + itin_str );

             itinerary.go( addr, new Message("sayHello", itin_str) );

}

        } catch (Exception ex) {

            ex.printStackTrace();

        }

    }

 

    // Сказать hello (текстовое  сообщение от юзера)!

    public void sayHello(Message msg) {

        setText(message);

 

        waitMessage(worktime * 1000); // задержка, чтобы успеть прочитать

 

        try {

StringTokenizer addr_seq = new StringTokenizer( (String)msg.getArg() );

String addr, itin_str=null;

 

if( addr_seq.hasMoreTokens() ) {

addr = new String( addr_seq.nextToken() );

if( ((String)msg.getArg()).indexOf(' ') == -1 )

itin_str = new String(" ");

else

itin_str = new String( ((String)msg.getArg()).substring( addr.length() +

((String)msg.getArg()).indexOf(' ')+1 ) );

}

else

         addr = new String(home);

 

            System.out.println( "go to -> " + addr );   //      для

            System.out.println( "itinerary: " + itin_str );  //    отладки

 

            setText("I'll go to... " + addr );

            waitMessage(1000);

           itinerary.go( addr, new Message( ((itin_str==null)? "atHome": "sayHello"), itin_str) );

Информация о работе Мультиагентные платформы и их применение в сетевых задачах