Computer >> Máy Tính >  >> Lập trình >> Python

Giải thích cách triển khai thuật toán Nelder-Mead bằng SciPy Python?

Thư viện SciPy có thể được sử dụng để thực hiện các phép tính khoa học phức tạp với tốc độ nhanh, với hiệu quả cao. Thuật toán Nelder-Mead còn được gọi là thuật toán tìm kiếm đơn giản.

Nó được coi là một trong những thuật toán tốt nhất có thể được sử dụng để giải các bài toán ước lượng tham số và các bài toán thống kê. Phù hợp để sử dụng thuật toán này trong các tình huống mà giá trị của các hàm không chắc chắn hoặc có nhiều nhiễu liên quan đến nó.

Thuật toán này cũng có thể được sử dụng để làm việc với các hàm không liên tục thường xuyên xảy ra trong thống kê. Nó là một thuật toán đơn giản và nó cũng dễ hiểu. Được sử dụng để giảm thiểu các tham số của một hàm phi tuyến tính trong trường hợp tối ưu hóa không giới hạn nhiều chiều.

Bạn không nên sử dụng thuật toán này để tìm các giá trị gradient tối ưu vì có thể mất nhiều thời gian.

Hãy để chúng tôi xem một ví dụ -

Ví dụ

import numpy as np
from scipy.optimize import minimize
def f(x):
   return .6*(1 - x[0])**2
scipy.optimize.minimize(f, [2, -1], method="Nelder-Mead")

Đầu ra

final_simplex: (array([[ 1. , -1.27109375],
   [ 1. , -1.27118835],
   [ 1. , -1.27113762]]), array([0., 0., 0.]))
   fun: 0.0
   message: 'Optimization terminated successfully.'
      nfev: 147
      nit: 69
   status: 0
   success: True
x: array([ 1. , -1.27109375])

Giải thích

  • Các thư viện bắt buộc được nhập.

  • Hàm ‘f’ được định nghĩa sẽ nhận một giá trị làm đối số và thực hiện một số phép tính toán học trên đó.

  • Hàm này được gọi bên ngoài định nghĩa hàm đối với hàm ‘f’ tính giá trị.

  • Hàm này được truyền dưới dạng một tham số cho hàm "thu nhỏ" có trong lớp "tối ưu hóa" của thư viện "scipy".

  • Đầu ra này được hiển thị trên bảng điều khiển.