Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Исследование методов решения задач условной минимизации

Цель работы

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

Варианты

1. .

; ; ;

2. ; .

; .

3. ; .

; ; .

4. ; .

; ; .

5. ;

; ; .

6. ; .

; ; .

7. ; .

; ;

8. ;

; ; .

9. ; .

;

10. ; .

; ;

11. ; .

; ;

12. ; .

; ; ;

13. , ,

, , , , .

14. , ,

, , , , .

15. , ,

, , , , , .

16. , ,

, , , , .

17. , ,

, ,

, .

18. , ,

, ,

, .

19. , ,

, ,

, .

Задание

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

1. Оценить эффективность алгоритмов условной минимизации. Критерием эффективности может служить трудоёмкость (количество расчетов целевой функции) алгоритма при нахождении решения с заданной точностью для различных точек начального приближения.

2. Сравнить эффективность алгоритмов при использовании численного и аналитического расчета градиента целевой функции.

3. Обосновать факт достижения точки условного экстремума и проверить выполнение ограничений в этой точке.

4. Определить характер поведения алгоритма при нахождении решения.

 

Методические указания к выполнению работы

Для проведения условной минимизации может быть использована следующая стандартная функция Matlab – fmincon.

Синтаксис вызова функции:

[x, fval, exitflag, output, lambda]=fmincon(@fun, x0, A, b, Aeq, beq, lb, ub, @fcon, options)

 

где x – финальное значение аргумента функции, fval – значение функции в точке х, exitflag – указатель состояния алгоритма для решаемой задачи в точке х, output – суммарная информация о работе алгоритма, lambda – множители Лагранжа, fun – целевая функция, x0 – точка начального приближения, b и beq – векторы правой части линейного неравенства и равенства, lb и ub – верхняя и нижняя граница поиска решений, AиAeq– матрицы левой части линейного неравенства, fcon – функция нелинейных равенств и неравенств, options – параметры алгоритма. Отсутствующие параметры заменяются на символ пустого множества [].

Функция формируется в отдельном m-файле, структура которого должна иметь следующий вид:

function [f] = fun(x)

%тело функции

end

 

При этом имя m-файла должно совпадать с названием функции, в данном случае fun.

Функция нелинейных равенств и неравенств записывается в отдельном m-файле и имеет следующую структуру:

function [c, ceq]=fcon(x)

c=%вектор-столбец неравенств, причем c< 0

ceq=%вектор-столбец равенств

end

 

Параметры алгоритма задаются через специальную функцию optimset. Синтаксис установки параметров следующий:

options = optimset('Algorithm', 'trust-region-reflective', 'GradObj', 'on', 'Display', 'iter', 'TolX', 1e-6, 'TolFun', 1e-12, 'TolCon', 1e-6);

 

где Algorithm – указатель на используемый алгоритм, GradObj – флаг использования аналитически рассчитанного градиента, Display – параметр, отвечающий за вывод на экран информации об итерациях; iter – флаг о необходимости вывода на экран информации обо всех итерациях; TolX – предельный шаг изменения аргумента функции (в приведенном выше примере параметру 'TolX' присвоено значение 1e-6); TolFun – предельный шаг приращения функции; 'TolCon' – Конечное допустимое отклонение по нарушению условий ограничения.

Параметр Algorithm может принимать четыре различных значения:

· trust-region-reflective (Метод доверительных областей)

· active-set (Активный набор)

· sqp (метод квадратичного программирования)

· interior-point (метод с использованием барьерной функций)

Для использования аналитически рассчитанного градиента структура m-файла с целевой функцией должна иметь следующий вид:

function [f g] = fun(x)

%целевая функция

if nargout> 1

% запись градиента в виде:

%g(1) =...;

%g(2) =...;

%...

end

end

 

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

global xiter;

xiter = [];

 

и в отдельном m-файле с именем outfun поместить следующий код:

function stop=outfun(x, optimValues, state)

global xiter;

xiter = [xiter x];

stop = false;

end

 

Таким образом, по окончанию работы алгоритма получим массив значений аргумента после каждой итерации.

Рекомендуемая литература

<== предыдущая лекция | следующая лекция ==>
Круговая тренировка 45 минут | ingredients




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.