メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

barrierPenalty

有界領域に対する点の対数バリア ペナルティ値

R2021b 以降

    説明

    p = barrierPenalty(x,xmin,xmax) は、xminxmax で囲まれた領域に関して、点 x の非負 (対数バリア) ペナルティ ベクトル p を計算します。px と同じ次元をもちます。この構文では、バリア関数の maxValue パラメーターと curvature パラメーターにそれぞれ既定値 10.1 を使用します。

    p = barrierPenalty(___,maxValue,curvature) は、バリア関数の maxValue パラメーターと curvature パラメーターの両方を指定します。maxValue が空の行列の場合、その既定値が使用されます。同様に、curvature が空の行列であるか省略されている場合、その既定値が使用されます。

    すべて折りたたむ

    この例では、対数 barrierPenalty 関数を使用して、有界領域に関して、任意の点のバリア ペナルティを計算する方法を示します。

    最大値と曲率パラメーターの既定値を使用して、区間 [-2,2] 内の点 0.1 のペナルティ値を計算します。

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

    区間 [-2,2] 外の点 4 のペナルティ値を計算します。

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

    最大値パラメーター 5 を使用して、区間 [-2,2] 外の点 4 のペナルティ値を計算します。

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

    曲率パラメーター 0.5 を使用して、区間 [-2,2] 内の点 0.1 のペナルティ値を計算します。

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

    最大値の既定値と曲率パラメーター 0 を使用して、x、y、z 次元に沿ってそれぞれ [0,1]、[-1,1]、[-2,2] で定義されたボックスに対して、点 [-2,0,4] のペナルティ値を計算します。

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

    区間のペナルティ値の可視化

    -55 の間に分布する 1001 個の等間隔の点から成るベクトルを作成します。

    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, xlabel point position, ylabel penalty value contains an object of type line.

    入力引数

    すべて折りたたむ

    ペナルティを計算する点。数値スカラー、ベクトル、または行列として指定します。

    例: [0.5; 1.6]

    x の下限。数値スカラー、ベクトル、または行列として指定します。x 内のすべての要素に同じ最小値を使用するには、xmin をスカラーとして指定します。

    例: -1

    x の上限。数値スカラー、ベクトル、または行列として指定します。x 内のすべての要素に同じ最大値を使用するには、xmax をスカラーとして指定します。

    例: 2

    バリア関数の最大値パラメーター。スカラーとして指定します。

    例: 2

    バリア関数の曲率パラメーター。スカラーとして指定します。

    例: 0.2

    出力引数

    すべて折りたたむ

    ペナルティ値。非負の要素から成るベクトルとして返されます。各要素 pi は、xminixmaxi によって指定された間隔に対する xi の位置に依存します。バリア ペナルティ関数は次の値を返します。

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

    xmin < x < xmax の場合にこれが返されますが、それ以外の場合は maxValue が返されます。ここで、C は引数 curvaturepmax は引数 maxValue です。C が正の値の場合は、返されるペナルティ値が常に正になることに注意してください。C がゼロの場合は、返されるペナルティは境界によって定義された区間内ではゼロ、その区間外では pmax になります。x が多次元の場合、計算は各次元で個別に適用されます。ペナルティ関数は通常、generateRewardFunction などで、制約違反時に負の報酬を生成するために使用されます。

    拡張機能

    すべて展開する

    C/C++ コード生成
    MATLAB® Coder™ を使用して C および C++ コードを生成します。

    バージョン履歴

    R2021b で導入