Оптимизация роем частиц (Particle swarm optimization)

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.05.2013
Размер файла 38,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

Ещё со времён Ламарка развитие живого мира рассматривается как процесс постоянного совершенствования (приспособления) особей под влиянием среды. Моделируя отбор лучших планов, как процесс эволюции в популяции особей, можно получить решение задачи оптимизации, задав начальные условия эволюционного процесса, населив виртуальную вселенную существами - носителями информации и указав цель эволюционного процесса.

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

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

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

Для данной работы был выбран метод оптимизации «рой частиц». Алгоритм метода благодаря своей простоте и скорости считается очень перспективным для задач планирования.

1. Постановка задачи

1.1 Математическая модель

Метод «рой частиц» - наиболее простой метод эволюционного программирования, появившийся в середине 90-х годов, основанный на идеи о возможности решения задач оптимизации с помощью моделирования поведения групп животных. В основу метода положен тот факт, что при формировании стаи птицы стремятся к некоторому центру «притяжения», постепенно замедляя скорость полёта.

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

В реализации данного алгоритма многомерное пространство поиска населяется роем частиц (элементарных решений). Координаты частицы в пространстве однозначно определяют решение задачи оптимизации. Помимо координат каждая из частиц описывается скоростью перемещения и ускорением. В процессе перемещения частицы осуществляют «прочёсывание» пространства решений и тем самым находят текущий оптимум, к которому на следующем шаге устремляются остальные частицы. Каждая частица запоминает своё лучшее положение, данные о котором передаются соседним частицам, которые стремятся к этому значению.

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

2. Реализация алгоритма

2.1Схема работы алгоритма

Схема работы алгоритма выглядит следующим образом:

1. Создаётся исходная «случайная» популяция частиц.

2. Для каждой частицы рассчитывается целевая функция.

3. Лучшая частица с точки зрения целевой функции объявляется «центром притяжения».

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

5. Осуществляется расчёт новых координат частиц в пространстве решений.

6. Шаги 2-5 повторяются заданное число раз или пока не выполнится условие остановки.

7. Последний «центр тяжести» объявляется найденным оптимальным решением.

2.2 Код программы

#include<time.h>

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

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);

}

int main()

{double V[n] [m];

double lower_limit=1, upper_limit=300;

double best_pos[n] [m];

double cel[n] [m]; // массив генотипа

double best_cel=1000; // лучшее глобальное значение

double x;

double R1, R2;

const double C1=0.7, C2=1.2, w=0.93;

double **X=new double*[n];

for (i=0; i<n; i++)

X[i]=new double[m];

srand (time(NULL));

 // инициализация положения и скоростей частиц

for (i=0; i<n; i++)

for (j=0; j<m; j++)

{

X[i] [j]=lower_limit + (upper_limit - lower_limit)*rand()/RAND_MAX;

V[i] [j]=0;

 // Инициалиция генотипом частиц самым худшем

best_pos[i] [j]=1000;

}

for (k=0; k<t; k++)

{

 // заполнение массива генотипов

for (i=0; i<n; i++)

for (j=0; j<m; j++)

{

 // определение текущего генотипа

cel[i] [j]=F (X[i] [j]);

 // сохранение значения лучшего генотипа для каждой частицы

if (cel[i] [j]<best_pos[i] [j])

best_pos[i] [j]=cel[i] [j];

if (best_pos[i] [j]<best_cel)

{

best_cel=best_pos[i] [j];

x=X[i] [j];

printf («%f\n», x);

}

}

 // Обновление скоростей частиц и их позиций

for (i=0; i<n; i++)

for (j=0; j<m; 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];

}

}

return 0;

}

2.3 Блок схема алгоритма

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

3. Теоретическая оценка трудоемкости алгоритма оптимизации

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

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

1) операцию присваивания ab;

2) операцию индексации массива a[i];

3) арифметические операции *,/,-,+;

4) операции сравнения a < b;

5) логические операции or, and, not.

Вызов функции будем считать за одну элементарную операцию +1 за каждое переданное значение и +1 за возвращенное.

Цикл for не является элементарной операцией, т.к. может быть представлен в виде;

for i1 to N

тело

next i;

Таким образом конструкция цикла требует 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.