exponenta event banner

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