optimvar

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

Описание

пример

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

Совет

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

metal = optimvar('metal')

пример

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

пример

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

пример

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

пример

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 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.

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

свернуть все

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

Совет

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

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 имя аргумента и 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' – Целочисленные значения

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

Совет

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

Пример: 'integer'

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

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

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

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

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

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

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

свернуть все

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

Советы

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

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

Введенный в R2017b