|  Индивидуальные задания
            
               Описание задания Реализовать многоагентную систему для предоставления товаров или услуг клиентам. Многоагентная система должна содержать несколько видов агентов. Например, агенты, предоставляющие товар или услуги за определенную стоимость; агенты, покупающие указанные товары или услуги; агенты-посредники между агентом-продавцом и агентом — конечным покупателем. Каждый агент получает начальную информацию от пользователя. Общение пользователя и агента происходит при помощи графического пользовательского интерфейса. Один пользователь вводит описания товаров и услуг, а другой пользователь вводит информацию о том, какой товар или услугу необходимо приобрести.
 
 
            
              
                 Варианты индивидуальных заданий 
            Бронирование авиа-, автобусных или железнодорожных билетов. В решении участвуют два агента. Агент-кассир предоставляет информацию о свободных билетах и продает билеты. Агент-покупатель осуществляет поиск необходимых рейсов и бронирует билеты. Расписание вводится Диспетчером. Информация о необходимом билете вводится пользователем-покупателем. Первоначальное состояние билетов — все свободны.
 
Бронирование путевки у туристических операторов. Агент-продавец является представителем туроператора и предоставляет информацию о туристических путевках. Агент-покупатель является представителем покупателя туристической путевки. Информация о путевках вводится туроператором. Информация о необходимой путевке вводится пользователем-покупателем.
 
 
            Сбор информации для покупки сотового телефона. Агент-продавец является представителем продавца сотовых телефонов и представляет информацию о моделях, ценах и других свойствах телефонов. Агент-покупатель — представителем покупателя и осуществляет поиск и покупку телефона требуемых свойств. Информация о товарах размещается в каталоге товаров и изменяется пользователем-продавцом. Информация о требуемой покупке вводится пользователем-покупателем.
 
Сбор информации для покупки мебели. Агент-продавец является представителем продавца мебельного магазина и предоставляет информацию о товаре, присутствующем в магазине. Пользователь-продавец вводит информацию о предлагаемом товаре. Агент-покупатель является представителем покупателя мебели. Пользователь-покупатель сообщает своему агенту информацию о требуемой мебели.
 
Сбор информации для покупки недвижимости. Агент-риэлтер-продавец является представителем риэлтерской фирмы и предоставляет информацию о продаваемых объектах недвижимости, ценах и свойствах. Пользователь-риэлтер вводит информацию о предлагаемых объектах недвижимости: квартиры, коттеджи, гаражи, офисы и т.д. Агент риэлтер-покупатель является представителем риэлтерской фирмы, осуществляющей поиск объектов недвижимости для своих клиентов. Пользователь-риэлтер в данном случае передает информацию своему агенту о требуемых объектах недвижимости для своих клиентов. Агент- покупатель является представителем покупателя недвижимости. Конечный покупатель передает информацию своему агенту о требуемом объекте недвижимости.
 
Сбор информации для покупки автомобиля. Агент-продавец является представителем салона по продаже автомобилей и предоставляет информацию об автомобилях. Пользователь-продавец вводит информацию о продаваемых в салоне автомобилях. Агент-покупатель является представителем покупателя автомобиля. Пользователь-покупатель передает информацию своему агенту о требуемом автомобиле.
 
Поиск места работы. Агент-наниматель является представителем кадрового агентства и предоставляет информацию о вакантных местах. Сотрудник агентства вводит информацию о существующих вакансиях на рынке труда. Агент-работник является представителем работника, нанимающегося на работу. Пользователь-работник передает информацию своему агенту о требуемой должности, уровне заработной платы, расположении, условиях труда и т.д.
 
Распределение студентов на предприятия. В решении задачи участвуют три вида агентов: агент-наниматель, агент — ответственный за распределение, агент—студент. Агент-наниматель предоставляет информацию о предприятии, должностях и условиях труда. Агент — ответственный за распределение осуществляет поиск мест распределения студентов. Агент-студент предоставляет информацию о прописке, среднем балле студента, его предпочтениях и другую информацию, необходимую для выбора места распределения.
 
 
 
 
 
            
               Источники 
            Giovanni Caire (TILAB, formerly CSELT). Руководство JADE Copyright (C) 2003 TILab S.p.A.
 
Швецов А.Н. Агентно-ориентированные системы: от формальных моделей к промышленным приложениям / Всероссийский конкурсный отбор обзорно-аналитических статей по приоритетному направлению "Информационно-телекоммуникационные системы", 2008. - 101 с.
 
Разработка мультиагентных приложений с использованием платформы JADE / Е.В.Симонова, П.О.Скобелев, И.А.Сюсин. Самара: ИУНЛ ПГУТИ. 2012 – 82 с.
 
Модели представления и обработки данных и знаний. Лабораторный практикум: учебно-методическое пособие; под ред. В. В. Голенкова: В 3 ч. Ч. 2 / Т. Л. Лемешева, Н. А. Гулякина, А. И. Толкачев. — Минск: БГУИР, 2008. – 46 с.: ил.
 
 
 
  Приложение 1
 /*****************************************************************
 
 JADE - Java Agent DEvelopment Framework is a framework to develop
 
 multi-agent systems in compliance with the FIPA specifications.
 
 Copyright (C) 2000 CSELT S.p.A.
 GNU Lesser General Public License
 Эта библиотека является свободным программным обеспечением; вы можете распространять
 
 и/или изменять его в соответствии с условиями GNU Lesser General Public
 
 License, опубликованной Фондом свободного программного обеспечения,
 
 Версия 2.1 License.
 Эта библиотека распространяется в надежде, что она будет полезной,
 
 но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии
 
 Или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. Смотрите GNU
 
 Lesser General Public License для более подробной информации.
 You should have received a copy of the GNU Lesser General Public
 
 License along with this library; if not, write to the
 
 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 
 Boston, MA 02111-1307, USA.
 
 *****************************************************************/
 package ru.agentlab;
 import jade.core.AID;
 import java.awt.*;
 
 import java.awt.event.*;
 
 import javax.swing.*;
 /**
 
 @author Giovanni Caire - TILAB
 
 */
 
 class BookSellerGui extends JFrame {
 
 private BookSellerAgent myAgent;
 
 
 
 private JTextField titleField, priceField;
 
 
 
 BookSellerGui(BookSellerAgent a) {
 
 super(a.getLocalName());
 
 
 
 myAgent = a;
 
 
 
 JPanel p = new JPanel();
 
 p.setLayout(new GridLayout(2, 2));
 
 p.add(new JLabel("Book title:"));
 
 titleField = new JTextField(15);
 
 p.add(titleField);
 
 p.add(new JLabel("Price:"));
 
 priceField = new JTextField(15);
 
 p.add(priceField);
 
 getContentPane().add(p, BorderLayout.CENTER);
 
 
 
 JButton addButton = new JButton("Add");
 
 addButton.addActionListener( new ActionListener() {
 
 public void actionPerformed(ActionEvent ev) {
 
 try {
 
 String title = titleField.getText().trim();
 
 String price = priceField.getText().trim();
 
 myAgent.updateCatalogue(title,Integer.parseInt(price));
 
 titleField.setText("");
 
 priceField.setText("");
 
 }
 
 catch (Exception e) {
 
 JOptionPane.showMessageDialog(BookSellerGui.this,
 
 "Invalid values. "+e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
 
 }
 
 }
 
 } );
 
 p = new JPanel();
 
 p.add(addButton);
 
 getContentPane().add(p, BorderLayout.SOUTH);
 
 
 
 // Make the agent terminate when the user closes
 
 // the GUI using the button on the upper right corner
 
 addWindowListener(new WindowAdapter() {
 
 public void windowClosing(WindowEvent e) {
 
 myAgent.doDelete();
 
 }
 
 } );
 
 
 
 setResizable(false);
 
 }
 
 
 
 public void showGui() {
 
 pack();
 
 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
 
 int centerX = (int)screenSize.getWidth() / 2;
 
 int centerY = (int)screenSize.getHeight() / 2;
 
 setLocation(centerX - getWidth() / 2, centerY - getHeight() / 2);
 
 super.setVisible(true);
 
 }
 
 }
 
  Приложение 2/**
 
 Внутренний класс PurchaseOrdersServer.
 
 Это поведение, используемое агентом Book-seller для обслуживания
 
 входящих запросов (заказов на покупку) от агентов покупателя.
 
 Агент продавец удаляет купленную книгу из своего каталога
 
 и отвечает сообщением INFORM для уведомления покупателя о том, что
 
 покупка была успешно завершена.
 
 */
 private class PurchaseOrdersServer extends CyclicBehaviour {
 
 public void action() {
 
 MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.ACCEPT_PROPOSAL);
 
 ACLMessage msg = myAgent.receive(mt);
 
 if (msg != null) {
 
 // ACCEPT_PROPOSAL Message received. Process it
 
 String title = msg.getContent();
 
 reply = msg.createReply();
 Integer price = (Integer) catalogue.remove(title);
 
 if (price != null) {
 
 reply.setPerformative(ACLMessage.INFORM);
 
 System.out.println(title+" sold to agent "+msg.getSender().getName());
 
 }
 
 else {
 
 // The requested book has been sold to another buyer in the meanwhile .
 
 reply.setPerformative(ACLMessage.FAILURE);
 
 reply.setContent("not-available");
 
 }
 
 myAgent.send(reply);
 
 }
 
 else {
 
 block();
 
 }
 
 }
 
 } // End of inner class OfferRequestsServer
 
 
 |