anylogic за 3 дня pdf
Книга «AnyLogic за 3 дня» – теперь на русском
Новое пособие по AnyLogic от разработчиков теперь доступно на русском языке. В основе книги – практические упражнения с использованием основных методов имитационного моделирования. Читатели познакомятся с базовой функциональностью AnyLogic на примерах модели потребительского рынка, распространения эпидемии и производственного цеха. Книгу можно изучать самостоятельно, выполняя практические задания в бесплатной версии AnyLogic – Personal Learning Edition.
Автор книги – Илья Григорьев, руководитель отдела обучения. Он ведёт тренинги по обучению работе в AnyLogic, которые проводятся по всему миру.
Пособие будет полезно всем, кто только начинает знакомиться с имитационным моделированием в AnyLogic.
Популярные теги
Похожие материалы
Новое издание книги The Big Book of Simulation Modeling – часть 5
Мы продолжаем публиковать самую полную книгу о многоподходном моделировании и AnyLogic. Книга была обновлена под последнюю версию программы, AnyLogic 8. Выкладываем её в блог по частям; главы доступны на нашем сайте в разделе Книги.
Новая глава книги The Big Book of Simulation Modeling
Мы продолжаем публиковать самую полную книгу о многоподходном моделировании и AnyLogic. Книга была обновлена под последнюю версию программы, AnyLogic 8. Выкладываем её в блог по частям; все главы доступны на нашем сайте в блоге и разделе «Книги».
Имитационное моделирование в управлении проектами
Мы выпустили перевод главы из книги Evolving Toolbox for Complex Project Management. Эта глава о том, как имитационное моделирование используется при управлении проектами. В ней мы на практических примерах показываем, почему компании выбирают ИМ и какие методы используют для создания моделей.
Новое издание книги The Big Book of Simulation Modeling – часть 3
Мы продолжаем публиковать – по главам – самую полную книгу о многоподходном моделировании и AnyLogic. Первая обновлённая глава в этой статье – о диаграммах состояний в моделях. Вторая глава посвящена созданию 3D-анимации.
Новое издание книги The Big Book of Simulation Modeling – часть 2
Мы продолжаем публиковать самую полную книгу о многоподходном моделировании и AnyLogic. Книга была обновлена под последнюю версию программы, AnyLogic 8. Выкладываем её в блог по частям; предыдущие главы доступны для скачивания в блоге.
Новое издание книги The Big Book of Simulation Modeling – часть 1
Мы начинаем публикацию самой полной книги о многоподходном моделировании и AnyLogic. Книга была обновлена под последнюю версию программы, AnyLogic 8. Выкладываем её в блог по частям; три главы уже доступны для скачивания.
Доступна книга-туториал по anyLogistix
Мы выпустили учебное пособие по работе с anyLogistix. Оно познакомит новых пользователей с интерфейсом программы, научит моделировать цепи поставок, проводить эксперименты с моделями и анализировать результаты. Книга будет полезна для преподавания в вузах и самообучения. Чтобы применить полученные знания на практике, рекомендуем скачать бесплатную версию anyLogistix – Personal Learning Edition.
Вышла обновлённая книга “AnyLogic за 3 дня”
Мы добавили новую главу в книгу “AnyLogic за 3 дня”. Она рассказывает, как построить модель небольшого аэропорта с помощью элементов Пешеходной библиотеки AnyLogic. Вы научитесь задавать логику движения пешеходов, имитировать работу элементов инфраструктуры аэропорта, анимировать модель в 3D и загружать данные в модель из Excel-файла. Остальные главы книги рассказывают о базовой функциональности AnyLogic на примерах модели потребительского рынка, распространения эпидемии и производственного.
Учимся работать в AnyLogic: книги, статьи и видео
Для тех, кто хочет самостоятельно научиться работать в AnyLogic, мы выпускаем бесплатные обучающие материалы. В этом посте собрали книги, статьи, видеоролики и другие материалы, которые помогут начинающим пользователям разобраться в имитационном моделировании, а опытным юзерам – узнать о продвинутых возможностях AnyLogic.
Документация
Если у вас есть вопрос по AnyLogic, скорее всего мы уже ответили на него в разделе Справка в программе (на сайте это раздел Документация). Там же находятся учебные пособия – пошаговые инструкции по созданию моделей, которые основаны на типичных задачах наших бизнес-клиентов. Постройте модели из всех пособий, и вы научитесь базовым навыкам работы в AnyLogic.
Блог AnyLogic
О новых видео, книгах, онлайн-курсах, вебинарах и других обучающих материалах мы рассказываем в блоге. Если вы редко читаете статьи в блоге, подпишитесь на нашу ежемесячную подборку новостей.
А вот самые популярные статьи-разборы моделей, в которых мы учим моделировать в AnyLogic:
Книги
Видео
Научиться моделировать можно с помощью наших вебинаров и обучающих видео. А о том, как ИМ применяется для решения бизнес-задач, наши партнёры и клиенты рассказывают на видео с конференции AnyLogic.
Мы выбрали 5 видео на нашем YouTube-канале, которые рекомендуем посмотреть всем пользователям AnyLogic.
Аналитические статьи
Еще один формат обучающих материалов – аналитические статьи на английском языке. В них рассказываем, как бизнес использует имитационное моделирование, и о новшествах в отрасли.
Мы также проводим вебинары по AnyLogic. Ближайший пройдёт 9 апреля и будет посвящён решению бизнес-задач с помощью ИМ в условиях неопределённостей. Мы расскажем, как применять облачные технологии и ИИ для решения этих задач, а также поделимся кейсами из разных отраслей. Регистрация бесплатная!
Не нашли обучающих материалов на интересующую вас тему? Расскажите в комментариях, о чем бы вы хотели узнать, а мы обязательно учтём, когда будем готовить новые видео, статьи и книги.
Эффективное имитационное моделирование в средах AnyLogic, Java.
Помощь в создании имитационных моделей в среде Anylogiс. Большая база готовых моделей.
По поводу заказа работы обращайтесь либо в личку группы или https://vk.com/e.mihaylov
Алексей Репях запись закреплена
Марина Нечипорук запись закреплена
Жан Касымов запись закреплена
Жан Касымов запись закреплена
Амина Мектепкалиева запись закреплена
Софья Токарева запись закреплена
Допустим, есть популяция «дома» из 20 агентов. В каждом доме популяция «этажи» из 10 агентов. У каждого этажа есть популяция «квартиры» из 5 агентов
И вот если агенту квартира нужно отправить сообщение агенту дом, в котором она находится, как для этого вычленить индекс этого конретного дома?
Заранее спасибо за ответ с:
Лина Сафиуллина запись закреплена
Александр Чухланцев запись закреплена
Александр Пушкин запись закреплена
Софья Токарева запись закреплена
В версиях Anylogic c 8.3.3 пропала кнопка run на странице настроек.
Вот ее код:
if ( getState() == IDLE )
run();
Показать полностью.
getExperimentHost().setPresentable( getEngine().getRoot() );
Для того, чтобы автоматически запускать модель при старте минуя эту страницу, поместите этот код в поле «Код инициализации эксперимента» в свойствах эксперимента.
Интересная математика, как думаете интересна ли была имитационная модель на тему выявление фальсификаций на выборах, основанная на данных исследованиях?
«Медуза»
Дорогие наши красавицы, от всей души хотим поздравить Вас с этим замечательным весенним праздником!
Желаем в чудесный праздник уважения и понимания от коллег, восторга и восхищения от окружающих, любви и теплоты от родных сердец, удовольствия и наслаждения от жизни, приятных сюрпризов и добрых подарков от судьбы. Желаем настоящего женского счастья и неувядаемой чудесной красоты.
Будущее близко. Яндекс молодцы.
Статья об имитационной модели логистического центра. Разбор кейса. Используйте для курсовой или дипломной работы.
Популярная Логистика | Веб-журнал
Статья об имитационном моделировании логистического центра с помощью «Any Logic». Скачиваем тул, пробуем на практике!
Мой отличный паблик
Трансформатор
Изучение английского для айтишников (и не только)
Время чтения: 5 минут
Список источников для увеличения словарного запаса, тренировки аудирования и речевой практики.
Показать полностью.
Английский язык необходим разработчику для понимания терминологии, работы с англоязычными интерфейсами, чтения технической документации, изучения профессиональной литературы, конференций и вебинаров. А также может пригодиться для поиска работы за границей.
Многие разработчики и так знают огромное количество английских слов — послушать их: они будто вообще по-русски не говорят, а только «фиксят», «дебажат», «асапят». Однако полноценно говорить на английском языке и использовать заимствованные слова в профессиональном сленге — совсем разные вещи.
Лексика. Увеличиваем словарный запас
Лексика для разработчиков, программистов и других ИТ-специалистов очень разнообразна. Те, кого часто называют просто «айтишниками», на самом деле объединяют в себе десяток разных специализаций: фронтенд- и бэкенд-разработчики, тестировщики, веб-дизайнеры, продуктологи и многие другие.
Мы собрали различные источники с базовой технической и узкоспециализированной лексикой, чтобы каждый мог подобрать что-то для себя.
1. Учебники и пособия
Учебники подойдут тем, кто решил осваивать язык самостоятельно, поскольку они методологически выверены, построены по системе от простого к сложному и, как правило, дают возможность закрепить материал упражнениями.
Список наиболее популярных учебников, которые можно бесплатно загрузить в PDF-версии:
English for Information Technology. Подходит для начального уровня. Включает в себя основную базовую лексику.
Career path Software Engineering. Лексическое пособие для программистов, которое объединяет специализированную лексику и предлагает рабочие ситуации для развития навыков общения. Темы: разработка ПО, тестирование, пользовательские интерфейсы, моделирование, варианты карьеры и другое.
Oxford English for Information Technology. Ещё один полноценный курс, который подходит для среднего уровня. Включает в себя рабочую книгу студента и аудиокурс.
Professional English in Use ICT. Курс также подходит для среднего уровня владения английским. Книга строится по программе от простого к сложному, все блоки разбиты по темам.
Check Your English Vocabulary for Computers and IT. Рабочая тетрадь, призванная улучшить понимание технической лексики. Включает в себя кроссворды, головоломки и другие игровые механики.
2. Онлайн-тренажеры для тренировки лексики
Примеры сайтов с различными онлайн-тренажерами:
www.english4it.com
Сайт представляет собой интерактивную рабочую тетрадь в онлайн-режиме. Он включает письменные и аудиотексты, словарь, различные практические задания и даже шутки.
www.blairenglish.com/exercises/technology_web/technol..
Ещё один классный сайт с онлайн-упражнениями. Ресурс предлагает много текстов, в которых можно выделять новые слова, а ниже проходить тесты на проверку их запоминания.
Не все технические термины запоминаются сразу. Более того, в каждой отдельной ИТ-области существует множество узкоутилитарных слов. К сожалению, в www.multitran.ru не всегда можно найти подходящий перевод. На помощь могут прийти специализированные наборы слов и словари в отраслевых источниках:
4. Отраслевые сайты и блоги
Самый эффективный способ пополнения словарного запаса — это «вынимание» слов из живого контекста. Например, чтение статей на профессиональную тему и выписывание оттуда новых терминов. Такая лексика лучше запоминается, поскольку ассоциативно связана с контекстом.
freesoftwaremagazine.com — сайт, на котором публикуются материалы о бесплатном программном обеспечении.
technologyreview.com/magazine/2015/07/
Журнал издаётся Массачусетским технологическим институтом.
https://news.ycombinator.com/
Новостной агрегатор, созданный Полом Грэмом в 2007 году, собирает популярные тематические материалы.
https://blog.codinghorror.com/ — блог Джеффа Этвуда, американского разработчика, писателя и предпринимателя.
http://www.improgrammer.net/ — сайт для программистов, который содержит учебники, статьи о технологиях, факты, блоги.
https://www.smashingmagazine.com/ — издатель бумажных и электронных книг, который предлагает редакционный контент и профессиональные ресурсы для веб-разработчиков и дизайнеров. Работает с 2006 года, содержит много полезной информации, статей, а также публикует материалы для бесплатной загрузки.
https://designm.ag/ — сайт-сообщество для дизайнеров и разработчиков, включающий блог, новостной раздел, который формируют пользователи, дизайнерскую галерею и интервью со специалистами области.
http://sdtimes.com/ — ещё один популярный новостной ресурс для разработчиков
http://www.drdobbs.com/ — первое регулярное периодическое издание, посвященное теме программного обеспечения для микрокомпьютеров. Сайт не обновляется с 2014 года, но продолжает жить в сети.
По этой ссылке https://en.m.wikipedia.org/wiki/List_of_computer_maga.. можно найти ещё множество ссылок на издания про ИТ-специалистов.
Аудирование и практика речи
1. Видео и подкасты
https://ru.coursera.org/ предлагает огромное количество качественных видеокурсов по техническим специальностям. Не обязательно платить за сертификаты, можно просто бесплатно слушать лекции и подтягивать свой английский. Например, https://www.coursera.org/specializations/jhu-data-sci.. от Университета Джона Хопкинса или https://www.coursera.org/specializations/data-science.. от Мичиганского Университета.
Также лексику и идеи можно черпать из коллекции https://www.ted.com/talks?sort=newest&topics[]=Te.., а заодно тренировать навык аудирования. Помимо языковой практики, просмотр видеовыступлений позволяет быть в курсе последних разработок от лучших технологический компаний мира.
Несколько популярных подкастов:
http://herdingcode.com/ — технологические подкасты со Скоттом Алленом, Кевином Денте, Скоттом Куном и Джоном Галловэем.
http://www.se-radio.net/ — ещё один полезный сайт с подкастами для программистов.
https://talkpython.fm/ — подкасты для тех, кто работает с Python.
Еще одна рекомендация — начать смотреть какой-нибудь сериал про разработчиков в оригинале. Можно оставить английские субтитры и выписывать незнакомые слова, таким образом пополняя свой лексический запас. Примеры:
2. Профессиональные форумы
Без речевой практики далеко не уедешь. Если пока нет возможности реального общения на английском языке, рекомендуем воспользоваться специальными форумами. На них можно не только потренировать язык, но и задать вопрос, касающийся работы.
Я не понимаю, как повторить кое что из обучающей книги.
Конкретно на странице 152 книжки «AnyLogic за три дня» есть задание «14. Перетащите элемент Source из палитры Библиотека моделирования Процессов». А потом рассказано, что с ним делать и что внутри него есть. Конкретно :
a. Из списка Прибывают согласно выберите Времени между
прибытиями.
b. В поле Время между прибытиями введите 5, а из списка справа
так вот, чего я из этой библиотеки только не выбирал. Не было там ничего с этими двумя свойствами.
В моей версии эни лоджик нет такого Source. Что я делаю не так?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Модель «Самолёты прибывают в район аэропорта»
Дело в том что у меня такая задача Самолеты прибывают для посадки в район аэропорта каждые 10 ± 5.
Модель «Сборочный участок цеха»
Доброго времени суток! Не получается закончить с одной из задач( задание: На сборочный участок.
Заменить символы «1», «2», «3» словами «один», «два», «три»
Дана строка символов. Заменить символы «1», «2», «3» словами «один», «два», «три». Оформить в.
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: «Рабочий день»,»Суббота» или «Воскресенье»
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из.
Беги, муравей. Беги
В данной статье рассматривается процесс создания имитационной модели поведения муравьиной колонии (можно почитать в википедии ) в среде имитационного моделирования «AnyLogic». Данная статья носит практический характер. В ней будет рассмотрен вопрос применения муравьиного алгоритма для решения задачи о коммивояжёре (Почитать можно тут).
Кратко о сути
Суть задачи коммивояжере заключается в том, что коммивояжер (продавец) должен посетить N городов побывав в каждом из них только один раз по наикратчайшему маршруту. Так как данная задача является NP-сложной и количество вариантов всех возможных маршрутов между N городами вычисляется как «N!», то время поиска кратчайшего маршрута будет увеличиваться по экспоненциальному закону с увеличением значения N. Соответственно время поиска кратчайшего маршрута(решения) с использованием алгоритма «полного перебора» (который дает точное решение) при количестве городов N>16 резко увеличивается (носит экспоненциальный характер). Поэтому мы будем искать не самый короткий по протяженности маршрут, а близкий к нему (рациональный) за конечное время с помощью «муравьиного алгоритма».
Немного слов о AnyLogic – это мощный инструмент позволяющий создавать имитационные модели различной сложности. В нем заложены различные подходы имитационного моделирования. Мы с Вами будем разбирать только один из подходов а именно «Агентное» моделирование. Реализован он на языке программирования «Java», который дополняет существующий инструментарий. Главным недостатком «AnyLogic» является ограничения бесплатной версии по количеству создаваемых агентов их количество не может быть более 50000. «Агент» – является базовой единицей системы имитационного моделирования AnyLogic. Более подробную информацию можно прочитать на сайте www.anylogic.ru
Инструменты
1. Anylogic – качаем бесплатную версию вот отсюда www.anylogic.ru/downloads
Первоначальное знакомство AnyLogic:
Рис. 1- Рабочее окно AnyLogic
Создание проекта
Тут все просто. Жмем на пункт меню «Файл» далее «Создать» и далее «Модель» вводим имя модели и жмем кнопку «Готово» (рис. 2).
Рис. 2- Создание модели
Создаем города
Ну что, приступим. Первое что, мы сделаем так это создадим так называемые города(вершины графа), которые будет посещать муравей посещать. Для чего открываем в палитре вкладку «Агент» и перетаскиваем оттуда красный кружочек с человечком в «Main» агента как это показано на рисунке 3.
Рис. 3- Создание городов
После того как вы отпустите кнопку мыши у Вас появиться диалоговое окно («Шаг 1»), предлагающее Вам создать агента. Где необходимо будет выбрать пункт «Популяция агентов» и нажать на кнопу «Далее».
Рис. 4- Создание городов
Появиться следующее диалоговое окно (Шаг 2) где необходимо будет ввести имя нового типа агента и имя популяции агентов. Вводим тип «MyTown» и имя популяции «myTowns» и жмем на кнопку «Далее».
Рис. 4а — Вводим имя нового агента
Далее появится следующие окно (Шаг 4.). Здесь выбираем «Анимация агента 2D» и иконку с надписью «Завод» и нажимаем кнопку «Готово» (рис. 5).
Рис. 5- Добавляем анимацию для агента
Теперь создадим переменную, которая будет определять начальное количество городов в нашей модели. Для чего из «Палитры» перетаскиваем в агент «Main» иконку с надписью «Переменная» и вводим ее название «numberTown». Далее нажимаем на иконку нашей переменной и во вкладке Свойства вводим ее начальное значение равное, например 10 и выбираем ее тип «int» (рис. 6).
Рис. 6- Создание переменной
Теперь установим начальное значение нашей популяции городов «myTowns», для чего нажмем мышкой на ее иконку и во вкладке «Свойства» в поле «Начальное количество агентов» напишем имя созданной ранее нами переменной (рис. 7).
Рис. 7 – Изменение свойств популяции «myTowns»
Далее сделаем вывод наших городов в агенте «Main» в случайном месте. Место ограничим квадратом 400×400 точек. Для чего во вкладке «Проекты» выбираем мышкой агент «Main» и во вкладке «Свойства» в поле «При запуске» добавляем следующий код на «Java» (рис. 7а):
Рис. 7а – Расставляем города
Далее можем уже посмотреть, что у нас с Вами получилось и запустить нашу модель. Для этого используем клавишу «F5», жмем ее и запускается окно для запуска эксперимента как показано на рисунке 8.
Рис. 8 – Запуск эксперимента
Далее нажимаем на кнопку «Запустить» в нижнем левом углу окна и происходит запуск эксперимента. У Вас на экране должно получиться окно с содержимым как показано на рисунке 9.
Рис. 9 – Результат эксперимента
Итак, на данном шаге мы создали 10 городов и разместили их в случайном (стохастическом) месте на нашем экране. Теперь перейдем к созданию наших «муравьев»
Создадим муравья
Создание муравья происходит аналогично создания города. В «Палитре» выбираем «Агент» и перетаскиваем его в «Main». Выбираем «Популяция агентов», потом «Я хочу создать новый тип агента» далее вводим «Имя нового типа» и «Имя популяции» «MyAnt» «myAnts» и жмем «Далее». После выбираем «2D» анимация и, например иконку с надписью «Истребитель» жмем «Готово» должно получиться как показано на рисунке 10.
Рис. 10 – Создаем муравьев
Согласитесь, самолетик не похож на муравья, поэтому мы с Вами это исправим. Заходим в поисковик ищем картинку, на которой изображен муравей и меняем самолет на муравья. Для чего выполняем двойное нажатие на красный кружок возле «myAnts». После чего откроется вкладка «myAnt» где нужно удалить самолет и на его место поместить муравья (рис. 11).
Рис. 11 – Вкладка myAnt
Выделяем мышкой самолет и жмем «Del». Далее переходим во вкладку «Презентация» и перетаскиваем оттуда элемент «Изображение». После автоматически откроется диалог для выбора файла. Выбираем файл с нашим муравьем (рис. 12) и жмем «Ок».
Рис. 12 – Вкладка myAnt с муравьем и уже без самолета
Идем дальше. Выполняем масштабирование муравья и перемещаем его на место, где был когда-то самолет. Должно получиться как показано на рисунке 12а. Все эти операции выполняются с помощь мыши.
Рис. 12а – Вкладка myAnt с муравьем
Оживляем муравья
Рис. 13 – Логика поведения муравья
Теперь давайте пропишем начальную логику работы диаграммы муравья. Выбираем мышкой стрелочку, которая выходит из блока под название «Выбор города» и добавляем во вкладке «Свойства» в поле «Действие» следующий код (рис. 14):
Тут все очень просто идем в цикле по всем городам и подбрасываем монету (генерируем случайную величину с вероятность. 0,5) если ее значение истина (орел), то отправляем муравья к этому городу покидая цикл. Выражение «this.moveTo(main.myTowns.get(i))» — функция, которая отправляет одного агента к другому.
Рис. 14 – Задаем первоначальную логику движения муравья
Далее жмем на стрелочку, которая выходит из блока «Движение» и во вкладке «Свойства» в поле «Происходит» установим значение «При получении сообщения» и выбираем пункт «При получении заданного сообщения» в поле «Происходит» как показано на рисунке 15.
Рис. 15 – Задаем логику для перехода между «Движение» и «Все обошел»
Теперь настроим последнюю стрелочку, которая выходит из блока «Движение». Выбираем ее мышкой и во вкладке «Свойства» в поле переход устанавливаем «По прибытию агента». Конечный вид «Диаграммы состояний» должен быть как показано на рисунке 16.
Рис. 16 – Диаграмма состояний с настроенными переходами между блоками
Рис. 17 – Работа диаграммы состояний
Теперь можем нажать «F5» по посмотреть, что получилось (рис. 18).
Рис. 18 – Оживление муравьев
Зададим критерии
Давайте научим муравья соблюдать эти правила. Для чего из «Палитры» вкладка «Агент» перенесем на вкладку «MyAnt» «Коллекцию» и «Переменную» и назовем их первую как «isVisited» а вторую как «distance». В первой будет учитывать города, в которых мы уже побывали, а во второй пройденное расстояние муравьем.
Рис. 19 – Добавляем переменные
Настроим коллекцию «isVisited». Для чего выбираем ее мышкой и во вкладке «Свойства» устанавливаем «Тип» элементов «int» как показано на рисунке 20.
Для переменной «distance» в ее свойствах в поле «Начальное значение» нужно поставить «0», а тип переменной «double».
Рис. 20 – Коллекция типа «int»
Теперь выбираем стрелочку, выходящую из блока «Выбор_города» и меняем код в поле «Действие» на ниже приведенный:
В коде выше мы добавили проверку на города, в которых уже успели побывать и учет городов, которые посетили, а также считаем пройденное расстояние. Код довольно простой я думаю Вам будет не трудно разобраться.
Можете попробовать запустить «F5» нашу модель и посмотреть, что же получилось. Теперь муравьи будут проходить по всем городам только один раз и завершать свое движение в блоке все обошел.
Меняем первоначальное размещение муравьев
На этом шаге определим для каждого муравья случайным образом выберем город, с которого он начнет свое путешествие. Для чего на вкладке «Проекты» выбираем мышкой агент «Main» после чего во вкладке «Свойства» добавляем в поле «При запуске» следующий код (рис. 20а):
Рис. 20а – Расставляем муравьев по городам
Я применил случайный выбор начального города. Вы же можете изначально определить всех муравьев только в один город.
Делаем муравьев непредсказуемыми
Внедрим в нашу модель формулу, приведенную ниже:
где Pi — вероятность перехода по пути i-му пути, li — длина i-го перехода, fi — количество феромона на i-ом переходе, q — величина, определяющая «жадность» алгоритма, p — величина, определяющая «стадность» алгоритма, при этом q+p=1.
Данную формула я позаимствовал с сайта.
Говоря простым языком, данная формула позволяет вычислить вероятность, с которой муравей должен будет осуществить переход в тот или иной город.
Теперь нужно добавить несколько переменных без которых нам не обойтись. Для чего возвращаемся обратно во вкладку «Main» рисунок 21.
Рис. 21 – Вкладка «Main»
Итак, добавляем переменную «numberAnt», в которой будем хранить размер муравьиной колонии. Устанавливаем ее тип «int» и начальное значение равное 100.
Рис. 21 – Переменная «numberAnt»
Далее выбираем популяцию «myAnts» и устанавливаем поле «Начальное количество агентов» равным «numberAnt».
Переменную «p», которая будет определять стадность алгоритма. Ее тип «double» и начальное значение равное 0.5.
Переменную «q», которая будет определять жадность алгоритма. Ее тип «double» и начальное значение равное 0.5.
Рис. 22 – Переменные «q и p»
Итак, теперь зададим случайное значение феромона для каждого ребра(дороги) между городами. Для чего создаем переменную (двумерный массив) «matrixF». Установим у нее во вкладке «Свойствах» в поле «Тип» выбираем значение «Другой» и прописываем «double[][]» в поле начальное значение «new double[numberTown][numberTown]» (рис. 23).
Рис. 23 – Создание двумерного массива «matrixF». Матрица феромонов
Далее нам необходимо инициализировать данную матрицу. Другими словами, заполнить ее случайными значениями. Значение феромона возьмём случайным образом в интервале от 0,1 до
1. Для чего на вкладке «Проекты» выбираем мышкой агент «Main» и после во вкладке «Свойства» добавляем в поле «При запуске» следующий код (рис. 23а):
Рис. 23а – Код инициализации матрицы феромонов
Теперь возвращаемся во вкладку «MyAnt» и приступаем к вычислению вероятности перехода в соответствии с вышеприведенной формулой. Выделяем переход между «Выбор_города» и «Движение» и меняем код в поле Действие на следующий (рис. 24):
Рис. 24 – Задаем поведение муравья на основе аналитического выражения приведенного выше
Рис. 25 – Определяем условия остановки муравья
Далее можете запустить «F5» модель и посмотреть, что получилось. Муравьи будут путешествовать между городами с вероятностью, рассчитанной согласно приведенному выше аналитическому выражению.
Обновляем значение феромона
Теперь давайте выполним два действия. Первое действие заключается в увеличении значения феромона на ребре между городами, по которому прошел муравей. Второе в испарении феромона на ребрах между городами, которое заключается в уменьшении значения феромонов относительно времени моделирования.
Итак, для начала к первому действию, будем обновлять значение феромона ребра, между городом в котором находится муравей и в которой ему предстоит отправиться. Величину, на которую будем увеличивать текущее значение феромона ребра между городами будем вычислять очень и очень просто. Берем нашу максимальную начальную величину значения феромона = 1 у.е. и делим ее на расстояние между городом, в котором находится муравей и городом куда он собирается отправится. Соответственно, чем меньше расстояние, между городами тем больше составит значение, на которое будет увеличен уровень феромона ребра. Для чего выбираем во вкладке «Проекты» агент «MyAnt» выбираем мышкой переход между блоками «Выбор_города» и «Движение» и в поле действие добавляем следующий код «main.matrixF[currentPos][i]=main.matrixF[currentPos][i]+1/this.distanceTo(main.myTowns.get(i);». В итоге должно получаться как показано на рисунке 26
Рис. 26 – Обновляем значение уровня феромонов ребер, по которым прошел муравей
Теперь перейдем к действия №2 и создадим событие, которое будет имитировать испарение феромона на ребрах между городами. Для чего во вкладке проекты выбираем агента «Main» и создаем там еще пару переменных. Первая это «intensity» — будет определять скорость(интенсивность) испарения феромона (Начальное значение «0.5» тип «double»). Вторая «Part» — будет характеризовать долю, на которую будет уменьшаться значение феромона на ребре (Начальное значение «0.9» тип «double»).
Рис. 27 – Создаем переменные «intensity» и «Part»
Далее берем из «Палитры» вкладки «Агент» элемент «Событие» и переносим его в агент «Main» и называем его «evaporation» — этот элемент будет имитировать испарение феромона на ребрах. Жмем на него мышкой и в «Свойствах» в поле «Тип события» выбираем значение «С заданной интенсивностью» в поле «Интенсивность» прописываем имя переменной, которая хранит значение интенсивности «intensity». Время срабатывания оставляем секунды. Далее в действие добавляем код, приведенный ниже:
При срабатывании события «evaporation» будут обновляться значения уровня феромона в матрице matrixF. В итоге у Вас должно получаться так как показано на рисунке 28.
Рис. 28 – Создаем событие «evaporation»
Определим победителя
На этом шаге допишем код, который будет определять победителя нашего муравьиного марафона. Победителем будет тот из муравьев, который пробежал по протяженности самый короткий маршрут. В дополнение ко всему после окончания марафона начертим этот маршрут на экране. Для достижения этой цели создадим в агенте «Main» три переменные «bestAnt», «bestDistance» и «numberFinish». В переменной «bestAnt» мы будем хранить индекс самого «быстрого» муравья, тип переменной будет «int» а начальное значение установим «-1». В переменной «bestDistance» будем хранить текущее значение наилучшего по протяженности маршрута между городами, тип переменной будет «double» а начальное значение установим равным бесконечности «infinity». В переменной «numberFinish» будем хранить количество муравьев, которые финишировали в нашем марафоне, тип переменной будет «int» а начальное значение равно «0» (рис. 29).
Рис. 29 – Создаем событие переменных
Далее создадим функцию, которая после финиширования всех муравьев будет рисовать линии наилучшего маршрута между городами. Для чего из «Палитры» перетаскиваем в агент «Main» элемент с названием функция. Имя функции устанавливаем drawPath и во вкладке «Свойства» в поле тело функции добавляем следующий код:
В итоге у Вас должно получиться так как показано на рисунке 29а.
Рис. 29а – Создаем функцию «drawPath»
Теперь возвращаемся обратно к нашим муравьям и дописываем код, который будет определять муравья победителя, протяженность наилучшего маршрута и рисовать этот маршрут между городами. Для чего во вкладе «Проекты» выбираем агента «MyAnt» далее выбираем блок «Все_обошел» и добавляем в поле «Действие при входе» нижеприведенный код:
Должно получиться как показано на рисунке 30.
Рис. 30 – Добавление логики в блок «Все_обошел»
После чего можете нажать «F5» и запустить модель. Муравьи будут бегать искать маршруты, а когда финишируют города соединит синяя линия, которая и есть наилучший маршрут.
Добавим гистограмму в модель
Для того чтобы модель стала более научной нужно обязательно добавить график. Поэтому мы с Вами добавим не просто график и гистограмму, которая будет показывать нам распределение протяженности маршрутов, которые преодолели муравьи. Для чего во вкладке «Проекты» выбираем агента «Main» и переходим в его пространство. Далее В «Палитре» переходим во вкладку «Статистика» и оттуда в агент «Main» переносим элемент «Данные гистограммы» и непосредственно саму «Гистограмму». Потом выбираем мышкой гистограммы и во вкладке «Свойства» в поле «Данные» прописываем имя наших «Данных гистограммы» т.е. «data».
Должно получиться как показано на рисунке 31
Рис. 31 – Строим график
После чего нам придется опять вернуться к нашему муравью и заставить его наполнять «Гистограмму» значениями протяженности маршрута. Для чего во вкладке проекты выбираем агента «MyAnt» и переходим в его пространство. Далее выбираем блок «Все_обошел» и добавляем в него одну строчку «main.data.add(distance);». Должно получиться как показано на рисунке 32.
Рис. 32 – Строим график
Далее нажимает «F5» и приступаете к исследованию поведения муравьиного алгоритма. Должно получиться что, то вроде как показано на рисунке 33.
Рис. 33 – Моделируем
Заключение
И в конце рекомендую добавить в модель еще больше непредсказуемости. Для чего во вкладке «Проекты» выбираете мышкой элемент «Simulation: Main» и во вкладке свойства устанавливаете параметр «Случайность» в положение «Случайное начальное число (уникальные прогоны)» — это позволит каждый запуск модели сделать уникальным (рис. 34).
Рис. 34 – Делаем случайными прогоны