optimvar

Создайте переменные оптимизации

Синтаксис

x = optimvar(name)
x = optimvar(name,n)
x = optimvar(name,cstr)
x = optimvar(name,cstr1,n2,...,cstrk)
x = optimvar(name,{cstr1,cstr2,...,cstrk})
x = optimvar(name,[n1,n2,...,nk])
x = optimvar(___,Name,Value)

Описание

пример

x = optimvar(name) создает скалярную переменную оптимизации. Переменная оптимизации является символьным объектом, который позволяет вам создать выражения для целевой функции и ограничения задач с точки зрения переменной.

Совет

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

metal = optimvar('metal')

пример

x = optimvar(name,n) создает n-by-1 вектор переменных оптимизации.

пример

x = optimvar(name,cstr) создает вектор переменных оптимизации, которые могут использовать cstr для индексации. Число элементов x совпадает с длиной вектора cstr. Ориентация x совпадает с ориентацией cstr: x является вектором - строкой, когда cstr является вектором - строкой, и x является вектор-столбцом, когда cstr является вектор-столбцом.

пример

x = optimvar(name,cstr1,n2,...,cstrk) или x = optimvar(name,{cstr1,cstr2,...,cstrk}) или x = optimvar(name,[n1,n2,...,nk]), для любой комбинации положительных целых чисел n j и имена cstr k, создает массив переменных оптимизации с размерностями, равными целым числам n j и продолжительности записей cstr1 k.

пример

x = optimvar(___,Name,Value), для любого предыдущего синтаксиса, дополнительные опции использования, заданные одним или несколькими аргументами пары Name,Value. Например, чтобы задать целочисленную переменную, используйте x = optimvar('x','Type','integer').

Примеры

свернуть все

Создайте скалярную переменную оптимизации под названием dollars.

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

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

  See variables with showvar.
  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 showvar.
  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 showvar.
  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 showvar.
  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 showvar.
  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 showvar.
  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 showvar.
  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 showvar.
  See bounds with showbounds.

Входные параметры

свернуть все

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

Совет

Чтобы избежать беспорядка, о котором имя относится, который аспект переменной, определяет имя переменной рабочей области к имени переменной. Например,

truck = optimvar('truck');

Пример: "Warehouse"

Пример: 'truck'

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

Переменная размерность, заданная как положительное целое число.

Пример 4

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

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

Пример: x = optimvar('x',["Warehouse","Truck","City"])

Пример: x = optimvar('x',{'Warehouse','Truck','City'})

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: Создайте x как неотрицательный вектор с 3 элементами с x(2) <= 2 и x(3) <= 4 командой x = optimvar('x',3,'LowerBound',0,'UpperBound',[Inf,2,4])

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

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

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

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

Совет

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

Пример: 'integer'

Нижние границы, заданные как массив, одного размера как x или как действительный скаляр. Если LowerBound является скаляром, значение применяется ко всем элементам x.

Пример: Чтобы установить нижнюю границу 0 ко всем элементам x, задайте скалярное значение 0.

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

Верхние границы, заданные как массив, одного размера как x или как действительный скаляр. Если UpperBound является скаляром, значение применяется ко всем элементам x.

Пример: Чтобы установить верхнюю границу 2 ко всем элементам x, задайте скалярное значение 2.

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

Выходные аргументы

свернуть все

Переменная Optimization, возвращенная как массив OptimizationVariable. Размерности массива совпадают с теми из соответствующих входных переменных, таких как cstr 1-by-cstr2.

Советы

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

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

Введенный в R2017b