descent/objectives.py
def goldstein_price(theta):
    """Goldstein-Price function"""
    x, y = theta
    obj = (1 + (x + y + 1) ** 2 * (19 - 14 * x + 3 * x ** 2 - 14 * y + 6 * x * y + 3 * y ** 2)) * \
          (30 + (2 * x - 3 * y) ** 2 *
           (18 - 32 * x + 12 * x ** 2 + 48 * y - 36 * x * y + 27 * x ** 2))
    grad = np.array([
        ((2 * x - 3 * y)**2 * (78 * x - 36 * y - 32) + (8 * x - 12 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 *
         (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
        ((-36 * x + 48) * (2 * x - 3 * y)**2 + (-12 * x + 18 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 * (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
    ])
    return obj, grad
def goldstein_price(theta):
    """Goldstein-Price function"""
    x, y = theta
    obj = (1 + (x + y + 1) ** 2 * (19 - 14 * x + 3 * x ** 2 - 14 * y + 6 * x * y + 3 * y ** 2)) * \
          (30 + (2 * x - 3 * y) ** 2 *
           (18 - 32 * x + 12 * x ** 2 + 48 * y - 36 * x * y + 27 * x ** 2))
    grad = np.array([
        ((2 * x - 3 * y)**2 * (78 * x - 36 * y - 32) + (8 * x - 12 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 *
         (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
        ((-36 * x + 48) * (2 * x - 3 * y)**2 + (-12 * x + 18 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 * (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
    ])
    return obj, grad
def goldstein_price ( theta ) : x , y = theta obj = ( 1 + ( x + y + 1 ) ** 2 * ( 19 - 14 * x + 3 * x ** 2 - 14 * y + 6 * x * y + 3 * y ** 2 ) ) * ( 30 + ( 2 * x - 3 * y ) ** 2 * ( 18 - 32 * x + 12 * x ** 2 + 48 * y - 36 * x * y + 27 * x ** 2 ) ) grad = np . array ( [ ( ( 2 * x - 3 * y ) ** 2 * ( 78 * x - 36 * y - 32 ) + ( 8 * x - 12 * y ) * ( 39 * x ** 2 - 36 * x * y - 32 * x + 48 * y + 18 ) ) * ( ( x + y + 1 ) ** 2 * ( 3 * x ** 2 + 6 * x * y - 14 * x + 3 * y ** 2 - 14 * y + 19 ) + 1 ) + ( ( 2 * x - 3 * y ) ** 2 * ( 39 * x ** 2 - 36 * x * y - 32 * x + 48 * y + 18 ) + 30 ) * ( ( x + y + 1 ) ** 2 * ( 6 * x + 6 * y - 14 ) + ( 2 * x + 2 * y + 2 ) * ( 3 * x ** 2 + 6 * x * y - 14 * x + 3 * y ** 2 - 14 * y + 19 ) ) , ( ( - 36 * x + 48 ) * ( 2 * x - 3 * y ) ** 2 + ( - 12 * x + 18 * y ) * ( 39 * x ** 2 - 36 * x * y - 32 * x + 48 * y + 18 ) ) * ( ( x + y + 1 ) ** 2 * ( 3 * x ** 2 + 6 * x * y - 14 * x + 3 * y ** 2 - 14 * y + 19 ) + 1 ) + ( ( 2 * x - 3 * y ) ** 2 * ( 39 * x ** 2 - 36 * x * y - 32 * x + 48 * y + 18 ) + 30 ) * ( ( x + y + 1 ) ** 2 * ( 6 * x + 6 * y - 14 ) + ( 2 * x + 2 * y + 2 ) * ( 3 * x ** 2 + 6 * x * y - 14 * x + 3 * y ** 2 - 14 * y + 19 ) ) , ] ) return obj , grad
Goldstein-Price function
Goldstein - Price function