OptimizationVariable

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

Описание

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

Создание

Создайте OptimizationVariable использование объекта optimvar.

Свойства

расширить все

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

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

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

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

Совет

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

metal = optimvar('metal')

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

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

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

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

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

Совет

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

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

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

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

Элементарные свойства

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

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

var.LowerBound = 0

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

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

The 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 объекты имеют поведение копирования указателя. Смотрите Поведение Объекта указатель и Сравнение Классов Handle и Value. Поведение копирования указатель означает, что копия OptimizationVariable указывает на оригинал и не имеет самостоятельного существования. Например, создайте переменную x, скопируйте его в y, затем установите свойство y. Обратите внимание, что x принимает новое значение свойства.

    x = optimvar('x','LowerBound',1);
    y = x;
    y.LowerBound = 0;
    showbounds(x)
        0 <= x
Введенный в R2017b