Main Content

barrierPenalty

경계가 지정된 영역에 대한 점의 로그 장벽 벌점 값

R2021b 이후

    설명

    예제

    p = barrierPenalty(x,xmin,xmax)xminxmax로 경계가 지정된 영역에 대해 점 x의 음이 아닌 (로그 장벽) 벌점 벡터 p를 계산합니다. px와 차원이 같습니다. 이 구문은 장벽 함수의 maxValuecurvature 파라미터에 대해 각각 디폴트 값 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");

    입력 인수

    모두 축소

    벌점이 계산되는 점으로, 숫자형 스칼라, 벡터 또는 행렬로 지정됩니다.

    예: [0.5; 1.6]

    x에 대한 하한으로, 숫자형 스칼라, 벡터 또는 행렬로 지정됩니다. x의 모든 요소에 대해 동일한 최솟값을 사용하려면 xmin을 스칼라로 지정하십시오.

    예: -1

    x에 대한 상한으로, 숫자형 스칼라, 벡터 또는 행렬로 지정됩니다. x의 모든 요소에 대해 동일한 최댓값을 사용하려면 xmax를 스칼라로 지정하십시오.

    예: 2

    장벽 함수의 최댓값 파라미터로, 스칼라로 지정됩니다.

    예: 2

    장벽 함수의 곡률 파라미터로, 스칼라로 지정됩니다.

    예: 0.2

    출력 인수

    모두 축소

    벌점 값으로, 음이 아닌 요소로 구성된 벡터로 반환됩니다. 각 요소 pixminixmaxi로 지정된 구간에 대한 xi의 위치에 따라 다릅니다. 장벽 벌점 함수는

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

    xmin < x < xmax일 때 위와 같은 값을 반환하고, 그렇지 않으면 maxValue를 반환합니다. 여기서 C는 인수 curvature이고 pmax는 인수 maxValue입니다. C가 양수 값인 경우 반환되는 벌점 값은 항상 양수입니다. C가 0인 경우 반환되는 벌점은 경계로 정의된 구간 내에서는 0이고 이 구간 밖에서는 pmax입니다. x가 다차원이면 각 차원에서 독립적으로 계산이 적용됩니다. 벌점 함수는 일반적으로 generateRewardFunction에서와 같이 제약 조건이 위반되었을 때 음의 보상을 생성하는 데 사용됩니다.

    확장 기능

    C/C++ 코드 생성
    MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

    버전 내역

    R2021b에 개발됨