Main Content

hyperbolicPenalty

Hyperbolic penalty value for a point with respect to a bounded region

    Description

    example

    p= hyperbolicPenalty(x,xmin,xmax)calculates the nonnegative (hyperbolic) penalty vectorpfor the pointxwith respect to the region bounded byxminandxmax.phas the same dimension asx. This syntax uses the default values of1and0.1for thelambdaandtauparameters of the hyperbolic function, respectively.

    example

    p= hyperbolicPenalty(___,lambda,tau)specifies both thelambdaandtauparameters of the hyperbolic function. Iflambdais an empty matrix its default value is used. Likewise iftauis an empty matrix or it is omitted, its default value is used instead.

    Examples

    collapse all

    This example shows how to use thehyperbolicPenaltyfunction to calculate the hyperbolic penalty for a given point with respect to a bounded region.

    Calculate the penalty value for the point0.1within the interval [-2,2], using default values for thelambdaandtauparameters.

    hyperbolicPenalty(0.1,-2,2)
    ans = 0.0050

    Calculate the penalty value for the point4outside the interval [-2,2].

    hyperbolicPenalty(4,-2,2)
    ans = 4.0033

    Calculate the penalty value for the point0.1within the interval [-2,2], using alambdaparameter of5.

    hyperbolicPenalty (0.1, 2, 2, 5)
    ans = 0.0010

    Calculate the penalty value for the point4outside the interval [-2,2], using alambdaparameter of5.

    hyperbolicPenalty(4,-2,2,5)
    ans = 20.0007

    Calculate the penalty value for the point4outside the interval [-2,2], using atauparameter of0.5.

    hyperbolicPenalty(4,-2,2,5,0.5)
    ans = 20.0167

    Calculate the penalty value for the point [-2,0,4] with respect to the box defined by the intervals [0,1], [-1,1], and [-2,2] along the x, y, and z dimensions, respectively, using the default value forlambdaand atauparameter of0.

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

    Visualize Penalty Values for an Interval

    Create a vector of 1001 equidistant points distributed between -5and5.

    x = -5:0.01:5;

    Calculate penalties for all the points in the vector, using default values for thelambdaandtauparameters.

    p = hyperbolicPenalty(x,-2,2);

    Plot the points and add grid, labels and title.

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

    Input Arguments

    collapse all

    Point for which the penalty is calculated, specified as a numeric scalar, vector or matrix.

    Example:[0.5; 1.6]

    Lower bounds forx, specified as a numeric scalar, vector or matrix. To use the same minimum value for all elements inxspecifyxminas a scalar.

    Example:-1

    Upper bounds forx, specified as a numeric scalar, vector or matrix. To use the same maximum value for all elements inxspecifyxmaxas a scalar.

    Example:2

    Lambda parameter of the hyperbolic function, specified as a scalar.

    Example:3

    Tau parameter of the hyperbolic function, specified as a scalar.

    Example:0.3

    Output Arguments

    collapse all

    刑罚的价值,作为一个返回vector of nonnegative elements. Each elementpidepends on the position ofxiwith respect to the interval specified byxminiandxmaxi. The hyperbolic penalty function returns the value:

    p ( x ) = λ ( x x min ) + λ 2 ( x x min ) 2 + τ 2 λ ( x max x ) + λ 2 ( x max x ) 2 + τ 2

    Here,λis the argumentlambda, andτis the argumenttau. Note that for positive values ofτthe returned penalty value is always positive, because on the right side of the equation the magnitude of the second term is always greater than that of the first, and the magnitude of the fourth term is always greater than that of the third. Ifτis zero, then the returned penalty is zero inside the interval defined by the bounds, and it grows linearly withxoutside this interval. Ifxis multidimensional, then the calculation is applied independently on each dimension. Penalty functions are typically used to generate negative rewards when constraints are violated, such as ingenerateRewardFunction.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2021b