Роение пчел

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

Математически это выражается следующим образом. Основная формула, согласно которой корректируется скорость пчелы, следующая (согласно, https://habrahabr.ru/post/104055/):
1111
где:
ПНП — персональная наилучшая позиция, ГНП — глобальная наилучшая позиция.
Расчет производится для каждого из N. Из этого уравнения видно, что новая скорость получается из старой скорости путем простого масштабирования на w, и прибавления направления ГНП и ПНП для этого конкретного направления. c1 и c2 — это масштабные коэффициенты, которые определяют относительное взаимное «притяжение» к ПНП и ГНП. Они иногда рассматриваются как познавательный и социальный факторы. c1 — это коэффициент, определяющий какое влияние на частицу оказывает ее память о ПНП, и c2 — коэффициент, определяющий какое влияние на частицу оказывают остальные члены роя. Увеличение c1 предполагает исследование пространства решений путем движения каждой частицы в направлении своего ПНП; увеличение c2 предполагает исследование предполагаемого глобального максимума. Функция случайных чисел rand() возвращает число в интервале между -1 и 1. В общем случае два появления функции rand() представляет собой два различных вызова функции. Большинство реализаций используют две независимые случайные величины для стохастического изменения относительного притяжения ГНП и ПНП. Это введение случайного элемента в оптимизацию предназначено для моделирования незначительного непредсказуемого компонента реального поведения роя. w называют «инерционным весом» и это число (выбранное в интервале между 0 и 1) отражает в какой мере частица остается верной своему первоначальному курсу, не подвергшемуся влиянию ГНП и ПНП.

 

Предлагаем программу, реализующую поиск максимума на плоскости алгоритмом роя пчел.

Начальный экран программы:

p1

По прошествии некоторого времени:

p2

 

Архив с программой:

roy

Простое моделирование поверхности воды в Matlab

В 1952 году известный океанолог Лонге-Хиггинс ( Michael Longuet-Higgins) успешно доказал предположение, что волны в море отлично описываются суммой плоских волн бегущих в различных направлениях. Этот принцип очень хорошо демонстрируется картинкой расположенной ниже.

fig1

Read More

Новый учебник «Функциональный анализ от нуля до единицы»

213385

У автора сайта LECTOR.RU вышел новый учебник Р.В. Шамин «Функциональный анализ от нуля до единицы» в издательстве URSS.

Книга представляет собой учебник по функциональному анализу. Этот учебник годится для первоначального изучения линейного функционального анализа, но будет полезен и для углубленного изучения, поскольку содержит материал, который обычно не включают в учебники по функциональному анализу. Несмотря на краткое изложение, в учебнике все теоремы приведены с полными доказательствами. Многие понятия и утверждения демонстрируются на модельных примерах.

Книга будет полезна студентам и аспирантам, а также всем желающим познакомиться с современной абстрактной математикой.

Книга продается в книжных магазинах, но дешевле всего ее купить в издательстве URSS.

Метод потенциальных функций в обучении машин

«Обучение машин» звучит очень завораживающе, поэтому мы рассмотрим сейчас один из способов машинного обучения.

Мы рассмотрим процедуру обучения машин на основе методов потенциальных функций, который изложен в отличной книге М.А. Айзерман, Э.М. Браверман, Л.И. Розоноэр, «Метод потенциальных функций в теории обучения машин», М.: «Наука», 1970.

potential

Read More

Нетранзитивные кубики — честное мошенничество?

Представим себе игральные кости (шестигранные кубики), на гранях которых могут быть различные числа, а не только 1, 2, 3, 4, 5, 6.

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

Как Вы думаете кто в этой игре имеет преимущество?

Read More

Программирование на C#: компонент DataGrid

Эффективно визуализировать и редактировать данные табличного типа позволяет стандартный компонент WPF под названием DataGrid. С помощью этого компонента можно, например, организовать редактирование таблиц баз данных.

Принцип работы компонента очень простой. В качестве источника данных ItemSource компоненту присваивается созданная в программе коллекция  ObservableCollection<T> collection:

DG.ItemsSource = collection; // DG — наш DataGrid

Read More

Искусственный интеллект — Ханойская Башня

Мы продолжаем рассматривать темы искусственного интеллекта в приложениях к решению сложных задач. Сегодня мы поговорим об известной игре — Ханойская Башня. Смысл этой игры состоит в том, что имеется три штыря, на первом штыре нанизано несколько дисков разной ширины в виде пирамидки:

hanoi0

Задача состоит в том, чтобы перемещая по одному диску, придти к состоянию, когда все диски находятся на правом штыре:

hanoi1

При этом на каждом шаге всегда диск большей с большой шириной находится ниже диска с меньшей шириной.

Read More

Игра в шашки

Хорошим полигоном для методов искусственного интеллекта является игра в интеллектуальную игру. Мы предлагаем в качестве такой игры — игру в шашки. Шашки являются сложной нетривиальной игрой, в которой перебор вариантов практически невозможен, поэтому для необходимо использовать именно интеллектуальные методы.

RCheck

Read More

Экспресс-курс по программированию на Python

Напоминаем, что на сайте Образовательного проекта Р.В. Шамина выложен мини-курс по программированию на языке Python. Этот курс состоит из 5 простых уроков, на которых объясняются основные конструкции языка Python.

На самом деле, программировать на языке Python просто!

Книга «Математические вопросы волн-убийц»

В издательстве URSS вышла книга:

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

Приобрести эту книгу можно в книжных магазинах «Дом книги«, «Библио-Глобус«, Ozon.ru, но дешевле всего ее можно купить в издательстве (интернет-магазине) URSS.