В этом примере показано, как использовать приложение Оптимизации с fmincon
решатель, чтобы минимизировать уравнение второй степени к линейным и нелинейным ограничениям и границам.
Приложение Оптимизации предупреждает, что будет удалено в будущем релизе.
Считайте задачу нахождения [x 1, x 2], который решает
удовлетворяющее ограничениям
Начальным приближением для этой проблемы является x 1 = 3 и x 2 = 1.
function f = objecfun(x) f = x(1)^2 + x(2)^2;
function [c,ceq] = nonlconstr(x) c = [-x(1)^2 - x(2)^2 + 1; -9*x(1)^2 - x(2)^2 + 9; -x(1)^2 + x(2); -x(2)^2 + x(1)]; ceq = [];
Введите optimtool
в Командном окне, чтобы открыть приложение Оптимизации.
Выберите fmincon
от выбора решателей и изменения поле Algorithm к Active set
.
Введите @objecfun
в поле Objective function, чтобы вызвать objecfun.m
файл.
Введите [3;1]
в поле Start point.
Задайте ограничения.
Установите связанный 0.5
≤ x 1 путем ввода [0.5,-Inf]
в поле Lower. -Inf
запись означает, что нет никакой нижней границы на x 2.
Установите линейное ограничение неравенства путем ввода [-1 -1]
в поле A и вводят -1
в поле b.
Установите нелинейные ограничения путем ввода @nonlconstr
в поле Nonlinear constraint function.
В панели Options расширьте опцию Display to command window при необходимости и выберите Iterative
показать информацию об алгоритме в Командном окне для каждой итерации.
Нажмите кнопку Start как показано в следующем рисунке.
Когда алгоритм останавливается под Run solver and view results, следующая информация отображена:
Значение Current iteration, когда отключенный алгоритм, который для этого примера является 7
.
Окончательное значение целевой функции, когда алгоритм остановился:
Objective function value: 2.0000000268595803
Сообщение завершения алгоритма:
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
Конечная точка для этого примера является
1 1
В Командном окне информация об алгоритме отображена для каждой итерации:
Max Line search Directional First-order Iter F-count f(x) constraint steplength derivative optimality Procedure 0 3 10 2 Infeasible start point 1 6 4.84298 -0.1322 1 -5.22 1.74 2 9 4.0251 -0.01168 1 -4.39 4.08 Hessian modified twice 3 12 2.42704 -0.03214 1 -3.85 1.09 4 15 2.03615 -0.004728 1 -3.04 0.995 Hessian modified twice 5 18 2.00033 -5.596e-05 1 -2.82 0.0664 Hessian modified twice 6 21 2 -5.326e-09 1 -2.81 0.000522 Hessian modified twice Active inequalities (to within options.ConstraintTolerance = 1e-06): lower upper ineqlin ineqnonlin 3 4 Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.