Главная » Просмотр файлов » Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5

Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 33

Файл №1124147 Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5) 33 страницаЮ. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147) страница 332019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 33)

Например, выберем их случайно. В поле Код инициализации окна Код корневого объекта иа) и введите цикл, в котором элементы массива а11пе устанавливаются в истину либо ложь случайно, в зависимости от топ>, будет ли сгенерированная случайная величина, равномерно распределенная между 0 и 1, меньше некоторого порога: 1от( 1пт з=о> 1<НЗ 1++ ) тот( 1пт 3=0з 3<Из )++ а11зте[1][З] = тапооазттие(0.2)з ИСПОЛЬЗОВаННая ЗДЕСЬ фуНКцИя тапао. ттпе(аопъъе т) ВОЗВращаЕт ЗНаЧЕНИЕ стае с вероятностью т (0<т<1). Код )ауа, записанный в поле Код инициализации проекта, выполняется до запуска модели на выполнение. Поэтому если запустить модель сейчас, в поле анимации можно наблюдать случайно расположенные живые ячейки (их приблизительно 20 %). Сравните свою МсдЕЛЬ С МОДЕЛЬЮ Ъ11еаа 8.1.4.

Алгоритм изменения состояния ячеек Рассмотрим теперь, как изменять состояния всех прямоугольников на кажлом шаге выполнения модели. Сделать это просто: сначала подсчитаем для каждого прямоугольника число его живых соседей, а потом изменим состояние каждого прямоугольника в соответствии с правилами игры "Жизнь".

Это самый простой и ясный алгоритм, который, однако, не будет оптимальным по быстродействию. Тем не менее, мы реализуем именно его, чтобы на всех шагах разработки оставалась понятной идея алгоритма. Для реализации изменения состояний ячеек в нашей модели в корневом объекте маъп требуются дополнительные переменные и функции. В поле ДОПОЛНИтЕЛЬНЫй КОд КЛаССа ОКНа Кпд ОбЪЕКта Ма1п ВВЕднтс СПЕцнфИКацнЮ двумерного целого массива поппе, в котором будем подсчитывать число живых соседей соответствуюших ячеек: 1пт [) [] сапог = пеи з.пт [н] [н] з Глава 8.

Примеры мс)делей, разрабо?аннык с использованием языка ./вуа 181 Будем считать, что наша решетка тороидальна, например, следующей справа ячейкой для граничной правой ячейки является самая левая ячейка того же ряда. Иными словами, л(обой индекс элемента массива понос, который выходит за границу размерности, берется по модулю н. Поскольку мы рассматриваем только ближайших окружаюших соседей, выход за границу размерности может быть только на [. Поэтому формально в торе пересчет значений любого индекса 1, который может принимать любое значение в диапазоне от -] до н, можно в вычислениях определить так: (' О)? н-1з (1==и)? О: з; ДЛя ОПрЕдЕЛЕНИя ЭТОГО ИНдЕКСа ВасднтЕ В ОЬЬЕКт На1п аЛГОрИтМИЧЕСКуЮ функцию СЯ, которую назовем согпв. Ее аргументом является один целый параметр 1. Функция возвращает целое значение, и ее тело определяется так: гепппз (з<0)? Н-1з (з.==и)? Оз з Теперь легко определить функцию, подсчитываюшую живых соседей каждой ячейки.

Назовем ее соппсл11?ене10ььогв. Функция эта без параметров, результатом ее работы является заполненный массив сопле числа живых СОСЕдсй Каждсй яЧЕйКИ, ПсдСЧИтаННЫй ПО МаССИВу а11?е ВСЕХ ЖИВЫХ ЯЧЕЕК. Эту функцизо удобно определить в поле Дополнительный код класса окна Код объекта ма1п. При записи программного кода используем комментарий — пояснявший текст, который начинается с двух символов слэш // и до конца строки: // Подсчет числа живых соседей вокруг каждой ячейки рпЬ11с уо10 соипоя11?еие10ЬЬогв() ( гол( 1пс 1=0з 1<из 1++ ) лог( 1пе З=ОЗ З<НЗ З++ ) ( соипс [з.] [1 ] = а11уе(1) [3 ] ? -1 зОз //-1, если сама ячейка живая гог( 1пп К=-1," Х<2з Х++ ) //соседи по вертикали бог( 1по ш=-1з ш<2з ше+ )//соседи по горизонтали сочло[1][З] += а11?е(Соков(1+)з)][соков(З+ш))? 1:Оз Функция сьапяеььасев определяет новые состояния ячеек решетки. Эта функция, собственно, реализует логику игры "Жизнь": // Определяем новые состояния ячеек решетки риЬ11с уо10 сиапяеавапев( ) ( Ьоо1еап спавшее = га1вез // Параметр определяет, будет ли //изменено состояние хотя бы у одной ячейки соиптл11чеие1сЬЬогв()з // сначала считаем живых соседей гог(1пс 1=0з 1<из 1++) //затем определяем новое состояние Часть!/.

Средства Апу[.одзс для имитационного моделирования систем Гог( 1пс 3=0( ]<из 3++ )// мертвая, имеющая 3 живых соседей, // оживает ье ( !а11че[11[31 Ы соиле[11[3] == 3] а11че[1][3]= с)запдеб = Езпез //живая, имеющая 2 или 3 живых соседей, не меняет состояния е1ве ьа (а11че[з ] [3 ] аа (соипс [з 1[3 1 ==2 ) ) соиле [1] [3 ) ==3) ) з // во всех остальных случаях ячейка умирает или остается мертвой е1ве ( 1т(а11не[11[З)) с)запдес)=зспез //была живая — учитываем а11че[11[31=га1вез ) //Останавливаем модель, если состояния всех ячеек не изменились 'т (!савичей) Епо1пе.т1пьз)з()з Работа модели состоит в том, что на каждом шаге по времени вычисляется новое состояние всей решетки.

Иными словами, на кюкдом таком шаге должна вызываться функция с)запяевеасев, только что определенная нами в поле Дополнительный код класса. Вызов этой функции на каждом временном шаге можно выполнить при срабатывании циклического таймера. В поле редактора корневого объекта наьп введите новый таймер (((.'з))), определите его циклическим с таймаутом 1.0 и в поле Действие при срабатывании этого таймера введите вызов функции с)запяевеаеев.

сйапдеясаеев()з После запуска модели в поле анимации из случайного начального состояния на каждом шаге будут порождаться разнообразные графические фигуры (рис. 8.2). СРавните свою модель с моделью ььгеса ез. Рис. 8.2. Одно из промежуточных осговний в игре "Жизнь" Глава 8. Лримеры моделей, разрабоганнык с использованием языка.lауа 163 8Л.5. Улучшение модели Для того чтобы модель приобрела законченный вид, можно залить поле анимации каким-либо цветом и в левую еп) часть добавить поясняющий текст.

Сделаем еше одно добавление в модель. На многих сайгах в Интернете обсужда(отся правила игры "Жизнь" и приводятся начальные состояния решетки, которые при проигрывании в соответствии с правилами порождают последовательность интересных осциллируюших фигур. Олним из примеров такого ресурса является сайт по математике: зу(в)у.п(ай).сош/в[в([евЬ/еопдегз/Мй/П[е.Ь(в[. Вставим в модель воэможность установки предопределенной фигуры в качестве начального состояния решетки. Для этого введем в левую половину поля анимации элемент Кнопка (Я), которую сделаем прозрачной (без заливки цветом). В поле Реакция иа событие окна свойств этой кнопки поместим следующие операторы: Гсг(1пс 1 = 0; 1<Н; 1гг) Еог(гпс б = 0~ З<ЬН 1+в) а11ее [1)[1] = Еа1зе," а11ее[22)[23) = Сгсе; а11ее[22)[24) = Егие; и т.

л. Рис. В.З. Визуализация игры "Жизнь" Часть //, Средства Апу/ од~одра имиициоииого моделирования систем Первый оператор — это вложенный цикл, он очищает решетку (устанавливает состояние всех ячеек поля анимации в га1ав). Далее несколько операторов устанавливают в схив состояния тех ячеек, которые составляют нужную нам фигуру. Для удобства пользователя в поле введенной кнопки можно эту фигуру изобразить с помощью закрашенных квадратиков (см. рис. 8.3), хотя, конечно, это изображение в нашей модели не связано с изменением состояния ячеек поля анимации. Таких фигур можно сделать несколько. Нажатие на эту кнопку (либо при остановленной, либо при работающей модели) приведет к выполнению связанного с кнопкой кода, в,результате чего в окне анимации в поле решетки установятся в истинное значение состояния только выбранных ячеек.

Сравните свою модель с моделью ьъгааап аа. 8.2. Модель "Сбор урожая" (Нагчез$) Подробный анализ этой модели весьма полезен. Так же, как и многие другие модели, которые анализируются в данном пособии, эта модель интересна не сама по себе: она интересна той техникой, которая использовалась при ее построении. В модели применены методологические приемы, которые могут быть использованы и при разработке других моделей. В частности, при построении этой модели использованы интересные методы абстрагирования, имеющие достаточную общность.

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

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее