Практика оптимизации

Функции пакета Optimization Toolbox

Пакет имеет 19 функций, реализующих все его возможности. Функции пакета разделяются на пять групп:

  • • функции минимизации;
  • • решения уравнений;
  • • реализации метода наименьших квадратов (подбора кривых);
  • • утилиты;
  • • демонстрационные.

Подробная запись функций с расшифровкой обозначений ниже дана только для функций минимизации, для других функций она аналогична. В приведенных примерах дополнительные комментарии при выводе, как правило, опущены. Примеры даны для новейших версий MATLAB 6.5 SP1/7 и пакета Optimization Toolbox 2.3. В других версиях возможны расхождения в пределах машинной точности вычислений.

Решение задач максимизации

Функции пакета fminbnd, fminsearch, fminunc, fmincon, fgoalattain, fminimax, Isqcurvefit и Isqnonlin решают задачу минимизации целевой функции Дх). Максимизация достигается, если решать задачу минимизации для целевой функции, взятой со знаком «минус», то есть —Дх). Аналогичный результат достигается в задачах линейного и квадратичного программирования: там со знаком «минус» необходимо применять матрицу Н и вектор f (то есть использовать -Н и -/).

Приведение ограничений-неравенств к стандартному виду

В пакете Optimization Toolbox предполагается некоторая стандартная форма записи ограничений-неравенств: с;(х) <0.

Неравенства иного вида должны быть приведены к данному (умножением обеих частей на — I, переносом констант в левую часть и т. п.), например:

ц(х) > 0 —> -с,(х) < 0,

с,(х) > b —> -с,(х) + b < 0.

Введение дополнительных аргументов

В списке аргументов рассмотренных функций пакета могут присутствовать дополнительные, обозначенные через Pl, Р2 и т. д., например:

[x,fval] = fsolve ('obj fun', хО, options, Pl, Р2,...)

Эти дополнительные аргументы выполняют роль глобальных переменных для вызываемых целевых функций.

Пусть, например, требуется найти нули эллиптической функции Якоби el-lip j (u,m). Данная функция зависит от аргумента и и параметра ш (указываемого как второй аргумент). Поиск ее нуля вблизи значения и0 = 3 и при т = 0.5 может быть организован следующим образом:

>> m = 0.5;

>> options = optimset('Displayoff'); % Отключение вывода текущей информации

» х = fsolve('ellipj3,options,m) % Поиск решения

x =

3.7081

Легко убедиться в том, что найденное решение корректное:

>> f = ellipj(x,m) f =

-3.0042e-008

то есть оно действительно является нулем рассматриваемой функции.

Следующий пример относится к использованию функции fgoalattain:

» fun = inline('sort(eig(А+В*х*С)) ', 'х','А’, 1В','С 1); %

Задание целевой функции

» х = fgoalattain (fun, -ones(2,2), [-5,-3,-1], [5, 3, 1],...

[ ], [ ], [ ], [ ], -4*ones(2), 4*ones(2), [ ], [ ] , А, В, C) ;

% Поиск решения

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >