Этот пример показов, как сформулировать задачу линейного метода наименьших квадратов с помощью подхода , основанного на проблеме.
Задача состоит в том, чтобы найти кратчайшее расстояние от источника (точки [0,0,0]
) к плоскости . Другими словами, эта проблема состоит в том, чтобы минимизировать удовлетворяющее ограничению . Функция f (x) называется целевой функцией и является ограничением равенства. Более сложные задачи могут содержать другие ограничения равенства, ограничения неравенства и верхних или нижних границ ограничений.
Чтобы сформулировать эту задачу с помощью основанного на проблеме подхода, создайте объект задачи оптимизации, называемый pointtoplane
.
pointtoplane = optimproblem;
Создайте переменные задачи x
как непрерывная переменная с тремя компонентами.
x = optimvar('x',3);
Создайте целевую функцию и поместите ее в Objective
свойство pointtoplane
.
obj = sum(x.^2); pointtoplane.Objective = obj;
Создайте линейное ограничение и поместите его в задачу.
v = [1,2,4]; pointtoplane.Constraints = dot(x,v) == 7;
Формулировка задачи завершена. Чтобы проверить на ошибки, проверьте проблему.
show(pointtoplane)
OptimizationProblem : Solve for: x minimize : sum(x.^2) subject to : x(1) + 2*x(2) + 4*x(3) == 7
Состав правильный.
Решите проблему, позвонив solve
.
[sol,fval,exitflag,output] = solve(pointtoplane);
Solving problem using lsqlin. 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.
disp(sol.x)
0.3333 0.6667 1.3333
Чтобы проверить решение, решите проблему аналитически. Напомним, что для любого ненулевого t
, векторная t*[1,2,4] = t*v
перпендикулярно плоскости . Итак, точка решения xopt
является t*v
для значения t
который удовлетворяет уравнению dot(t*v,v) = 7
.
t = 7/dot(v,v)
t = 0.3333
xopt = t*v
xopt = 1×3
0.3333 0.6667 1.3333
Действительно, вектор xopt
эквивалентно точечной sol.x
что solve
находит.