optimexpr

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

Описание

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

пример

expr = optimexpr(n) создает пустой n- 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