Метод расщепления для задачи оптимизации

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: математика
  • 22 22 страницы
  • 11 + 11 источников
  • Добавлена 16.04.2017
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
СОДЕРЖАНИЕ

ВВЕДЕНИЕ 2
1 МЕТОДЫ НЕЛИНЕЙНОЙ ОПТИМИЗАЦИИ 3
1.1 Общая постановка задачи оптимизации 3
1.2 Алгоритм расщепления в оптимизации 13
1.3 Программная реализация и обсуждение результатов 16
ЗАКЛЮЧЕНИЕ 19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 20
ПРИЛОЖЕНИЕ 22

Фрагмент для ознакомления

пособие.- СПб.: Лань, 2008. - 160 с. Вентцель Е. С. Исследование операций: задачи, принципы, методология: учеб. пособие для втузов.- М.: Высш. шк., 2001. - 208 с.Волков И. К., Загоруйко Е. А. Исследование операций: учебник для втузов. Серия: Математика в техническом ун-те - М.: Изд-во МГТУ. 2004. - 440 с. Yang X.-S., S. Deb S. Cuckoo search via L´evy flights / In: Proc. Of World Congress on Nature & Biologically Inspired Computing (NaBIC 2009), 2009, India, pp. 210-214.Botev ZI, Kroese DP. Efficient Monte Carlo simulation via the generalized splitting method. Stat Comput 2012;22(1):1–16.QibinDuan, Dirk P. Kroes. Splitting for optimization. Computers & operations research : and their applications to problems of world concern : an international journal. - Oxford [u.a.] : Elsevier, ISSN 0305-0548, ZDB-ID 194012-0. - Vol. 73.2016, p. 119-131ПРИЛОЖЕНИЕCommonFunction.h#pragmaonce#includeusingnamespacestd;//ИнтерфейсфункцииclassCommonFunction{public://Операциявычисленияфункцииvirtualdoubleoperator()(vector &) = 0;CommonFunction() {};~CommonFunction() {};};MathObjects.h//Вспомогательный функционал#ifndef MATHOBJECTS_H#defineMATHOBJECTS_H#include#includeusingnamespacestd;//Структура отрезкаstructInterval{//Границы интервалаdouble Min, Max;};//ОбластьпоискаstructRect{//Массив из границ интервалов образует паралеллипипедvector obj;};//Начальное распределение точекvector > InitData(int, Rect &);//Генерация нормального распределенияdoubleRandNormal(double, double);vector RandNormal(double, double, int);//Генерация целого числа из диапазонаintRandInt(int, int);//Случайная перестановкаvector RandPerm(int);//Нормавектораdouble Norm(vector &);#endifMathObjects.cpp#include"MathObjects.h"//Начальное распределение точекvector > InitData(intCount, Rect &ObjArea){vector > res;vector Coord;//РазмерностьобластиintDimArea = ObjArea.obj.size();for (inti = 0;i < Count;i++){Coord.clear();//Цикл по отрезкам паралеллипипедаfor (int j = 0;j < DimArea;j++){double Min = ObjArea.obj[j].Min;double Max = ObjArea.obj[j].Max;//Случайнаявеличинаdoubleval = (double)rand() / RAND_MAX;//Генерациякоординатывинтервалеdoublecurr_val = Min + val*(Max - Min);//Добавление координаты в вектор точки начальных данныъCoord.push_back(curr_val);}//Добавление точки в начальное множествоres.push_back(Coord);}returnres;}//Генерация целого числа из диапазона [Min,Max]intRandInt(intMin, intMax){returnMin + rand() % (Max - Min + 1);}//Случайнаяперестановкаvector RandPerm(intN){vector parr;intrand_val;for (inti = 0; i::min();constdoubletwo_pi = 2.0*3.14159265358979323846;staticdouble z0, z1;staticbool generate;generate = !generate;if (!generate)return z1 * sigma + mu;double u1, u2;do{u1 = rand() * (1.0 / RAND_MAX);u2 = rand() * (1.0 / RAND_MAX);} while (u1 <= epsilon);z0 = sqrt(-2.0 * log(u1)) * cos(two_pi * u2);z1 = sqrt(-2.0 * log(u1)) * sin(two_pi * u2);return z0 * sigma + mu;}//Генерация вектора с нормальным распределениемvector RandNormal(doublemu, doublesigma, intCount){vector res;for (inti = 0;i < Count;i++)res.push_back(RandNormal(mu, sigma));return res;}//Вычислениенормывектораdouble Norm(vector &X){double s = 0;for (inti = 0;i < X.size();i++)s += X[i] * X[i];returnsqrt(s);}SCOAlgorithm.h#pragmaonce#include#include"CommonFunction.h"#include"MathObjects.h"#includeusingnamespacestd;//Информационный объектstructObjInfo{//Максимальное число попытокintMaxTry;//Максимальное число итерацийintMaxits;//Погрешностьdoubleeps;//Коэффициент редкостиdoublerho; //Размер популяцииdoublesize;};//Класс сравнения точек при сортировкеstructCompare{public:CommonFunction *Fun;Compare(CommonFunction *Fun){this->Fun = Fun;}//Операторсравненияbooloperator()(constvector& a, constvector& b){vector a1 = a;vector b1 = b;bool res = Fun->operator()(a1) < Fun->operator()(b1);returnres;}};//Алгоритм оптимизации с расщеплениемclassSCOAlgorithm{public:void Solve();SCOAlgorithm() {};~SCOAlgorithm(){Func = nullptr;Result.clear();History.clear();rect.obj.clear();};//НастройкиObjInfoobj;//ЦелеваяфункцияCommonFunction *Func;//Область поискаRectrect;//Вектор результатаvector Result;//Историяпоискаvector < vector > History;boolCompareSort(constvector&, constvector&);};SCOAlgorithm.cpp#include"SCOAlgorithm.h"boolSCOAlgorithm::CompareSort(constvector& a, constvector& b){vector a1 = a;vector b1 = b;bool res = Func->operator()(a1) < Func->operator()(b1);return res;}voidSCOAlgorithm::Solve(){//ПодготовкапараметровintVecSize = rect.obj.size();intMaxits = obj.Maxits;intMaxTry = obj.MaxTry;double rho = obj.rho;double res = 1;double eps = obj.eps;int N = obj.size;int t = 1;//Начальнаяпопуляцияvector> X_Init = InitData(N, rect);vector> X = X_Init;vector> X_new ;vector> E_;//Главныйциклwhile ((t> X_ = X;//Сортировка по возрастанию функцииsort(X_.begin(), X_.end(), Compare(Func));//Отбор первых N_e в E[t + 1]E_.clear();//Образуем множество E[t+1]for (inti = 0;i < N_e;i++)E_.push_back(X_[i]);//Добавляем элемент в историюHistory.push_back(E_[0]);X_new.clear();//Цикл по множествуfor (inti = 0;i < N_e;i++){//Длина цепи Марковаint s_ = N / N_e;//Цикл по цепи Марковаfor (int j = 0;j < s_;j++){//Генерация вспомогательной переменной X[R]int R;for (;;){R = RandInt(0, N_e - 1);if (R != i)break;}//Вычисляем sigmavector sigma;for (int j = 0;j < VecSize;j++)sigma.push_back(abs(E_[i][j] - E_[R][j]));//Промежуточные векторыvector Y, Y_;Y = E_[i];//Случайная перестановкаvector r_ = RandPerm(VecSize);//Формирование нового вектора//Цикл по перестановке - порядок обновления координатfor (int k = 0;k < r_.size();k++){//Циклпочислупопытокfor (int try_ = 0;try_ < MaxTry;try_++){Y_ = Y;//Пересчет координаты семплером ГиббсаY_[r_[k]] = Y[r_[k]] + sigma[r_[k]] * RandNormal(1, 0);//Вычисляемисравниваемфункцииdouble z1 = Func->operator()(Y_);double z = Func->operator()(Y);//Если есть улучшениеif (z1 < z){//Перезаписываем координату на новуюY[r_[k]] = Y_[r_[k]];break;}}}//Добавление в новое множество X[t+1]X_new.push_back(Y);} //Конец цикла по траекториямпо j} //Конец цикла по i по множеству//Вычислениепогрешностиvector Res_;for (inti = 0;i < VecSize;i++)Res_.push_back(X_new[0][i] - X[0][i]);res = Norm(Res_);X.clear();X =X_new;t++;} //Конец главного цикла//Точка оптимумаResult= E_[0];}main.cpp#include#include"SCOAlgorithm.h"#include"SquareFun.h"#include"RosenbrockFun.h"#include#includeint main(){setlocale(LC_CTYPE, "rus"); // вызовфункциинастройкилокалиSCOAlgorithm *alg = newSCOAlgorithm();ObjInfoobj;//Максимальное число итерацийobj.Maxits = 500;//Максимальное число попытокobj.MaxTry = 2;//Коэффициент редкости obj.rho = 0.5;//Размер начального множестваobj.size = 300;alg->obj=obj;//Видфункцииalg->Func = newSquareFun();//alg->Func = new RosenbrockFun();Rectrect_;//Формирование областиIntervalXLim; //Диапазон по оси OXXLim.Min = -2;XLim.Max = 2;IntervalYLim; //Диапазон по оси OYYLim.Min = -2;YLim.Max = 2;//Добавление интервалов-сторон паралеллепипедаrect_.obj.push_back(XLim);rect_.obj.push_back(YLim);alg->rect=rect_;alg->Solve();cout<<"Точкаоптимума"<Result.size();i++)cout<Result[i]<<" ";cout<Func->operator()(alg->Result) <

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Самарский А.А. Введение в численные методы : учеб. пособие для вузов/ Серия: Классическая учебная литература по математике. - СПб.: Лань, 2009. - 288 с.
2. Демидович Б. П., Марон И. А. Основы вычислительной математики: учеб. пособие/ Серия: Лучшие классические учебники. - СПб., М., Краснодар: Лань, 2006. - 672 с.
1. Копченова Н. В., Марон И. А. Вычислительная математика в примерах и задачах: учеб. пособие. Серия: Классическая учебная литература по математике.- СПб.: Лань, 2009. - 368 с.
2. Демидович Б. П. , Марон И. А., Шувалова Э. 3. Численные методы анализа: приближение функций, дифференциальные и интегральные уравнения, учеб. пособие. Серия: Классическая учебная литература по математике. -СПб., М., Краснодар: Лань, 2008. - 400 с.
3. Вентцель Е.С. Исследование операций: задачи, принципы, методология: учеб. пособие для вузов. Серия: Высш.образование: учеб. пособие -М.: Дрофа, 2004. - 208 с. - Гриф ( УМО )
4. Самарский А. А. Введение в численные методы: учеб. пособие для вузов. Серия: Классический университетский учебник МГУ. -СПб.:Изд-во Лань, 2005. - 288 с.
5. Марчук Г. И. Методы вычислительной математики: учеб. пособие. Серия: Классическая учебная литература по математике - СПб.: Лань, 2009. -608 с.
6. Фаддеев М. А., Марков К. А. Основные методы вычислительной математики: учеб. пособие.- СПб.: Лань, 2008. - 160 с.
7. Вентцель Е. С. Исследование операций: задачи, принципы, методология: учеб. пособие для втузов.- М.: Высш. шк., 2001. - 208 с.
8. Волков И. К., Загоруйко Е. А. Исследование операций: учебник для втузов. Серия: Математика в техническом ун-те - М.: Изд-во МГТУ. 2004. - 440 с.
9. Yang X.-S., S. Deb S. Cuckoo search via L´evy flights / In: Proc. Of World Congress on Nature & Biologically Inspired Computing (NaBIC 2009), 2009, India, pp. 210-214.
10. Botev ZI, Kroese DP. Efficient Monte Carlo simulation via the generalized splitting method. Stat Comput 2012;22(1):1–16.
11. Qibin Duan, Dirk P. Kroes. Splitting for optimization. Computers & operations research : and their applications to problems of world concern : an international journal. - Oxford [u.a.] : Elsevier, ISSN 0305-0548, ZDB-ID 194012-0. - Vol. 73.2016, p. 119-131

Вопрос-ответ:

Какие методы используются для решения задачи оптимизации?

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

Какой алгоритм используется в методе расщепления в оптимизации?

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

Какие есть преимущества метода расщепления в оптимизации?

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

Как проводится программная реализация метода расщепления в оптимизации?

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

Какие источники использовались при написании статьи?

При написании статьи были использованы следующие источники: пособие "Методы оптимизации" авторов Е.С. Вентцель и Е.А. Загоруйко, а также учебник "Исследование операций: задачи, принципы, методология" автора И.К. Волкова.

Какие методы существуют для решения задачи оптимизации?

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

В чем заключается метод расщепления в оптимизации?

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

Как происходит программная реализация метода расщепления?

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

Какие результаты можно получить с помощью метода расщепления в оптимизации?

С помощью метода расщепления в оптимизации можно получить оптимальное решение задачи оптимизации, а также промежуточные результаты в процессе решения подзадач.

Какие источники были использованы при написании статьи?

При написании статьи были использованы источники: "СПб Лань 2008", "Вентцель Е.С. Исследование операций: задачи, принципы, методология" и "Волков И.К., Загоруйко Е.А. Исследование операций: учебник для втузов".

Какая постановка задачи оптимизации рассматривается в статье?

В статье рассматривается общая постановка задачи оптимизации.