OptimizationVariable

Переменная для оптимизации

Описание

OptimizationVariable объект содержит переменные для выражений оптимизации. Используйте выражения, чтобы представлять целевую функцию, ограничения или уравнения. Переменные являются символьными по своей природе и могут быть массивами любого размера.

Создание

Создайте OptimizationVariable объект с помощью optimvar.

Свойства

развернуть все

Свойства всего массива

Это свойство доступно только для чтения.

Имя переменной, заданное как строка или вектор символов.

Name дает переменную метку, которая будет отображена, такой как в show или writeИмя также дает имена полей в структуре решения что solve возвращается.

Совет

Чтобы избежать беспорядка, установите name быть именем переменной MATLAB®. Например,

metal = optimvar('metal')

Типы данных: char | string

Тип переменной, заданный как 'continuous' или 'integer'.

  • 'continuous' – Действительные значения

  • 'integer' – Целочисленные значения

Тип переменной применяется ко всем переменным в массиве. Чтобы иметь несколько тип переменных, создайте несколько переменных.

Совет

Чтобы задать бинарную переменную, используйте 'integer' введите и задайте LowerBound= 0 и UpperBound= 1 .

Типы данных: char | string

Имена индексов, заданные как массив ячеек строк или векторов символов. Для получения информации об использовании имен индексов смотрите Названный индекс для Переменных Оптимизации.

Типы данных: cell

Поэлементные свойства

Нижняя граница, заданная как действительный скаляр или как действительный массив, имеющий те же размерности как OptimizationVariable объект. Скалярные значения применяются ко всем элементам переменной.

LowerBound свойство всегда отображается как массив. Однако можно установить свойство как скаляр, который применяется ко всем элементам. Например,

var.LowerBound = 0

Типы данных: double

Верхняя граница, заданная как действительный скаляр или как действительный массив, имеющий те же размерности как OptimizationVariable объект. Скалярные значения применяются ко всем элементам переменной.

UpperBound свойство всегда отображается как массив. Однако можно установить свойство как скаляр, который применяется ко всем элементам. Например,

var.UpperBound = 1

Типы данных: double

Функции объекта

showОтобразите объект оптимизации
showboundsОтобразите переменные границы
writeСохраните описание объекта оптимизации
writeboundsСохраните описание переменных границ

Примеры

свернуть все

Создайте скалярную переменную оптимизации под названием 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.

Создайте вектор переменной оптимизации 3 на 1 под названием 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.

Создайте целочисленный вектор переменной оптимизации под названием bolts это индексируется строками "brass", "stainless", и "galvanized". Используйте индексы bolts создать выражение оптимизации и эксперимент с созданием bolts использование символьных массивов или в различной ориентации.

Создайте bolts использование строк подряд ориентация.

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.

Создайте выражение оптимизации с помощью индексов строк.

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

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

Используйте массив ячеек из символьных векторов вместо строк, чтобы получить переменную с теми же индексами как прежде.

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.

Используйте ориентированную на столбец версию bnames, 3 на 1 вместо 1 3, и наблюдают тот bolts имеет ту ориентацию также.

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.

Создайте 3 4 2 массивами переменных оптимизации под названием 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.

Можно также создать многомерные переменные, индексированные смесью имен и числовых индексов. Например, создайте массив 3 на 4 переменных оптимизации, где первая размерность индексируется строками 'brass', 'stainless', и 'galvanized', и второе измерение численно индексируется.

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.

Создайте переменную оптимизации под названием x из размера 3 3х3, который представляет бинарные переменные.

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.

Больше о

развернуть все

Советы

  • OptimizationVariable объекты имеют поведение копии указателя. Смотрите Поведение объекта Указателя (MATLAB) и Сравнение Классов Указателя и Значения (MATLAB). Обработайте средние значения поведения копии что копия OptimizationVariable точки к оригиналу и не имеют независимого существования. Например, создайте переменную x, скопируйте его в y, затем установите свойство y. Обратите внимание на то, что x берет новое значение свойства.

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

Введенный в R2017b