Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Поведение мобильного агента в мультиагентной среде.doc
Скачиваний:
17
Добавлен:
02.05.2014
Размер:
434.69 Кб
Скачать

6 Предложенный алгоритм решения задачи

При написании модели сначала необходимо было разработать алгоритм. Алгоритм решающий поставленную задачу следующий:

Шаг 1. Если настало время прихода в систему игрока, то поместить данного игрока в очередь.

Шаг 2. Если настало время обслуживание игрока, то сделать ставку на определённое событие.

Шаг 3. Если событие свершилось, то рассчитать выигрыш игроков.

Шаг 4. Если событие не свершилось, то рассчитать прибыль букмекера.

Шаг 5. Изменить время моделирования на единицу.

Шаг 6. Рассчитать все выходные параметры (статистику)

Шаг 7. Если НЕ настало время окончания моделирования, то перейти на шаг 1, иначе перейти на шаг 8.

Шаг 8. Завершить моделирование.

7 Описание программы

7.1 Используемые технические средства, вызов и загрузка

Для успешной работы с представленной программой «Букмекерская контора» необходим персональный компьютер на базе микропроцессора Intel 80386 и выше, VGA совместимая видеокарта, накопитель на жестком или гибком магнитном диске и файл KYRSOV.mdl. Требования к операционной системе ограничены требованиями программы MATLAB 6.1, то есть Windows 9x/2000/Me/XP и выше.

Исходный текст программы находится в файле под именеми KYRSOV.mdl и содержит 44 875 байт.

Для запуска программы из среды разработки MATLAB6.1 необходим исходный код программы KYRSOV.mdl. Нужно с помощью пункта Open меню File открыть файл KYRSOV.mdl (файлы *.mdl) и запустить программу нажатием клавиши Ctrl+T или щелкнув мышью на значке запуска моделирования панели инструментов Simulink.

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

7.2 Описание классов и объектов программной среды

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

В программе используются такие объекты:

а) Блок Display. Он предназначен для вывода на экран численных значений величин, которые фигурируют в модели. Блок имеет 4 параметра настройки. Первый - Format - задает формат вывода; формат выбирается с помощью выпадающего меню, которая содержит 5 пунктов: short, long, short_e, long_e, bank. Следующие два параметры используются так же, как и одноименные параметры блока Scope:

  • Decimation - определяет периодичность вывода значений в окне Display;

  • Переключатель Floating display разрешает указывать способ использования блока Display в блок-диаграмме;

  • Поле Sample Time задает величину шага модельного времени, т.е. дискретность вывода данных в окно Display.

Блок Display может использоваться для вывода как скалярных, так и векторных данных. Если величина, которая отображается, является вектором, то начальный формат блока изменяется автоматически. Об изменении формата говорит маленький черный треугольник, который появляется в нижнем правом уголке блока. Для каждого элемента вектора создается свое мини-окно, но чтобы они стали, видимы, необходимо «растянуть» изображение окна.

б) Constant для определения постоянных величин моделирования, например времени обработки заявок.

в) Unit Delay для внесения задержек в систему передачи данных. Параметрами настройки для этого блоку является:

  • Начальное значение сигнала (Initial condition) - значение амплитуды сигнала в момент активизации блока; оно может быть задано или в виде числовой константы, или в виде обчислюваного выражения.

  • Величина задержки (Sample time) - определяет число шагов модельного времени, на протяжении которого сохраняется значение сигнала, который поступил на вход блока; как и первый параметр, может задаваться в любой форме, но значение параметра должно быть положительным.

г) Блок Discrete-Time Integrator выполняет добавление интервалов времени между поступлениями входного сигнала. Блок может быть использован для управления логикой работы отдельных компонентов ІМ или модели в целом.

В частности, суммарная продолжительность работы некоторой подсистемы может служить условием «досрочного окончания» моделирование. Блок имеет следующие параметры настройки:

  • метод интеграции, которая используется (Integrator metod); с помощью выпадающем меню пользователь может выбирать один из трех методов: прямой метод Ейлера; обратный метод Ейлера; метод трапеций;

  • подключение дополнительного управляющего сигнала (External reset);

  • использование внешней установки начального значения входного сигнала (Initial condition source).

Параметр External reset может принимать следующие значения:

  • none - дополнительный управляющий сигнал не используется;

  • rising - для управления используется возрастающий сигнал;

  • falling - для управления используется ниспадающий сигнал;

  • either - на работу блока влияет любое изменение амплитуды управляющего сигнала.

Параметр Initial condition source принимает одно из двух значений:

  • internal - используется собственная установка начального значения сумматора;

  • external - установка начального значения проводится извне.

д) Блок Sum может использоваться в двух режимах:

  • добавление входных сигналов (в том числе с разными знаками);

  • суммирование элементов вектора, который поступает на вход блока.

Для управления режимами работы блока используется единый параметр настройки - List sings (Список знаков).

Значение этого параметра могут задаваться одним из трех способов:

- в виде последовательности знаков «+» и «-»; при этом число знаков определяет число входов блока, а сам знак - полярность входного сигнала;

- в виде целой положительной константы (больше 1); ее значение ровно числу входов блока, а все входы считаются положительными (например, введение константы 4 аналогичное введению «списка знаков» в форме ++++);

- в виде символа «|», который указывает на использование блока во втором режиме.

е) Блок Product разрешает выполнять умножение или деление нескольких входных сигналов (величин). Как параметры настройки могут указываться число входов блока и вид выполняемой операции.

Определение значений этих параметров аналогично настройке блока Sum из раздела Линейные элементы. Как знак операции умножения используется символ «*», а для указания операции деления - символ «/».

Если как значение параметра настройки блока ввести «|», то будет исчисляться создание элементов входного вектора (в этом случае на изображении блока выводится символ Р).

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

є) Блок Logical Operator содержит набор основных логических операций: AND (операция логического умножения «І»), OR (логическое составление «ИЛИ»), NAND («НЕ»), NOR («НЕ»), XOR (составление по модулю 2), NOT (операция логического возражения). Выбор необходимой функции выполняется с помощью «выпадающем меню»; имя функции отображается на иконке блока. Другим параметром настройки блока есть число аргументов логической операции, т.е. число входных портов блока (Number input роrts). Его значение вводится в строке редактирования и должно быть натуральным числом. Максимально допустимое число входов блока практически не ограниченно.

Блок Relational Operator реализует операции отношения над двумя входными сигналами: < > (, ( == (тождественно) != (не равняется). Конкретная операция выбирается при настройке параметров блока благодаря «выпадающем меню». Знак операции выводится на изображении блока.

ж) Блоки In (входной порт) и Out (исходный порт) обеспечивают «линейную связь» между подсистемами модели по информации.

і) Блок Subsystem (Подсистема) является «заготовкой» для создания подсистемы. Подсистема - это достаточно самостоятельная S-модель более низкого уровня, которая, в свою очередь, может содержать подсистемы произвольного уровня вложенности.

7.3. Описание функционирования подсистем

Подсистема Normal представляет собой реализацию нормального распределения случайной величины средствами Simulink. На ее вход поступает время моделирования, а из единого выхода снимается величина нормально распределенная с математическим ожиданием и дисперсией заданными в середине блока константами M1, М2 и D соответственно. Величественная математического ожидания зависит от времени моделирования. Если он меньший половины общего времени, то используется константа M1, если больший или равняется - константа М2. Таким образом в модели организовывается два пика в нормальном распределении, которые отвечают максимумам активности абонентов мультиагентной сети в 8 и 17 часах. Для этого в подсистеме используется блок Multiport Switch, главной задачей которого является выбор с N входных сигналов на основе еще одного сигнала. В данном случае есть две входных величины - М1 и М2, а выбор осуществляется на основе времени моделирования.

Еще одним специфическим блоком использованным в модели есть Math Function. Он реализует математическую функцию. В подсистеме использованы функции экспоненты, квадратного корню и возведение к квадрату. Блок имеет два параметра - Function, что задает тип функции и Output signal type, что задает тип исходного сигнала (комплексное число, действительное или автоматическое определения).

Подсистемы Work multi systems и Multi agent statistic представляют собой аналоги стандартного блока Queue за той лишь разности, которые в очередь поступают и снимаются из очереди ровно столько транзактов, сколько в данный такт поступает на вход In. Максимальная длина очереди задается внутри блока константой Max. Данная подсистема разрешает организовать поодиночне поступление пассажиров и их групповой выход из очереди вследствие отправки заполненного такси.

Блоки Multi system и Multi agent є генераторами транзактів. В середине себя они используют подсистему Normal, которая генерирует нормально распределенную случайную величину. По совпадению этого периода на выход блока подается единичный сигнал, который символизирует о появлении транзакта. На единый вход блока подается модельное время, которое используется в подсистеме Normal.

Еще один нестандартный блок, который используется в модели - Quantity of MA. Он выдает на выходе единицу, если на входе получает 0 и число 2 - если на входе 1. Выход блок присоединен к входу Push блока Multi agent statistic, что символизирует количество не подключённых абонентов и разрешает снимать из очереди сразу 2 абонента.

Подсистема Statistic подсчитывает основную статистику системы. На ее входы поступают данные о моментах пика активности абонентов, а также о количестве абонентов сети и операторов.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1 Гультяев А.К. Имитационное моделирование в среде Windows: практическое пособие. К.: "Наука", 1998.

2. Гаврилова Т. А., Хорошевский В. Ф.

Базы знаний интеллектуальных систем. – СПб.: Питер, 2000.

  1. Смирнов А. В., Шереметов Л. Б.

Многоагентная технология проектирования сложных систем.

  1. Лекция 12: Тенденции развития систем искусственного интеллекта

  2. Дебора де Во. Распределенные агенты SRI обеспечивают гибкость

  3. И.В.Черных.Simulink Инструмент моделирования динамическихсистем. http://matlab.exponenta.ru