Main Content

OptimizationVariable

Variable para optimización

Descripción

Un objeto OptimizationVariable contiene variables para expresiones de optimización. Utilice expresiones para representar una función objetivo, restricciones o ecuaciones. Las variables son de naturaleza simbólica y pueden ser arreglos de cualquier tamaño.

Creación

Cree un objeto OptimizationVariable utilizando optimvar.

Propiedades

expandir todo

Propiedades por arreglos

Esta propiedad es de solo lectura.

Nombre de variable, especificado como cadena o vector de caracteres.

Name proporciona la etiqueta de variable que se va a mostrar, como en show o write. Name también proporciona los nombres de campo de la estructura de solución que devuelve solve.

Sugerencia

Para evitar confusiones, establezca name de forma que sea el nombre de variable de MATLAB®. Por ejemplo:

metal = optimvar('metal')

Tipos de datos: char | string

Tipo de variable, especificado como 'continuous' o 'integer'.

  • 'continuous': valores reales

  • 'integer': valores enteros

El tipo de variable se aplica a todas las variables del arreglo. Para tener varios tipos de variables, cree múltiples variables.

Sugerencia

Para especificar una variable binaria, utilice el tipo 'integer' y especifique LowerBound = 0 y UpperBound = 1.

Tipos de datos: char | string

Nombres de índices, especificados como un arreglo de celdas de cadenas o vectores de caracteres. Para obtener más información sobre cómo utilizar nombres de índices, consulte Named Index for Optimization Variables.

Tipos de datos: cell

Propiedades por elementos

Límite inferior, especificado como escalar real o arreglo real con las mismas dimensiones que el objeto OptimizationVariable. Los valores escalares se aplican a todos los elementos de la variable.

La propiedad LowerBound se muestra siempre como un arreglo. No obstante, puede establecer la propiedad como un escalar que se aplica a todos los elementos. Por ejemplo:

var.LowerBound = 0

Tipos de datos: double

Límite superior, especificado como escalar real o arreglo real con las mismas dimensiones que el objeto OptimizationVariable. Los valores escalares se aplican a todos los elementos de la variable.

La propiedad UpperBound se muestra siempre como un arreglo. No obstante, puede establecer la propiedad como un escalar que se aplica a todos los elementos. Por ejemplo

var.UpperBound = 1

Tipos de datos: double

Funciones del objeto

showMuestre información sobre el objeto de optimización
showboundsMuestre los límites de las variables
writeSave optimization object description
writeboundsSave description of variable bounds

Ejemplos

contraer todo

Cree una variable de optimización escalar llamada dollars.

dollars = optimvar('dollars')
dollars = 
  OptimizationVariable with properties:

          Name: 'dollars'
          Type: 'continuous'
    IndexNames: {{}  {}}
    LowerBound: -Inf
    UpperBound: Inf

  See variables with show.
  See bounds with showbounds.

Cree un vector de variable de optimización de 3 por 1 llamado x.

x = optimvar('x',3)
x = 
  3x1 OptimizationVariable array with properties:

  Array-wide properties:
          Name: 'x'
          Type: 'continuous'
    IndexNames: {{}  {}}

  Elementwise properties:
    LowerBound: [3x1 double]
    UpperBound: [3x1 double]

  See variables with show.
  See bounds with showbounds.

Cree un vector de variable de optimización de enteros llamado bolts indexado por las cadenas "brass", "stainless" y "galvanized". Utilice los índices de bolts para crear una expresión de optimización y experimente con la creación de bolts utilizando arreglos de caracteres o en una orientación diferente.

Cree bolts utilizando cadenas en una orientación de fila.

bnames = ["brass","stainless","galvanized"];
bolts = optimvar('bolts',bnames,'Type','integer')
bolts = 
  1x3 OptimizationVariable array with properties:

  Array-wide properties:
          Name: 'bolts'
          Type: 'integer'
    IndexNames: {{}  {1x3 cell}}

  Elementwise properties:
    LowerBound: [-Inf -Inf -Inf]
    UpperBound: [Inf Inf Inf]

  See variables with show.
  See bounds with showbounds.

Cree una expresión de optimización utilizando los índices de cadena.

y = bolts("brass") + 2*bolts("stainless") + 4*bolts("galvanized")
y = 
  Linear OptimizationExpression

    bolts('brass') + 2*bolts('stainless') + 4*bolts('galvanized')

Utilice un arreglo de celdas de vectores de caracteres en lugar de cadenas para obtener una variable con los mismos índices que anteriormente.

bnames = {'brass','stainless','galvanized'};
bolts = optimvar('bolts',bnames,'Type','integer')
bolts = 
  1x3 OptimizationVariable array with properties:

  Array-wide properties:
          Name: 'bolts'
          Type: 'integer'
    IndexNames: {{}  {1x3 cell}}

  Elementwise properties:
    LowerBound: [-Inf -Inf -Inf]
    UpperBound: [Inf Inf Inf]

  See variables with show.
  See bounds with showbounds.

Utilice una versión de bnames orientada a columnas, de 3 por 1 en lugar de 1 por 3, y observe que bolts también tiene esa orientación.

bnames = ["brass";"stainless";"galvanized"];
bolts = optimvar('bolts',bnames,'Type','integer')
bolts = 
  3x1 OptimizationVariable array with properties:

  Array-wide properties:
          Name: 'bolts'
          Type: 'integer'
    IndexNames: {{1x3 cell}  {}}

  Elementwise properties:
    LowerBound: [3x1 double]
    UpperBound: [3x1 double]

  See variables with show.
  See bounds with showbounds.

Cree un arreglo de 3 por 4 por 2 de variables de optimización llamado xarray.

xarray = optimvar('xarray',3,4,2)
xarray = 
  3x4x2 OptimizationVariable array with properties:

  Array-wide properties:
          Name: 'xarray'
          Type: 'continuous'
    IndexNames: {{}  {}  {}}

  Elementwise properties:
    LowerBound: [3x4x2 double]
    UpperBound: [3x4x2 double]

  See variables with show.
  See bounds with showbounds.

También puede crear variables multidimensionales indexadas por una mezcla de nombres e índices numéricos. Por ejemplo, cree un arreglo de 3 por 4 de variables de optimización donde la primera dimensión esté indexada por las cadenas 'brass', 'stainless' y 'galvanized', y la segunda dimensión esté indexada numéricamente.

bnames = ["brass","stainless","galvanized"];
bolts = optimvar('bolts',bnames,4)
bolts = 
  3x4 OptimizationVariable array with properties:

  Array-wide properties:
          Name: 'bolts'
          Type: 'continuous'
    IndexNames: {{1x3 cell}  {}}

  Elementwise properties:
    LowerBound: [3x4 double]
    UpperBound: [3x4 double]

  See variables with show.
  See bounds with showbounds.

Cree una variable de optimización llamada x con un tamaño de 3 por 3 por 3 que represente variables binarias.

x = optimvar('x',3,3,3,'Type','integer','LowerBound',0,'UpperBound',1)
x = 
  3x3x3 OptimizationVariable array with properties:

  Array-wide properties:
          Name: 'x'
          Type: 'integer'
    IndexNames: {{}  {}  {}}

  Elementwise properties:
    LowerBound: [3x3x3 double]
    UpperBound: [3x3x3 double]

  See variables with show.
  See bounds with showbounds.

Más acerca de

expandir todo

Sugerencias

  • Los objetos OptimizationVariable tienen comportamiento de copia de identificador. Consulte Handle Object Behavior y Comparison of Handle and Value Classes. Comportamiento de copia de identificador significa que una copia de una OptimizationVariable apunta al original y no existe de forma independiente. Por ejemplo, cree una variable x, cópiela en y y, después, establezca una propiedad de y. Tenga en cuenta que x toma el valor de propiedad nuevo.

    x = optimvar('x','LowerBound',1);
    y = x;
    y.LowerBound = 0;
    showbounds(x)
        0 <= x

Historial de versiones

Introducido en R2017b