OptimizationExpression

Целевая функция или ограничения

Описание

OptimizationExpression является арифметическим выражением с точки зрения переменных оптимизации для целевой функции или для сравнения в ограничениях.

Создание

Создайте выражение оптимизации путем выполнения операций на объектах OptimizationVariable. Используйте стандартную арифметику MATLAB® включая взятия власти, индексацию и конкатенацию переменных оптимизации, чтобы создать выражения. Смотрите Примеры.

Можно также создать выражение оптимизации из функции MATLAB, применился к переменным оптимизации при помощи fcn2optimexpr. Для примеров смотрите, Создают Выражение из Нелинейной Функции и Основанной на проблеме Нелинейной Оптимизации.

Создайте пустое выражение оптимизации при помощи optimexpr. Как правило, вы затем заполняете выражение в цикле. Для примеров смотрите, Создают Выражение Оптимизации Цикличным выполнением и страницей ссылки на функцию optimexpr.

Свойства

развернуть все

Имена индексов, заданные как массив ячеек строк или векторов символов. Для получения информации об использовании имен индексов смотрите Названный Индекс для Переменных Оптимизации.

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

Это свойство доступно только для чтения.

Переменные оптимизации в объекте, возвращенном как структура объектов OptimizationVariable.

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

Функции объекта

evaluateВыполните выражение оптимизации
showexprОтобразите выражение оптимизации
writeexprСохраните описание выражения оптимизации

Примеры

свернуть все

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

x = optimvar('x',3,2);
expr = sum(sum(x))
expr = 
  Linear OptimizationExpression

    x(1, 1) + x(2, 1) + x(3, 1) + x(1, 2) + x(2, 2) + x(3, 2)

f = [2,10,4];
w = f*x;
showexpr(w)
(1, 1)

  2*x(1, 1) + 10*x(2, 1) + 4*x(3, 1)

(1, 2)

  2*x(1, 2) + 10*x(2, 2) + 4*x(3, 2)

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

x = optimvar('x',3,2);
y = x'
y = 
  2x3 Linear OptimizationExpression array with properties:

    IndexNames: {{}  {}}
     Variables: [1x1 struct] containing 1 OptimizationVariable

  See expression formulation with showexpr.

Просто индексация в массив оптимизации не создает выражение, но вместо этого создает переменную оптимизации, которая ссылается на исходную переменную. Чтобы видеть это, создайте переменную w, которая является первой и третьей строкой x. Note that w is an optimization variable, not an optimization expression.

w = x([1,3],:)
w = 
  2x2 OptimizationVariable array with properties:

  Read-only array-wide properties:
          Name: 'x'
          Type: 'continuous'
    IndexNames: {{}  {}}

  Elementwise properties:
    LowerBound: [2x2 double]
    UpperBound: [2x2 double]

  Reference to a subset of OptimizationVariable with Name 'x'.

  See variables with showvar.
  See bounds with showbounds.

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

y = optimvar('y',4,3);
z = optimvar('z',4,7);
f = [y,z]
f = 
  4x10 Linear OptimizationExpression array with properties:

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

  See expression formulation with showexpr.

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

y = optimvar('y',6,4);
expr = optimexpr(3,2);
for i = 1:3
    for j = 1:2
        expr(i,j) = y(2*i,j) - y(i,2*j);
    end
end
showexpr(expr)
(1, 1)

  y(2, 1) - y(1, 2)

(2, 1)

  y(4, 1) - y(2, 2)

(3, 1)

  y(6, 1) - y(3, 2)

(1, 2)

  y(2, 2) - y(1, 4)

(2, 2)

  y(4, 2) - y(2, 4)

(3, 2)

  y(6, 2) - y(3, 4)

Создайте выражение оптимизации, соответствующее целевой функции

f(x)=x2/10+exp(-exp(-x)).

x = optimvar('x');
f = @(x)x^2/10 + exp(-exp(-x));
fun = fcn2optimexpr(f,x)
fun = 
  Nonlinear OptimizationExpression

    anonymousFunction1(x)

  where:

    anonymousFunction1 = @(x)x^2/10+exp(-exp(-x));

Найдите точку, которая минимизирует fun, начинающий с точки x0 = 0.

x0 = struct('x',0);
prob = optimproblem('Objective',fun);
[sol,fval] = solve(prob,x0)
Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

<stopping criteria details>
sol = struct with fields:
    x: -0.9595

fval = 0.1656

Больше о

развернуть все

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте