Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

อธิบายว่าอัลกอริทึม Nelder-Mead สามารถนำมาใช้โดยใช้ SciPy Python ได้อย่างไร


ห้องสมุด SciPy สามารถใช้ในการคำนวณทางวิทยาศาสตร์ที่ซับซ้อนได้อย่างรวดเร็วและมีประสิทธิภาพสูง อัลกอริธึม Nelder-Mead เรียกอีกอย่างว่าอัลกอริธึมการค้นหาอย่างง่าย

ถือว่าเป็นหนึ่งในอัลกอริธึมที่ดีที่สุดที่สามารถใช้ในการแก้ปัญหาการประมาณค่าพารามิเตอร์และปัญหาทางสถิติได้ เกี่ยวข้องกับการใช้อัลกอริธึมนี้ในสถานการณ์ที่ค่าของฟังก์ชันไม่แน่นอนหรือมีสัญญาณรบกวนที่เกี่ยวข้องมาก

อัลกอริธึมนี้ยังสามารถใช้เพื่อทำงานกับฟังก์ชันที่ไม่ต่อเนื่องซึ่งเกิดขึ้นบ่อยในสถิติ เป็นอัลกอริธึมที่เรียบง่ายและเข้าใจง่ายเช่นกัน ใช้เพื่อลดพารามิเตอร์ของฟังก์ชันที่ไม่เป็นเชิงเส้นให้น้อยที่สุดในกรณีที่มีการเพิ่มประสิทธิภาพแบบหลายมิติที่ไม่มีข้อจำกัด

ไม่แนะนำให้ใช้อัลกอริธึมนี้เพื่อค้นหาค่าการไล่ระดับสีที่เหมาะสมที่สุด เนื่องจากอาจใช้เวลานาน

เรามาดูตัวอย่างกัน −

ตัวอย่าง

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")

ผลลัพธ์

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])

คำอธิบาย

  • นำเข้าไลบรารีที่จำเป็น

  • ฟังก์ชัน 'f' ถูกกำหนดโดยรับค่าเป็นอาร์กิวเมนต์ และทำการคำนวณทางคณิตศาสตร์กับค่านั้น

  • ฟังก์ชันนี้เรียกว่าฟังก์ชัน "f" นอกนิยามฟังก์ชันที่คำนวณค่า

  • ฟังก์ชันนี้จะถูกส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชัน 'ย่อเล็กสุด' ที่มีอยู่ในคลาส 'เพิ่มประสิทธิภาพ' ของไลบรารี 'scipy'

  • เอาต์พุตนี้จะแสดงบนคอนโซล