কম্পিউটার টিউটোরিয়াল

পাইথনে SciPy ব্যবহার করে নেলডার-মিড অ্যালগরিদম কীভাবে বাস্তবায়ন করবেন?


SciPy লাইব্রেরি জটিল বৈজ্ঞানিক গণনা বেগে ও উচ্চ দক্ষতাসহ করতে পারে। নেলডার-মিড অ্যালগরিদমকে সিম্পল সার্চ অ্যালগরিদম ও বলা হয়। এটি প্যারামিটার এস্টিমেশন ও Статистиক সমস্যা সমাধানের জন্য সেরা অ্যালগরিদমের একটিমाना হয়। ফাংশনের মান অনিশ্চিত হলে বা অনেক নয়েজ থাকলে এই অ্যালগরিদম প্রাসঙ্গিক। এটি ডিসকন্টিনিউয়াস ফাংশনवाले কাজেও লাগে, যা স্ট্যাটিস্টিক্সে ঘন ঘন ঘটে। এটি একটি সিম্পল অ্যালগরিদম এবং সহজে বোঝা যায়। মাল্টিডাইমেনশনাল আনকনস্ট্রেইনড অপ্টিমাইজেশনে নন-লিনিয়ার ফাংশনের প্যারামিটার মিনিমাইজ করতে এটি ব্যবহৃত হয়। অপ্টিমাল গ্রেডিয়েন্ট মান খুঁজে বের করতে এটি ব্যবহার করা উচিত নয়, কারণ এতে দীর্ঘ সময় লাগতে পারে।

উদাহরণ

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 লাইব্রেরির optimize ক্লাসের minimize ফাংশনে প্যারামিটার হিসেবে পাস করা হয়েছে।

  • আউটপুট কনসোলে দেখানো হয়েছে।

  1. পাইথনে cv2 ব্যবহার করে ইমেজ প্রদর্শন করা

  2. পাইথনে বোকেহ (Bokeh) ব্যবহার করে অ্যাক্সিস-অ্যালIGNED রেক্ট্যাঙ্গেল (Axis aligned rectangles) ভিজ্যুয়ালাইজ করার পদ্ধতি

  3. পাইথনে Matplotlib ব্যবহার করে কুইভার প্লট (Quiver Plot) তৈরির পদ্ধতি

  4. পাইথনে factorplot ফাংশন দিয়ে ভায়োলিন প্লট ভিজ্যুয়ালাইজ করার পদ্ধতি