Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.
Este ejemplo muestra cómo formular un problema de mínimos cuadrados lineales utilizando el enfoque basado en problemas.
El problema es encontrar la distancia más corta desde el origen (el punto) hasta el plano[0,0,0]
Para formular este problema utilizando el enfoque basado en problemas, cree un objeto de problema de optimización llamado.pointtoplane
pointtoplane = optimproblem;
Cree una variable problemática como una variable continua con tres componentes.x
x = optimvar('x',3);
Crear la función objetivo y ponerlo en la propiedad de.Objective
pointtoplane
obj = sum(x.^2); pointtoplane.Objective = obj;
Cree la restricción lineal y colóque en el problema.
v = [1,2,4]; pointtoplane.Constraints = dot(x,v) == 7;
La formulación del problema está completa. Para comprobar si hay errores, revise el problema.
showproblem(pointtoplane)
OptimizationProblem : minimize : x(1)^2 + x(2)^2 + x(3)^2 subject to : x(1) + 2*x(2) + 4*x(3) == 7
La formulación es correcta.
Resuelva el problema llamando.solve
[sol,fval,exitflag,output] = solve(pointtoplane);
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
Para verificar la solución, resuelva el problema analíticamente. Recuerde que para cualquier distinto de cero, el vector es perpendicular al planot
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
De hecho, el vector equivale al punto que encuentra.xopt
sol.x
solve