"Рой частиц" как наиболее простой метод эволюционного программирования, основанный на идеи о возможности решения задач оптимизации с помощью моделирования поведения групп животных. Схема работы алгоритма, составление кода программы и блок-схемы.
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Ещё со времён Ламарка развитие живого мира рассматривается как процесс постоянного совершенствования (приспособления) особей под влиянием среды. Моделируя отбор лучших планов, как процесс эволюции в популяции особей, можно получить решение задачи оптимизации, задав начальные условия эволюционного процесса, населив виртуальную вселенную существами - носителями информации и указав цель эволюционного процесса.
Копируя действия природы, человек создает всё более и более совершенные алгоритмы оптимизации. Для их создание чаще всего служат примеры из природы, например: генетический код или поведение птиц, моделирование миграций рыб или охлождение металла и т.д.
В настоящее время на производстве и в бизнесе широко используются алгоритмы оптимизации, так как они дают возможность сэкономить не только денежные средства, но и время, которого постоянно не хватает.
На производстве, благодаря оптимизации, решается множество проблем связанных с такими вещами как простой станка, переполнение склада или же перенаправление запчастей на другие станки при поломке.
Для данной работы был выбран метод оптимизации «рой частиц». Алгоритм метода благодаря своей простоте и скорости считается очень перспективным для задач планирования.
1 . Постановка задачи
1.1 Математическая модель
Метод «рой частиц» - наиболее простой метод эволюционного программирования, появившийся в середине 90-х годов, основанный на идеи о возможности решения задач оптимизации с помощью моделирования поведения групп животных. В основу метода положен тот факт, что при формировании стаи птицы стремятся к некоторому центру «притяжения», постепенно замедляя скорость полёта.
Когда стая ищет еду, её представители будут проверять прилегающую область и двигаться вокруг стаи независимо друг от друга. Каждый представитель имеет степень свободы или хаотичности в движении, которая даёт ему возможность найти скопление пищи. Так, рано или поздно, один из них найдет, что-то съедобное, и, будучи частью стаи, сообщит остальным. Остальные также могут тогда приблизиться к источнику пищи, и уже каждый представитель, благодаря степени свободы и хаотичности своего движения может найти новое скопление пищи.
В реализации данного алгоритма многомерное пространство поиска населяется роем частиц (элементарных решений). Координаты частицы в пространстве однозначно определяют решение задачи оптимизации. Помимо координат каждая из частиц описывается скоростью перемещения и ускорением. В процессе перемещения частицы осуществляют «прочёсывание» пространства решений и тем самым находят текущий оптимум, к которому на следующем шаге устремляются остальные частицы. Каждая частица запоминает своё лучшее положение, данные о котором передаются соседним частицам, которые стремятся к этому значению.
Для введения случайной составляющей в процесс поиска могут быть включены «сумасшедшие» частицы, закон движения которых отличается от закона движения остальных.
2 . Реализация алгоритма
2.1Схема работы алгоритма
Схема работы алгоритма выглядит следующим образом:
1. Создаётся исходная «случайная» популяция частиц.
2. Для каждой частицы рассчитывается целевая функция.
3. Лучшая частица с точки зрения целевой функции объявляется «центром притяжения».
4. Векторы скоростей всех частиц устремляются к этому «центру», при этом чем дальше частица находится от него, тем большим ускорением она обладает.
5. Осуществляется расчёт новых координат частиц в пространстве решений.
6. Шаги 2-5 повторяются заданное число раз или пока не выполнится условие остановки.
7. Последний «центр тяжести» объявляется найденным оптимальным решением.
2. 2 Код программы
#include
#include
#include
#include
const int n=200;
const int m=200;
int i, j, k, t=200;
double F (double x)
return pow (pow(x, 3) - 125,2);
{double V[n] [m];
double lower_limit=1, upper_limit=300;
double best_pos[n] [m];
double cel[n] [m]; // массив генотипа
double best_cel=1000; // лучшее глобальное значение
const double C1=0.7, C2=1.2, w=0.93;
double **X=new double*[n];
for (i=0; i X[i]=new double[m]; srand (time(NULL)); // инициализация положения и скоростей частиц for (i=0; i for (j=0; j X[i] [j]=lower_limit + (upper_limit - lower_limit)*rand()/RAND_MAX; // Инициалиция генотипом частиц самым худшем best_pos[i] [j]=1000; for (k=0; k // заполнение массива генотипов for (i=0; i for (j=0; j // определение текущего генотипа cel[i] [j]=F (X[i] [j]); // сохранение значения лучшего генотипа для каждой частицы if (cel[i] [j] best_pos[i] [j]=cel[i] [j]; if (best_pos[i] [j] best_cel=best_pos[i] [j]; printf («%f\n», x); // Обновление скоростей частиц и их позиций for (i=0; i for (j=0; j R1 = 1.*rand()/RAND_MAX; R2 = 1.*rand()/RAND_MAX; V[i] [j] = w*V[i] [j] + C1*R1*(best_cel - X[i] [j]) + C2*R2*(best_pos[i] [j] - X[i] [j]); X[i] [j] = X[i] [j] + V[i] [j]; 2.3 Блок схема алгоритма
Размещено на http://www.allbest.ru/ Размещено на http://www.allbest.ru/ 3
.
Теоретическая оценка трудоемкости алгоритма оптимизации
Для теоретической оценки трудоемкости алгоритма необходимо определить количество элементарных операций, которые необходимо выполнить для решения задачи с помощью данного алгоритма. Под элементарными операциями, будем понимать операции, которые могут быть представлены в виде элементарных конструкций данного языка (но не обязательно в виде одной машинной команды), а именно за одну элементарную операцию будем считать следующие: 1) операцию присваивания ab; 2) операцию индексации массива a[i]; 3) арифметические операции *,/,-,+; 4) операции сравнения a < b; 5) логические операции or, and, not. Цикл for не является элементарной операцией, т.к. может быть представлен в виде; Таким образом конструкция цикла требует 2*N элементарных операций: F
«цикл»
= 2*
N
+
N
*
f
«тело цикла».
Таким образом, для нашей программы получим: F=9+ // константы 2*200+200*(2*200+(8+6)*200)+ // инициализация положения и скоростей 2*200+200*(2*200+200*(2*200+200*(6+20))+ // заполнение массива генотипа и лучших значений 2*200+200*(2*200+200*(4+4+10+2+16)) // обновление скоростей и позиций В результате теоретического вычисления трудоемкость данной программы составила F= 528800809 элементарных операций. Заключение
программа алгоритм моделирование В последнее время стало появляться очень много новых алгоритмов, которые основанны на подражании природе, но не каждый алгоритм может похвастаться такой простатой реализации и оригинальностью идеи. Благодаря случайности распределения частиц и их хаотичности в движении пояляется очень большая вероятность найти оптимальное решение за несколько итераций, избегая при этом локальные оптимумы. Дальнейшее развитие подобных алгоритмов является ключём к новым технологиям оптимизации и развития в целом. Список использованных источников
1. Ульянов М.В., Шептунов М.В. Математическая логика и теория алгоритмов, часть 2: Теория алгоритмов. - М.: МГАПИ, 2003. - 80 с. 2. Конспект лекций по дисциплине «Математическая логика и теория алгоритмов». 3. Global Optimization Algorithms - Theory and Application. 4. http://ru.wikipedia.org Размещено на Allbest.ru Особенности задач линейного программирования. Симплексный метод решения задач линейного программирования. Обоснование выбора языка, инструментария программирования, перечень идентификаторов и блок-схема алгоритма. Логическая схема работы программы. дипломная работа , добавлен 13.08.2011 Рзработка библиотеки, которая позволит моделировать динамику частиц в трехмерной графики. Выбор средств и методов разработки. Варианты моделирования систем частиц. Моделирование на вершинном шейдере. Диаграммы класса Particle System и PSBehavior. курсовая работа , добавлен 07.02.2016 Основные аналитические соотношения. Блок схемы и алгоритм решения задачи. Проверка работоспособности алгоритма вручную. Таблица идентификации переменных. Формы входной и выходной печати. Разработка и отладка программы. Инструкция для работы с программой. курсовая работа , добавлен 13.02.2012 Понятие линейного программирования и оптимизации. Основы работы в системе MathCAD. Интерфейс пользователя, входной язык и тип данных. Этапы компьютерного математического моделирования. Пример решения оптимизационной задачи средствами программы MathCAD. курсовая работа , добавлен 16.10.2011 Создание программы в среде программирования MatLab для решения задачи одномерной оптимизации (нахождение минимума и максимума заданных функций) методом золотого сечения, построение блок-схемы алгоритма и графическое изображение исследованных функций. реферат , добавлен 14.06.2010 Система программирования Delphi, ее характеристика. Основные требования к обучающей программе. Составление блок-схемы алгоритма программы "Математика. 1 класс". Виды задач для решения в обучающей программе. Описание работы системы, инструкция к ней. курсовая работа , добавлен 17.06.2015 Оптимизация решения задачи с помощью алгоритма отжига. Анализ теории оптимизации как целевой функции. Метод градиентного спуска. Переменные и описание алгоритма отжига. Представление задачи коммивояжера через граф. Сведение задачи к переменным и решение. курсовая работа , добавлен 21.05.2015 Построение математической модели движения заряженных частиц, реализация на алгоритмическом языке с помощью ЭВМ. Описание предметной области. Имитация взаимодействия двух разноименно заряженных частиц. Результаты работы программы, руководство пользователя. курсовая работа , добавлен 26.02.2015 Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal. курсовая работа , добавлен 15.06.2013 Паскаль как язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля, история его разработки и функциональные особенности. Задача с использованием двумерного массива, составление блок-схемы решения. Пусть f
: ℝ
n
→ ℝ
- целевая функция, которую требуется минимизировать, S
- количество частиц в рое, каждой из которых сопоставлена координата x
i ∈ ℝ
n
в пространстве решений и скорость v
i ∈ ℝ
n
. Пусть также p
i - лучшее из известных положений частицы i
, а g
- наилучшее известное состояние роя в целом. Тогда общий вид метода роя частиц таков. Параметры ω, φ p , и φ g выбираются вычислителем и определяют поведение и эффективность метода в целом. Эти параметры составляют предмет многих исследований (см. ниже)
. Выбор оптимальных параметров метода роя частиц - тема значительного количества исследовательских работ, см., например, работы Ши и Эберхарта , Карлисла и Дозера , ван ден Берга , Клерка и Кеннеди , Трелеа , Браттона и Блеквэлла , а также Эверса . Простой и эффективный путь подбора параметров метода предложен Педерсеном и другими авторами. Они же провели численные эксперименты с различными оптимизациоными проблемами и параметрами. Техника выбора этих параметров называется мета-оптимизацией, так как другой оптимизационный алгоритм используется для «настройки» параметров МРЧ. Входные параметры МРЧ с наилучшей производительностью оказались противоречащими основным принципам, описанным в литературе, и часто дают удовлетворительные результаты оптимизации для простых случаев МРЧ. Реализацию их можно найти в открытой библиотеке SwarmOps. Постоянно предлагаются новые варианты алгоритма роя частиц для улучшения производительности метода. Существует несколько тенденций в этих исследованиях, одна из которых предлагает создать гибридный оптимизационный метод, использующий МРЧ в комбинации с иными алгоритмами, см. например . Другая тенденция предлагает каким-либо образом ускорить работу метода, например, отходом назад или переменой порядка движения частиц (об этом см. ). Также есть попытки адаптировать поведенческие параметры МРЧ в процессе оптимизации . МРЧ оптимизирует функцию, поддерживая популяцию возможных решений, называемых частицами, и перемещая эти частицы в пространстве решений согласно простой формуле. Перемещения подчиняются принципу наилучшего найденного в этом пространстве положения, которое постоянно изменяется при нахождении частицами более выгодных положений. Пусть f
: ℝ
n
→ ℝ
- целевая функция, которую требуется минимизировать, S
- количество частиц в рое, каждой из которых сопоставлена координата x
i ∈ ℝ
n
в пространстве решений и скорость v
i ∈ ℝ
n
. Пусть также p
i - лучшее из известных положений частицы i
, а g
- наилучшее известное состояние роя в целом. Тогда общий вид метода роя частиц таков. Параметры ω, φ p , и φ g выбираются вычислителем и определяют поведение и эффективность метода в целом. Эти параметры составляют предмет многих исследований (см. ниже)
. Выбор оптимальных параметров метода роя частиц - тема значительного количества исследовательских работ, см., например, работы Ши и Эберхарта , Карлисла и Дозера , ван ден Берга , Клерка и Кеннеди , Трелеа , Браттона и Блеквэлла , а также Эверса . Простой и эффективный путь подбора параметров метода предложен Педерсеном и другими авторами. Они же провели численные эксперименты с различными оптимизациоными проблемами и параметрами. Техника выбора этих параметров называется мета-оптимизацией , так как другой оптимизационный алгоритм используется для «настройки» параметров МРЧ. Входные параметры МРЧ с наилучшей производительностью оказались противоречащими основным принципам, описанным в литературе, и часто дают удовлетворительные результаты оптимизации для простых случаев МРЧ. Реализацию их можно найти в открытой библиотеке SwarmOps. Постоянно предлагаются новые варианты алгоритма роя частиц для улучшения производительности метода. Существует несколько тенденций в этих исследованиях, одна из которых предлагает создать гибридный оптимизационный метод, использующий МРЧ в комбинации с иными алгоритмами, см. например . Другая тенденция предлагает каким-либо образом ускорить работу метода, например, отходом назад или переменой порядка движения частиц (об этом см. ). Также есть попытки адаптировать поведенческие параметры МРЧ в процессе оптимизации . Вечером того же дня на квартире Денисова шел оживленный разговор офицеров эскадрона.Подобные документы
Алгоритм
Подбор параметров
Варианты алгоритма
См. также
Примечания
Ссылки
Методы оптимизации
Одномерные
Алгоритм
Подбор параметров
Варианты алгоритма
Напишите отзыв о статье "Метод роя частиц"
Примечания
Ссылки
Одномерные
Прямые методы
Первого порядка
Второго порядка
Стохастические
Методы линейного
программирования
Методы нелинейного
программирования
Отрывок, характеризующий Метод роя частиц
– Да, – сказал Ростов, как будто выговорить это слово стоило большого труда, и сел за соседний стол.
Оба молчали; в комнате сидели два немца и один русский офицер. Все молчали, и слышались звуки ножей о тарелки и чавканье поручика. Когда Телянин кончил завтрак, он вынул из кармана двойной кошелек, изогнутыми кверху маленькими белыми пальцами раздвинул кольца, достал золотой и, приподняв брови, отдал деньги слуге.
– Пожалуйста, поскорее, – сказал он.
Золотой был новый. Ростов встал и подошел к Телянину.
– Позвольте посмотреть мне кошелек, – сказал он тихим, чуть слышным голосом.
С бегающими глазами, но всё поднятыми бровями Телянин подал кошелек.
– Да, хорошенький кошелек… Да… да… – сказал он и вдруг побледнел. – Посмотрите, юноша, – прибавил он.
Ростов взял в руки кошелек и посмотрел и на него, и на деньги, которые были в нем, и на Телянина. Поручик оглядывался кругом, по своей привычке и, казалось, вдруг стал очень весел.
– Коли будем в Вене, всё там оставлю, а теперь и девать некуда в этих дрянных городишках, – сказал он. – Ну, давайте, юноша, я пойду.
Ростов молчал.
– А вы что ж? тоже позавтракать? Порядочно кормят, – продолжал Телянин. – Давайте же.
Он протянул руку и взялся за кошелек. Ростов выпустил его. Телянин взял кошелек и стал опускать его в карман рейтуз, и брови его небрежно поднялись, а рот слегка раскрылся, как будто он говорил: «да, да, кладу в карман свой кошелек, и это очень просто, и никому до этого дела нет».
– Ну, что, юноша? – сказал он, вздохнув и из под приподнятых бровей взглянув в глаза Ростова. Какой то свет глаз с быстротою электрической искры перебежал из глаз Телянина в глаза Ростова и обратно, обратно и обратно, всё в одно мгновение.
– Подите сюда, – проговорил Ростов, хватая Телянина за руку. Он почти притащил его к окну. – Это деньги Денисова, вы их взяли… – прошептал он ему над ухом.
– Что?… Что?… Как вы смеете? Что?… – проговорил Телянин.
Но эти слова звучали жалобным, отчаянным криком и мольбой о прощении. Как только Ростов услыхал этот звук голоса, с души его свалился огромный камень сомнения. Он почувствовал радость и в то же мгновение ему стало жалко несчастного, стоявшего перед ним человека; но надо было до конца довести начатое дело.
– Здесь люди Бог знает что могут подумать, – бормотал Телянин, схватывая фуражку и направляясь в небольшую пустую комнату, – надо объясниться…
– Я это знаю, и я это докажу, – сказал Ростов.
– Я…
Испуганное, бледное лицо Телянина начало дрожать всеми мускулами; глаза всё так же бегали, но где то внизу, не поднимаясь до лица Ростова, и послышались всхлипыванья.
– Граф!… не губите молодого человека… вот эти несчастные деньги, возьмите их… – Он бросил их на стол. – У меня отец старик, мать!…
Ростов взял деньги, избегая взгляда Телянина, и, не говоря ни слова, пошел из комнаты. Но у двери он остановился и вернулся назад. – Боже мой, – сказал он со слезами на глазах, – как вы могли это сделать?
– Граф, – сказал Телянин, приближаясь к юнкеру.
– Не трогайте меня, – проговорил Ростов, отстраняясь. – Ежели вам нужда, возьмите эти деньги. – Он швырнул ему кошелек и выбежал из трактира.
– А я говорю вам, Ростов, что вам надо извиниться перед полковым командиром, – говорил, обращаясь к пунцово красному, взволнованному Ростову, высокий штаб ротмистр, с седеющими волосами, огромными усами и крупными чертами морщинистого лица.
Штаб ротмистр Кирстен был два раза разжалован в солдаты зa дела чести и два раза выслуживался.
– Я никому не позволю себе говорить, что я лгу! – вскрикнул Ростов. – Он сказал мне, что я лгу, а я сказал ему, что он лжет. Так с тем и останется. На дежурство может меня назначать хоть каждый день и под арест сажать, а извиняться меня никто не заставит, потому что ежели он, как полковой командир, считает недостойным себя дать мне удовлетворение, так…
– Да вы постойте, батюшка; вы послушайте меня, – перебил штаб ротмистр своим басистым голосом, спокойно разглаживая свои длинные усы. – Вы при других офицерах говорите полковому командиру, что офицер украл…
– Я не виноват, что разговор зашел при других офицерах. Может быть, не надо было говорить при них, да я не дипломат. Я затем в гусары и пошел, думал, что здесь не нужно тонкостей, а он мне говорит, что я лгу… так пусть даст мне удовлетворение…
– Это всё хорошо, никто не думает, что вы трус, да не в том дело. Спросите у Денисова, похоже это на что нибудь, чтобы юнкер требовал удовлетворения у полкового командира?
Денисов, закусив ус, с мрачным видом слушал разговор, видимо не желая вступаться в него. На вопрос штаб ротмистра он отрицательно покачал головой.
– Вы при офицерах говорите полковому командиру про эту пакость, – продолжал штаб ротмистр. – Богданыч (Богданычем называли полкового командира) вас осадил.
– Не осадил, а сказал, что я неправду говорю.
– Ну да, и вы наговорили ему глупостей, и надо извиниться.
– Ни за что! – крикнул Ростов.
– Не думал я этого от вас, – серьезно и строго сказал штаб ротмистр. – Вы не хотите извиниться, а вы, батюшка, не только перед ним, а перед всем полком, перед всеми нами, вы кругом виноваты. А вот как: кабы вы подумали да посоветовались, как обойтись с этим делом, а то вы прямо, да при офицерах, и бухнули. Что теперь делать полковому командиру? Надо отдать под суд офицера и замарать весь полк? Из за одного негодяя весь полк осрамить? Так, что ли, по вашему? А по нашему, не так. И Богданыч молодец, он вам сказал, что вы неправду говорите. Неприятно, да что делать, батюшка, сами наскочили. А теперь, как дело хотят замять, так вы из за фанаберии какой то не хотите извиниться, а хотите всё рассказать. Вам обидно, что вы подежурите, да что вам извиниться перед старым и честным офицером! Какой бы там ни был Богданыч, а всё честный и храбрый, старый полковник, так вам обидно; а замарать полк вам ничего? – Голос штаб ротмистра начинал дрожать. – Вы, батюшка, в полку без году неделя; нынче здесь, завтра перешли куда в адъютантики; вам наплевать, что говорить будут: «между павлоградскими офицерами воры!» А нам не всё равно. Так, что ли, Денисов? Не всё равно?
Денисов всё молчал и не шевелился, изредка взглядывая своими блестящими, черными глазами на Ростова.
– Вам своя фанаберия дорога, извиниться не хочется, – продолжал штаб ротмистр, – а нам, старикам, как мы выросли, да и умереть, Бог даст, приведется в полку, так нам честь полка дорога, и Богданыч это знает. Ох, как дорога, батюшка! А это нехорошо, нехорошо! Там обижайтесь или нет, а я всегда правду матку скажу. Нехорошо!
И штаб ротмистр встал и отвернулся от Ростова.
– Пг"авда, чог"т возьми! – закричал, вскакивая, Денисов. – Ну, Г"остов! Ну!
Ростов, краснея и бледнея, смотрел то на одного, то на другого офицера.
– Нет, господа, нет… вы не думайте… я очень понимаю, вы напрасно обо мне думаете так… я… для меня… я за честь полка.да что? это на деле я покажу, и для меня честь знамени…ну, всё равно, правда, я виноват!.. – Слезы стояли у него в глазах. – Я виноват, кругом виноват!… Ну, что вам еще?…
– Вот это так, граф, – поворачиваясь, крикнул штаб ротмистр, ударяя его большою рукою по плечу.
– Я тебе говог"ю, – закричал Денисов, – он малый славный.
– Так то лучше, граф, – повторил штаб ротмистр, как будто за его признание начиная величать его титулом. – Подите и извинитесь, ваше сиятельство, да с.
– Господа, всё сделаю, никто от меня слова не услышит, – умоляющим голосом проговорил Ростов, – но извиняться не могу, ей Богу, не могу, как хотите! Как я буду извиняться, точно маленький, прощенья просить?
Денисов засмеялся.
– Вам же хуже. Богданыч злопамятен, поплатитесь за упрямство, – сказал Кирстен.
– Ей Богу, не упрямство! Я не могу вам описать, какое чувство, не могу…