Опубликован: 12.03.2015 | Уровень: для всех | Доступ: платный | ВУЗ: Компания ALT Linux
Лекция 10:

Решение оптимизационных задач

Аннотация: В данной главе рассматриваются решение задач поиска минимума (максимума) в Octave. В первой части на примерах решения практических задач рассматривается функция qp предназначенная для поиска минимума функции одной или нескольких переменных с ограничениями. Вторая часть целиком посвящена задачам линейного программирования.

Изучение оптимизационных задач начнём с обычных задач поиска минимума (максимума) функции одной или нескольких переменных.

10.1 Поиск экстремума функции

Для решения классических оптимизационных задач с ограничениями в Octave можно воспользоваться следующей функцией [x, obj, info, iter] = sqp(x_0, phi, g, h, lb, ub, maxiter, tolerance), которая предназначена для решения следующей оптимизационной задачи.

Найти минимум функции \varphi(x) при следующих ограничениях g(x)=0,h(x)\ge 0,lb\le x\le {ub}. Функция sqp при решении задачи оптимизации использует метод квадратичного программирования.

Аргументами функции sqp являются:

  • x_0— начальное приближение значения x,
  • phi — оптимизируемая функция \varphi(x),
  • g и h — функции ограничений g(x) = 0 и h(x)\ge 0,
  • lb и ub — верхняя и нижняя границы ограничения lb\le x\le ub,
  • maxiter — максимальное количество итераций, используемое при решении оптимизационной задачи, по умолчанию эта величина равна 100,
  • tolerance — точность \varepsilon, определяющая окончание вычислений, вычисления прекращаются при достижении точности sqrt{\varepsilon}.

Функция sqp возвращает следующие значения:

  • x — точка, в которой функция, достигает своего минимального значения,
  • obj — минимальное значение функции,
  • info — параметр, характеризующий корректность решения оптимизационной задачи, (если функция sqp возвращает значение info = 101, то задача решена правильно),
  • iter — реальное количество итераций при решении задачи.

Рассмотрим несколько примеров использования функции sqp при решении задач поиска экстремума функции одной переменной без ограничений.

Пример 10.1. Найти минимум функции \varphi(x)=x^{4}+3x^{3}-13x^{2}-6x+26

При решении задачи оптимизации с помощью функции sqp необходимо иметь точку начального приближения. Построим график функции \varphi(x) (см. рис. 10.1). Из графика видно, что функция имеет минимум в окрестности точки x = -4. В качестве точки начального приближения выберем x_0=-3. Решение задачи представлено в листинге 10.1.

	
function obj = phi(x)
	obj = x^4+3*x^3-13*x^2-6*x+26;
endfunction
[x, obj, info, iter]= sqp(-3, @phi)
% Результаты решения
x =-3.8407
obj =-95.089
info = 101
iter = 5		
Листинг 10.1. Поиск минимума функции (пример 10.1)

Минимум функции \varphi(x)=-95.089 достигается в точке x = -3.8407, количество итераций равно 5, параметр info = 101 свидетельствует о корректном решении задачи поиска минимума \varphi(x)=x^{4}+3x^{3}-13x^{2}-6x+26

График функции примера 10.1

Рис. 10.1. График функции примера 10.1

Рассмотрим пример поиска минимума функции нескольких переменных.

Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?

Владимир Мельников
Владимир Мельников
Россия, г. Омск
анна тихонова
анна тихонова
Россия