Главная страница
Навигация по странице:

  • МОДЕЛЬ Создайте новую модель Сегрегация

  • КЛАСС АКТИВНОГО ОБЪЕКТА – PERSON

  • Дополнительные

  • . КЛАСС АКТИВНОГО ОБЪЕКТА – MAIN

  • Количество свойствах вложенного объекта environment, на вкладке Основные, следует поставить галочку в поле Выполнять шаги

  • Дискретное2D

  • Динамические

  • . ФУНКЦИОНИРОВАНИЕ МОДЕЛИ

  • Агент

  • null ) {счастье = true

  • Действие на шаге

  • Статистика

  • Рис. 12.2 Для отображения статистических данных можно использовать элементы из палитры Статистика

  • Основные

  • Внешний вид

  • задание 8. ЗАДАНИЕ 8. Модель сегрегации т. Шеллинга практическое задание


    Скачать 187.68 Kb.
    НазваниеМодель сегрегации т. Шеллинга практическое задание
    Анкорзадание 8
    Дата26.04.2023
    Размер187.68 Kb.
    Формат файлаdocx
    Имя файлаЗАДАНИЕ 8.docx
    ТипДокументы
    #1090694

    ЗАДАНИЕ 8

    МОДЕЛЬ СЕГРЕГАЦИИ Т.ШЕЛЛИНГА

    ПРАКТИЧЕСКОЕ ЗАДАНИЕ

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

    ОПИСАНИЕ ПРОБЛЕМЫ

    Модель сегрегации Шеллинга – классическая агентная модель системы, способной к самоорганизации. Две социальные группы, например, две различные расы; мужчины и женщины; курящие и некурящие и т.д. помещаются на шахматную доску, где каждая клетка представляет собой дом, в котором может находиться не больше одного человека.

    Человек счастлив, если определенный процент его соседей принадлежит к той же социальной группе. Счастливые люди остаются на месте, в то время как несчастливые перемещаются на другие свободные места.

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


    МОДЕЛЬ

    Создайте новую модель Сегрегация на основе шаблона Агентное моделирование. Начальное количество агентов установите 9000. Выберите тип пространства Дискретное, остальные параметры оставьте без изменения.

    КЛАСС АКТИВНОГО ОБЪЕКТА – PERSON

    Откройте диаграмму класса Person, вы увидите небольшой квадратик в начале координат. Увеличьте масштаб для упрощения работы и выделите мышью этот квадрат. Во вкладке Дополнительные панели свойств укажите расположение по осям X и Y: 0 и 0, а ширину и высоту: 3 и 3, соответственно.

    Перейдите на вкладку Динамические и в поле Цвет заливки напишите: color.

    Теперь, нужно объявить этот параметр color типа Color со значением по умолчанию:

    randomTrue( 0.5 ) ? Color.blue : Color.green

    Как Вы помните, это условное выражение присвоит начальное значение параметру color, с вероятностью 50%, либо синий, либо зеленый цвет. Из постановки проблемы видно, что каждый агент может быть «счастлив» и оставаться на месте, или «несчастлив» и стремиться переехать в другое место. Поэтому, в классе Person нужно объявить простую переменную счастье типа boolean. На этом с агентом пока закончим и перейдем к конструированию класса Main.

    . КЛАСС АКТИВНОГО ОБЪЕКТА – MAIN

    Откройте диаграмму класса Main, вы увидите вложенный реплицированный объект people, объект environment и вложенную презентацию (небольшой квадрат), рис. 12.1.


    • свойствах вложенного объекта people мы увидим, что он связан со средой environment и, что в его основе лежит класс Person. Количество агентов можно изменить в поле Количество

    • свойствах вложенного объекта environment, на вкладке Основные, следует поставить галочку в поле Выполнять шаги. На вкладке Дополнительные мы увидим, что наше пространство Дискретное2D, ширина, высота, число строк и столбцов – в соответствии с выбранными параметрами шаблона. Тип соседства – Мурово, то есть соседями считаются


    агенты, располагающиеся в 8 соседних ячейках , в отличие от соседства Евклидово, где соседями считаются агенты, располагающиеся в 4 соседних ячейках.

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

    Для наглядного представления процесса сегрегации создайте презентацию модели, как показано на рис. 12.2. Размер прямоугольника презентации 500 на 650, цвет – зеленый.

    Размер



    прямоугольника рабочего поля 402 на 402, расположение 48 по осям X и Y, цвет – blanchedAlmond .

    Рис 12.1

    Для того, чтобы расположение агентов совпало с рабочим полем, переместите презентацию агента(небольшой квадрат) в позицию 50 по осям X и Y.

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

    порог = limitMin( 0, порог - 0.01 );

    setControlValueToDefault( slider );

    для кнопки «+» первая строка должна выглядеть иначе:

    порог = limitMax( порог + 0.01, 1 );

    Здесь метод limitMin возвращает порог - 0.01, если он больше или равен 0, соответственно limitMax возвращает порог + 0.01, если он меньше или равен 1

    Метод setControlValueToDefault устанавливает бегунок слайдера в соответствии с измененным параметром порог.

    • нижней части презентации напишите текст: Предпочтение иметь соседей того же самого цвета:, а немного правее введите текст, показывающий значение параметра порог. Для этого во вкладке Динамические в поле Текст: введите:

    format(порог * 100) + "%" –

    это позволит избавиться от десятичных значений и добавит знак процентов к числу. Для того чтобы презентация открывалась в окне, совпадающем по размерам с нашей презентацией, откройте свойства эксперимента Simulation и на вкладке Окно измените ширину и высоту на значения 500 и 650, соответственно. На вкладке Презентация выберите режим Виртуальное время – модель будет выполняться с максимальной скоростью.

    . ФУНКЦИОНИРОВАНИЕ МОДЕЛИ

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

    int рядом = 0;
    Agent[] соседи = getNeighbors(); // строим массив агентов - соседей if( соседи == null ) {
    счастье = true; // нет соседей - это тоже хорошо
    return;} // выход
    for( Agent a : соседи ) // перебираем весь массив соседей
    if(((Person)a).color == color)//сравниваем цвет соседа со своим
    рядом++; // если цвет совпал - суммируем
    //счастлив, если процент того же цвета больше/равен заданному порогу:
    счастье = (рядом >= get_Main().порог * соседи.length);

    В поле Действие на шаге напишите следующий код

    if(!счастье && randomTrue(0.3))//если не счастлив, то с вероятн. 0,3 jumpToRandomEmptyCell(); // переход на другую свободную клетку

    Комментарии можно не вводить.

    СБОР СТАТИСТИКИ

    Реплицированные объекты поддерживают удобный способ сбора статистики.

    Поддерживаются следующие типы функций сбора статистики:

    • количество,



    • сумма,

    • среднее,

    • минимальное,

    • максимальное.

    Откройте свойства реплицированного объекта people и перейдите на вкладку Статистика. Нажмите на кнопку Добавить ф-ю сбора статистики. В появившиеся поля введите:

    • Имя: people_Сч



    • Тип: кол-во



    • Условие: item.счастье

    Текущий элемент реплицированного объекта (т.е. тот, по которому в текущий момент

    проходит

    итерационный цикл



    функции сбора статистики ) доступен в этих полях как item.

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

    Заданную функцию

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

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

    будет написать

    people_Сч().

    Аналогичным образом добавьте функцию

    сбора статистики

    people_Не для «несчастных» людей.

    Рис. 12.2

    Для отображения статистических данных можно использовать элементы из палитры Статистика. Перенесите на презентацию элемент Круговая диаграмма. В свойствах на вкладке Основные нажмите на кнопку Добавить элемент данных и в появившиеся поля введите:



    • Заголовок: Несчастливы



    • Значение: people.people_Не()



    • Цвет на Ваше усмотрение

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

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



    написать администратору сайта