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.

OptimizationExpression

Función objetiva o restricciones

Descripción

An es una expresión aritmética en términos de variables de optimización para una función objetiva o para la comparación en las restricciones.OptimizationExpression

Creación

Cree una expresión de optimización realizando operaciones en objetos.OptimizationVariable Utilice aritmética estándar, incluyendo la toma de poderes, indexación y concatenación de variables de optimización para crear expresiones.MATLAB® Ver.Ejemplos

También puede crear una expresión de optimización a partir de una función aplicada a las variables de optimización mediante el uso de.MATLABfcn2optimexpr Para ver ejemplos, vea y.Crear expresión a partir de función no linealOptimización no lineal basada en problemas

Cree una expresión de optimización vacía mediante.optimexpr Normalmente, se rellena la expresión en un bucle. Para ver ejemplos, vea y la página de referencia de función.Crear expresión de optimización mediante bucleoptimexpr

Propiedades

expandir todo

Nombres de índice, especificados como una matriz de celdas de cadenas o vectores de caracteres. Para obtener información sobre el uso de nombres de índice, consulte.Índice con nombre para variables de optimización

Tipos de datos: cell

Esta propiedad es de solo lectura.

Variables de optimización en el objeto, devueltas como una estructura de objetos.OptimizationVariable

Tipos de datos: struct

Funciones del objeto

evaluateEvalúe la expresión de optimización
showexprMostrar la expresión de optimización
writeexprGuardar Descripción de la expresión de optimización

Ejemplos

contraer todo

Cree expresiones de optimización mediante operaciones aritméticas en variables de optimización.

x = optimvar('x',3,2); expr = sum(sum(x))
expr =    Linear OptimizationExpression      x(1, 1) + x(2, 1) + x(3, 1) + x(1, 2) + x(2, 2) + x(3, 2)  
f = [2,10,4]; w = f*x; showexpr(w)
(1, 1)    2*x(1, 1) + 10*x(2, 1) + 4*x(3, 1)  (1, 2)    2*x(1, 2) + 10*x(2, 2) + 4*x(3, 2) 

Cree una expresión de optimización transponiendo una variable de optimización.

x = optimvar('x',3,2); y = x'
y =    2x3 Linear OptimizationExpression array with properties:      IndexNames: {{}  {}}      Variables: [1x1 struct] containing 1 OptimizationVariable    See expression formulation with showexpr.  

Simplemente indexar en una matriz de optimización no crea una expresión, sino que crea una variable de optimización que hace referencia a la variable original. Para ver esto, cree una variable que sea la primera y la tercera fila de.wx. Note that w is an optimization variable, not an optimization expression

w = x([1,3],:)
w =    2x2 OptimizationVariable array with properties:    Read-only array-wide properties:           Name: 'x'           Type: 'continuous'     IndexNames: {{}  {}}    Elementwise properties:     LowerBound: [2x2 double]     UpperBound: [2x2 double]    Reference to a subset of OptimizationVariable with Name 'x'.    See variables with showvar.   See bounds with showbounds.  

Cree una expresión de optimización concatenando variables de optimización.

y = optimvar('y',4,3); z = optimvar('z',4,7); f = [y,z]
f =    4x10 Linear OptimizationExpression array with properties:      IndexNames: {{}  {}}      Variables: [1x1 struct] containing 2 OptimizationVariables    See expression formulation with showexpr.  

Utilínela para crear una expresión vacía y, a continuación, rellene la expresión en un bucle.optimexpr

y = optimvar('y',6,4); expr = optimexpr(3,2); for i = 1:3     for j = 1:2         expr(i,j) = y(2*i,j) - y(i,2*j);     end end showexpr(expr)
(1, 1)    y(2, 1) - y(1, 2)  (2, 1)    y(4, 1) - y(2, 2)  (3, 1)    y(6, 1) - y(3, 2)  (1, 2)    y(2, 2) - y(1, 4)  (2, 2)    y(4, 2) - y(2, 4)  (3, 2)    y(6, 2) - y(3, 4) 

Cree una expresión de optimización que corresponda a la función objetiva

<math display="block">
<mrow>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msup>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>1</mn>
<mn>0</mn>
<mo>+</mo>
<mi mathvariant="normal">exp</mi>
<mo stretchy="false">(</mo>
<mo>-</mo>
<mi mathvariant="normal">exp</mi>
<mo stretchy="false">(</mo>
<mo>-</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
<mo>.</mo>
</mrow>
</math>

x = optimvar('x'); f = @(x)x^2/10 + exp(-exp(-x)); fun = fcn2optimexpr(f,x)
fun =    Nonlinear OptimizationExpression      anonymousFunction1(x)    where:      anonymousFunction1 = @(x)x^2/10+exp(-exp(-x));  

Encuentre el punto que minimiza a partir del punto.funx0 = 0

x0 = struct('x',0); prob = optimproblem('Objective',fun); [sol,fval] = solve(prob,x0)
Local minimum found.  Optimization completed because the size of the gradient is less than the value of the optimality tolerance.  <stopping criteria details> 
sol = struct with fields:
    x: -0.9595

fval = 0.1656 

Más acerca de

expandir todo

Introducido en R2017b