barrierPenalty

Логарифмическое значение штрафа барьера для точки относительно ограниченной области

    Описание

    пример

    p = barrierPenalty(x,xmin,xmax) вычисляет неотрицательное (логарифмический барьер) вектор штрафа p для точки x относительно области, ограниченной xmin и xmaxP имеет ту же размерность как x. Этот синтаксис использует значения по умолчанию 1 и 0.1 для maxValue и curvature параметры барьерной функции, соответственно.

    пример

    p = barrierPenalty(___,maxValue,curvature) задает обоих maxValue и curvature параметры барьерной функции. Если maxValue пустая матрица, его значение по умолчанию используется. Аналогично, если curvature пустая матрица, или она не использована, ее значение по умолчанию используется.

    Примеры

    свернуть все

    В этом примере показано, как использовать логарифмический barrierPenalty функция, чтобы вычислить штраф барьера за данную точку, относительно ограниченной области.

    Вычислите значение штрафа для точки 0.1 в интервале [-2,2] использование значений по умолчанию для максимального значения и параметров искривления.

    barrierPenalty(0.1,-2,2)
    ans = 2.5031e-04
    

    Вычислите значение штрафа для точки 4 вне интервала [-2,2].

    barrierPenalty(4,-2,2)
    ans = 1
    

    Вычислите значение штрафа для точки 4 вне интервала [-2,2], с помощью параметра максимального значения 5.

    barrierPenalty(4,-2,2,5)
    ans = 5
    

    Вычислите значение штрафа для точки 0.1 в интервале [-2,2], с помощью параметра искривления 0.5.

    barrierPenalty(0.1,-2,2,5,0.5)
    ans = 0.0013
    

    Вычислите значение штрафа для точки [-2,0,4] относительно поля, заданного [0,1], [-1,1], и [-2,2] вдоль x, y, и z размерностей, соответственно, с помощью значения по умолчанию для максимального значения и параметра искривления 0.

    barrierPenalty([-2 0 4],[0 -1 -2],[1 1 2],1,0)
    ans = 3×1
    
         1
         0
         1
    
    

    Визуализируйте значения штрафа для интервала

    Создайте вектор из 1 001 равноотстоящей точки, распределенной между-5 и 5.

    x = -5:0.01:5;

    Вычислите штрафы за все точки в векторе, с помощью значения по умолчанию для параметра максимального значения и значения 0.01 для параметра искривления.

    p = barrierPenalty(x,-2,2,1,0.01);

    Постройте точки и добавьте сетку, метки и заголовок.

    plot(x,p)
    grid
    xlabel("point position");
    ylabel("penalty value");
    title("Penalty values over an interval");

    Figure contains an axes object. The axes object with title Penalty values over an interval contains an object of type line.

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

    свернуть все

    Укажите, для которого штраф вычисляется в виде числового скаляра, вектора или матрицы.

    Пример: [0.5; 1.6]

    Нижние границы для xВ виде числового скаляра, вектора или матрицы. Использовать то же минимальное значение для всех элементов в x, задайте xmin как скаляр.

    Пример 1

    Верхние границы для xВ виде числового скаляра, вектора или матрицы. Использовать то же максимальное значение для всех элементов в x, задайте xmax как скаляр.

    Пример 2

    Параметр максимального значения барьерной функции в виде скаляра.

    Пример 2

    Параметр искривления барьерной функции в виде скаляра.

    Пример: 0.2

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

    свернуть все

    Значение штрафа, возвращенное как вектор из неотрицательных элементов. Каждый элемент pi зависит от положения xi относительно интервала, заданного xmini и xmaxi. Функция штрафа барьера возвращает значение

    p(x)=min(pmax,C(log(0.25(xmaxxmin)2)log((xxmin)(xmaxxmin))))

    когда xmin < x < xmax и maxValue в противном случае. Здесь, C является аргументом curvature, и pmax является аргументом maxValue. Обратите внимание на то, что для положительных значений C возвращенное значение штрафа всегда положительно. Если C является нулем, то возвращенный штраф является нулем в интервале, заданном границами и pmax вне этого интервала. Если x многомерен, то вычисление применяется независимо на каждой размерности. Функции штрафа обычно используются, чтобы сгенерировать отрицательные вознаграждения, когда ограничения нарушены, такой как в generateRewardFunction.

    Расширенные возможности

    Генерация кода C/C++
    Генерация кода C и C++ с помощью MATLAB® Coder™.

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