optimexpr

Создайте пустой массив выражения оптимизации

Описание

Использовать optimexpr для инициализации набора выражений оптимизации.

пример

expr = optimexpr(n) создает пустой n-by-1 OptimizationExpression массив. Использование expr как начальное значение в цикле, который создает выражения оптимизации.

пример

expr = optimexpr(cstr) создает пустой OptimizationExpression массив, который может использовать вектор cstr для индексации. Количество элементов expr совпадает с длиной cstr. Когда cstr является вектор-строка, тогда expr является вектор-строка. Когда cstr является вектор-столбец, тогда expr является вектор-столбец.

пример

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

Примеры

свернуть все

Создайте пустой массив из трех выражений оптимизации.

expr = optimexpr(3)
expr = 
  3x1 OptimizationExpression array with properties:

    IndexNames: {{}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

Создайте строковые массивы названий цвета и выражение оптимизации, которое индексируется названиями цвета.

strexp = ["red","green","blue","yellow"];
expr = optimexpr(strexp)
expr = 
  1x4 OptimizationExpression array with properties:

    IndexNames: {{}  {1x4 cell}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

Можно использовать массив ячеек из векторов символов вместо строк, чтобы получить тот же эффект.

strexp = {'red','green','blue','yellow'};
expr = optimexpr(strexp)
expr = 
  1x4 OptimizationExpression array with properties:

    IndexNames: {{}  {1x4 cell}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

Если strexp 4 на 1 вместо 1 на 4, затем expr также является 4 на 1:

strexp = ["red";"green";"blue";"yellow"];
expr = optimexpr(strexp)
expr = 
  4x1 OptimizationExpression array with properties:

    IndexNames: {{1x4 cell}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

Создайте пустой массив оптимизации 3 на 4 на 2.

expr = optimexpr(3,4,2)
expr = 
  3x4x2 OptimizationExpression array with properties:

    IndexNames: {{}  {}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

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

bnames = ["brass","stainless","galvanized"];
expr = optimexpr(bnames,4)
expr = 
  3x4 OptimizationExpression array with properties:

    IndexNames: {{1x3 cell}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

Создайте выражение с использованием именованного индекса, указывающего, что каждый stainless выражение в 1,5 раза больше соответствующего x(galvanized) значение.

x = optimvar('x',bnames,4);
expr('stainless',:) = x('galvanized',:)*1.5;
show(expr('stainless',:))
('stainless', 1)

  1.5*x('galvanized', 1)

('stainless', 2)

  1.5*x('galvanized', 2)

('stainless', 3)

  1.5*x('galvanized', 3)

('stainless', 4)

  1.5*x('galvanized', 4)

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

свернуть все

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

Пример: 4

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

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

Пример: expr = optimexpr(["Warehouse","Truck","City"])

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

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

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

свернуть все

Оптимизационное выражение, возвращенное как OptimizationExpression объект.

Совет

  • Можно использовать optimexpr чтобы создать пустые выражения, которые вы заполняете программно, например, в for цикл.

    x = optimvar('x',8);
    expr = optimexpr(4)
    for k = 1:4
        expr(k) = 5*k*(x(2*k) - x(2*k-1));
    end
  • Обычно более эффективно создавать выражения векторизованными операторами, а не циклами. См. «Создание эффективных задач оптимизации».

Введенный в R2017b