optimexpr

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

Синтаксис

expr = optimexpr(n)
expr = optimexpr(cstr)
expr = optimexpr(cstr1,n2,...,cstrk)
expr = optimexpr([n1,n2,...,nk])
expr = optimexpr({cstr1,cstr2,...,cstrk})

Описание

пример

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}), для любой комбинации положительных целых чисел n j и имена cstr j, создает пустой массив выражений оптимизации с размерностями, равными целым числам n j или продолжительности записей cstr j.

Примеры

свернуть все

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

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

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

  See expression formulation with showexpr.

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

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

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

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

Если 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 showexpr.

Создайте пустые 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 showexpr.

Создайте массив 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 showexpr.

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

x = optimvar('x',bnames,4);
expr('stainless',:) = x('galvanized',:)*1.5;
showexpr(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