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

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

        } 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.preferredSize());

        }

        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.worktime);

    }

 

// Размещаем компоненты

    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;

    }

}

 

 

 

 

 

 




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