Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Introducción a la tarea Optimize basada en solvers de Live Editor

Este script de ejemplo ayuda a utilizar la tarea Optimize basada en solvers de Live Editor para la optimización o la resolución de ecuaciones. Modifique el script para su propio problema.

El script resuelve un problema de optimización no lineal con restricciones no lineales.

Incluir parámetros o datos

Habitualmente, tiene datos o valores para pasar al solver. Coloque esos valores en la sección de entrada (donde vea x0) y ejecute la sección seleccionando Section > Run Section (Sección > Ejecutar sección) o pulsando Control+Enter.

Establezca el punto inicial en x0 y escale a para la optimización.

x0 = [2;1];
a = 100;

Coloque el valor x0 y cualquier otro dato del problema en el espacio de trabajo ejecutando esta sección antes de proceder.

Tarea Optimize de Live Editor

Por lo general, se coloca la tarea Optimize de Live Editor en el script seleccionando Task > Optimize en la pestaña Live Editor o seleccionando Task > Optimize en la pestaña Insert. Después, se presenta la siguiente opción (esto solo es una imagen, no la tarea real):

optimizelet_choose.png

Para obtener la tarea basada en solvers, haga clic en Solver-based.

La siguiente tarea basada en solvers incluye funciones objetivo y de restricción no lineales. Para cambiar esas funciones, edite las listas de funciones debajo de la tarea.

Para cambiar las restricciones, seleccione los tipos de restricciones adecuados e introduzca los valores en los cuadros de entrada. Es posible que necesite introducir valores en la sección que contiene x0 en la parte de arriba y ejecutar la sección para colocar valores en el espacio de trabajo.

Ejecute la tarea haciendo clic en la barra rayada de la izquierda, seleccionando Run (Ejecutar) o Section > Run Section (Sección > Ejecutar sección), o pulsando Control+Enter.

Live Task

Figure Optimization Plot Function contains an axes object. The axes object with title Best Function Value: 0.019972, xlabel Iteration, ylabel Function value contains 2 objects of type scatter. These objects represent Best function value, Best function value (infeasible).

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.

Resultados

Optimize guarda la solución en la variable del espacio de trabajo solution y guarda el valor de la función objetivo en la solución en la variable del espacio de trabajo objectiveValue. Puede consultar y modificar estos nombres de variables en la parte superior de la tarea Optimize.

Visualice estas variables.

solution
solution = 2×1

    1.1413
    1.3029

objectiveValue
objectiveValue = 0.0200

Visualice los valores de la función de restricción no lineal en la solución.

[ccons,ceqcons] = constraintFcn(solution)
ccons = 1×2

   -2.0000   -0.0000

ceqcons =

     []

Funciones auxiliares — Funciones locales

El siguiente código crea la función objetivo. Modifique este código para su problema.

function f = objectiveFcn(x,a)
f = a*(x(2) - x(1)^2)^2 + (1 - x(1))^2;
end

El siguiente código crea la función de restricción. Modifique este código para su problema.

function [c,ceq] = constraintFcn(x)
c(1) = x(1)^2 + x(2)^2 - 5;
c(2) = 3 - x(1)^2 - x(2)^2;
ceq = [];  % No equality constraints
end

Consulte también

Temas relacionados