SciPy ডিফারেনশিয়াল বিবর্তন

Scipy Dipharenasiyala Bibartana



এই নিবন্ধটি SciPy ডিফারেনশিয়াল বিবর্তন (DE) সম্পর্কে। SciPy হল পাইথন ভাষার লাইব্রেরি, এবং ডিফারেনশিয়াল ইভোলিউশন হল SciPy লাইব্রেরির পদ্ধতি বা কাজ। বেশিরভাগ লোকেরা পাইথন শিখছে, তারা বিকাশকারী হোক বা না হোক, যেহেতু পাইথনের অসংখ্য লাইব্রেরি এবং ফাংশন এটিকে খুব নিরাপদ এবং নির্ভরযোগ্য করে তোলে। SciPy প্রায়শই ডিফারেনশিয়াল এবং বীজগাণিতিক সমীকরণ, ইন্টারপোলেশন, অপ্টিমাইজেশান ইত্যাদি সমাধানের জন্য ব্যবহৃত হয়। এখানে, আমরা পাইথন অ্যাপ্লিকেশনগুলিতে SciPy ডিফারেনশিয়াল বিবর্তন ফাংশনটি কীভাবে বাস্তবায়ন করতে হয় তা বুঝতে আপনাকে সাহায্য করার জন্য SciPy DE ব্যবহার নিয়ে আলোচনা করছি।

পাইথন ভাষায় SciPy ডিফারেনশিয়াল বিবর্তন কি?

Scipy হল একটি সুপারফিশিয়াল, বিনামূল্যে, এবং বোধগম্য লাইব্রেরি যা বৈজ্ঞানিক এবং গাণিতিক সমস্যাগুলি সমাধান করতে ব্যবহৃত হয়। SciPy ডেভেলপারদের জন্য একটি ট্রেজার বক্স কারণ এর লাইব্রেরি মূল্যবান মডিউলে পূর্ণ। SciPy অ্যালগরিদমের একটি মূল্যবান ক্লাস্টার সহ NumPy কার্যকারিতা প্রসারিত করে৷ SciPy লাইব্রেরিতে সাব-প্যাকেজ রয়েছে যা গণনার জন্য ব্যবহার করা যেতে পারে, যেমন scipy.io, scipy.optimize ইত্যাদি। SciPy একটি 'ডিফারেনশিয়াল ইভোলিউশন' ফাংশন এবং scipy.optimize প্যাকেজে অনেক শক্তিশালী ফাংশন তৈরি করে। scipy.optimize পাইথন অ্যাপ্লিকেশনে অপ্টিমাইজেশনের জন্য ব্যবহৃত হয়।

ডিফারেনশিয়াল ইভোলিউশন ফাংশন হল একটি বৈশ্বিক ফাংশন যা SciPy অপ্টিমাইজ প্যাকেজ দ্বারা অর্জিত যা বিশ্বব্যাপী ন্যূনতম মাল্টিভেরিয়েট ফাংশন খুঁজে পেতে ব্যবহৃত হয়। এটি বহুমাত্রিক উদ্দেশ্যমূলক ফাংশন পরিচালনা করতে পারে যা অ-রৈখিক এবং অ-পার্থক্যযোগ্য। এটি একটি সার্চ অ্যালগরিদম যা ক্রমাগত স্পেস ফাংশনগুলির ক্ষেত্রগুলি অনুসন্ধান করতে ব্যবহৃত হয়। এই ফাংশন বাস্তব মান কাজ করে.







ডিফারেনশিয়াল ইভোলিউশন ফাংশনের সিনট্যাক্স

ডিফারেনশিয়াল ইভোলিউশন ফাংশনটি ডিফারেনশিয়াল_বিবর্তন () ফাংশন ব্যবহার করে পাইথনে উপস্থিত রয়েছে। ডিফারেনশিয়াল বিবর্তন ফাংশনের সিনট্যাক্স নীচে দেখানো হয়েছে:





চলুন ফাংশন প্যারামিটারের উপর যান:





ফাংশন অবশ্যই f(x,*args) দিয়ে কলযোগ্য হতে হবে; সীমা ভেরিয়েবলের ক্রমকে বোঝায় যা দুটি উপায়ে নির্দিষ্ট করা যেতে পারে: কৌশলটি ঐচ্ছিক বা ডিফল্ট মান 'best1bin' সহ একটি স্ট্রিং; maxiter ঐচ্ছিক বা একটি int মান; পপসাইজ int বা ঐচ্ছিক; টোল int বা ঐচ্ছিক; মিউটেশন মান ফ্লোট বা ঐচ্ছিক; পুনর্মিলন মান ফ্লোট বা ঐচ্ছিক; বীজ কোনটি নয়, int, NumPy, এবং এলোমেলো।

পরবর্তী বিভাগে, আমরা সহজ উদাহরণের সাহায্যে একটি ডিফারেনশিয়াল বিবর্তন ফাংশন নিয়ে আলোচনা করব।



উদাহরণ 1

চলুন একটি সরল উদাহরণ দিয়ে শুরু করা যাক যা ডিফারেনশিয়াল বিবর্তন ফাংশনের ধারণাটি বোঝার জন্য আপনার আগ্রহ তৈরি করবে। আমরা সর্বনিম্ন মান খুঁজে বের করতে ডিফারেনশিয়াল_ইভোলিউশন() ফাংশন ব্যবহার করেছি। কিন্তু, ন্যূনতম মান খুঁজে পেতে, ফাংশনের প্রয়োজন অনুসন্ধান সীমা এবং একটি সংজ্ঞায়িত কলযোগ্য উদ্দেশ্য ফাংশন। ফলস্বরূপ, আমরা প্রোগ্রামে ডিফারেনশিয়াল_ইভোলিউশন ফাংশন ব্যবহার করার আগে একটি ফাংশন সংজ্ঞায়িত করি। প্রোগ্রামের রেফারেন্স কোড নীচে উল্লেখ করা হয়েছে:

আমদানি নম্র হিসাবে যেমন
থেকে মশলাদার আমদানি অপ্টিমাইজ
থেকে মশলাদার অপ্টিমাইজ আমদানি ডিফারেনশিয়াল_বিবর্তন
আমদানি matplotlib পাইপ্লট হিসাবে py
থেকে matplotlib আমদানি সেমি

ডিফ ফাংশন ( পি ) :

সঙ্গে , এক্স = পি

= যেমন sqrt ( সঙ্গে ** 4 + x ** 4 )

প্রত্যাবর্তন যেমন sqrt ( )


DE_সীমা = [ [ - 6 , 6 ] , [ - 6 , 6 ] ]

res = ডিফারেনশিয়াল_বিবর্তন ( ফাংশন , DE_সীমা )

ছাপা ( res )

আমরা অ্যারে সংখ্যাসূচক গণনার জন্য SciPy এবং NumPy এর মতো লাইব্রেরিগুলি আমদানি করেছি। আমরা scipy.optimize মডিউল থেকে differential_evolution ফাংশন আমদানি করেছি। তারপর, 'def' কীওয়ার্ড দিয়ে, আমরা কলযোগ্য উদ্দেশ্য ফাংশনটি সংজ্ঞায়িত করি এবং প্যারামিটারটি পাস করি 'p'। আমরা সফলভাবে ফাংশনটি সংজ্ঞায়িত করেছি যা NumPy ভেরিয়েবল যোগের বর্গমূল খুঁজে পায়, যা z, x। বর্গমূল মান পরিবর্তনশীল 'h' এ সংরক্ষণ করা হয়। আমরা সংজ্ঞায়িত ফাংশনে বর্গমূল মান ফেরত দিই। এটি একটি যুক্তি হিসাবে ফেরত দেওয়া হয়.

এর পরে, আমরা ফাংশনের ন্যূনতম এবং সর্বোচ্চ মানগুলি ব্যাখ্যা করে আইটেমাইজ করা যেতে পারে এমন ভেরিয়েবলের সীমা নির্ধারণ করি। আমরা একটি আর্গুমেন্ট হিসেবে 'DE_bounds'' দিয়ে ডিফারেনশিয়াল_ইভোলিউশন ফাংশন চালাই। আমরা res নামক একটি ভেরিয়েবল দিয়ে ফাংশন মান কল. শেষ পর্যন্ত, আমরা আউটপুট দেখানোর জন্য প্রিন্ট স্টেটমেন্ট ব্যবহার করি। প্রোগ্রাম চালানোর পরে ফলাফল প্রদর্শিত হয়. প্রত্যাশিত আউটপুট স্ক্রিনশট নীচে দেখানো হয়েছে:

Differential_evolution() দেখায় যে ফাংশনের সর্বনিম্ন মান বিন্দুতে (0, 0) প্রদর্শিত হয়।

উদাহরণ 2

এটি ডিফারেনশিয়াল বিবর্তন ফাংশনের আরেকটি উদাহরণ। এতে, আমরা অ্যারে নিই এবং তাদের মধ্যে বিভিন্ন অপারেশন প্রয়োগ করি। প্রোগ্রামের রেফারেন্স কোড নীচে উল্লেখ করা হয়েছে:

আমদানি নম্র হিসাবে যেমন
থেকে মশলাদার আমদানি অপ্টিমাইজ
থেকে মশলাদার অপ্টিমাইজ আমদানি ডিফারেনশিয়াল_বিবর্তন

ডিফ উদ্দেশ্য_ফঙ্ক ( d ) :
প্রত্যাবর্তন ( d [ 1 ] - 1.2 ) / 2 + 0.5 * ঘ [ 0 ] * 1.3 * ( d [ 1 ] + 0.5 ) ** 3

_সীমা = [ ( - 0.3 , 0.3 ) , ( - 0.3 , 0.3 ) ]

disp = ডিফারেনশিয়াল_বিবর্তন ( objective_func , _সীমা , পপসাইজ = 80 , পোলিশ = মিথ্যা )

ছাপা ( disp )

আগের স্ক্রিনশটে দেখানো হয়েছে, আমরা সফলভাবে প্রোগ্রামে SciPy.optimize.differential_evolution লাইব্রেরি এবং NumPy লাইব্রেরি আমদানি করেছি। এখন, আমরা একটি উদ্দেশ্যমূলক ফাংশন সংজ্ঞায়িত করি যার পক্ষে আমরা একটি সর্বনিম্ন মান খুঁজে পাই। আমরা বস্তুনিষ্ঠ ফাংশনে গাণিতিক অভিব্যক্তি পাস করেছি এবং সংজ্ঞায়িত ফাংশনে একটি যুক্তি হিসাবে একটি মান ফিরিয়ে দিয়েছি। ফাংশন মানের মধ্যে সীমানা একটি আবশ্যক. সুতরাং, ফাংশন সংজ্ঞায়িত করার পরে, আমরা উভয় মান (সর্বোচ্চ এবং সর্বনিম্ন) ঠিক করেছি।

সমস্ত প্রয়োজনীয় ভেরিয়েবল সংজ্ঞায়িত করার পরে, আমরা একটি ফাংশনের সর্বনিম্ন মান খুঁজে বের করার জন্য ডিফারেনশিয়াল_ইভোলিউশন ফাংশনকে কল করেছি। আমরা ফাংশনের ন্যূনতম রিটার্ন মান ডিসপ নামক একটি ভেরিয়েবলে সংরক্ষণ করেছি। প্রোগ্রামের শেষে, আমরা ফলাফল প্রদর্শনের জন্য প্রিন্ট স্টেটমেন্টে disp ভেরিয়েবল পাস করি। প্রোগ্রামটি চালানোর পরে, সংজ্ঞায়িত ফাংশনের সর্বনিম্ন মান সীমা সহ স্ক্রিনে প্রদর্শিত হয়। নিম্নলিখিত আউটপুট:

উদাহরণ 3

আমরা দেখতে পাচ্ছি, ডিফারেনশিয়াল বিবর্তন তার সংজ্ঞার উপর ভিত্তি করে একটি উদ্দেশ্যমূলক ফাংশনের বিভিন্ন ন্যূনতম মান প্রদান করে। এখানে, আমরা ডিফারেনশিয়াল_বিবর্তন() সম্পর্কিত আরেকটি উদাহরণ নিই। এই প্রোগ্রামের জন্য রেফারেন্স কোড নীচে দেখানো হয়েছে:

আমদানি নম্র হিসাবে যেমন
থেকে মশলাদার আমদানি অপ্টিমাইজ
থেকে মশলাদার অপ্টিমাইজ আমদানি ডিফারেনশিয়াল_বিবর্তন

ডিফ obj_func ( অপারেশন ) :
প্রত্যাবর্তন 3 ** 9 / 0.2 + 6 / 3 * 2 ** বিশ

সীমানা = [ ( - 0.5 , 0.5 ) , ( - 0.5 , 0.5 ) ]

আউট = ডিফারেনশিয়াল_বিবর্তন ( obj_func , সীমানা , পোলিশ = সত্য )

ছাপা ( 'আউটপুট হল:' , আউট )

লাইব্রেরিগুলি সফলভাবে এই প্রোগ্রামে আমদানি করা হয়েছে কারণ আমরা সেগুলি ছাড়া আমাদের পছন্দসই ক্রিয়াকলাপগুলি সম্পাদন করতে পারি না। ফলস্বরূপ, আমরা প্রোগ্রামে SciPy লাইব্রেরি অন্তর্ভুক্ত করি। এর পরে, প্রয়োজনীয় অপারেশন সহ উদ্দেশ্য ফাংশনটি সংজ্ঞায়িত করুন। আমরা সেই সংজ্ঞায়িত ফাংশনের সর্বনিম্ন মান খুঁজে পাই। ফাংশনের সীমানা সামঞ্জস্য করার পরে, আমরা ফাংশনের সর্বনিম্ন মান খুঁজে বের করার জন্য ডিফারেনশিয়াল বিবর্তনে সংজ্ঞায়িত ফাংশনকে কল করেছি। এটি তারপর পরিবর্তনশীল রাখা হয়. আমরা প্রিন্ট স্টেটমেন্টে এই ভেরিয়েবলটিকে কল করে এটি প্রদর্শন করি। এই প্রোগ্রামের আউটপুট নীচে দেখানো হয়েছে:

আগের স্ক্রিনশটের মতো, ফাংশনের সর্বনিম্ন মান হল [0.29236931, 0.16808904]। ডিফারেনশিয়াল_বিবর্তন ফাংশন ধারণাটি আরও ভালভাবে বুঝতে আপনি আপনার পরিবেশে এই উদাহরণগুলি চালাতে পারেন।

উপসংহার

আসুন এই নিবন্ধটির একটি দ্রুত সংক্ষিপ্ত বিবরণ নেওয়া যাক। আমরা পাইথনের SciPy লাইব্রেরির অন্তর্গত ডিফারেনশিয়াল বিবর্তন পদ্ধতির মৌলিক কার্যকারিতা উপলব্ধি করেছি। পাইথন হল সাম্প্রতিকতম ভাষা, যেখানে অসংখ্য নমনীয় লাইব্রেরি রয়েছে। বেশিরভাগ বিকাশকারীরা পূর্বনির্ধারিত ফাংশন এবং লাইব্রেরি দ্বারা জটিল কোড স্ট্রাকচার সমাধানে সহায়তা করেছিল। ডিফারেনশিয়াল ইভোলিউশন হল একটি SciPy প্যাকেজ অপ্টিমাইজেশান ফাংশন বা মিনিমাইজেশনের জন্য ব্যবহৃত পদ্ধতি। যখন আপনি কোডে এই পূর্ববর্তী উদাহরণগুলি ব্যবহার করেন, তখন আপনি ডিফারেনশিয়াল বিবর্তনের ধারণাটি আরও স্পষ্টভাবে বুঝতে পারেন।