গণিতে, কম্পিউটার বিজ্ঞানে এবং অর্থনীতিতে সেরা-অনুকূলকরণ (optimization) বা গাণিতিক প্রোগ্রামিং (mathematical programming) বলতে একটি সেটে বিদ্যমান অনেকগুলো বিকল্প থেকে সবচেয়ে অনুকূলটি বা সেরাটি বেছে নেয়া বোঝায়। খুব সাধারণক্ষেত্রে এটা সেই ধরনের সমস্যা নিয়ে গবেষণা বোঝায় যেখানে একটি নির্দিষ্ট সেট থেকে কোন বাস্তব বা পূর্ণসংখ্যা চলকের মান নিয়মতান্ত্রিকভাবে পছন্দ করার মাধ্যমে কোন বাস্তব ফাংশনের সর্বোচ্চ বা সর্বনিম্ন মান বের করার চেষ্টা করা হয়।
History
optimization ব্যবহারের প্রথম কৌশল হল গাউসের ঢালুতম-অবতরণ পদ্ধতি। ঐতিহাসিকভাবে optimization গবেষণার অনেকটাই রৈখিক প্রোগ্রামিংয়ের (linear programming) গবেষণার সাথে জড়িত ছিল। ১৯৪৭-এ জর্জ ডানৎসিখের সিম্প্লেক্স অ্যালগরিদম রৈখিক প্রোগ্রামিং গবেষণার একটি মাইলফলক ধরা হয়।
Main branches
উত্তল প্রোগ্রামিংয়ের (বা উত্তল সেরা-অনুকূলকরণ) (convex programming) গবেষণার বিষয় হল উত্তল লক্ষ্য ফাংশন, যার সীমাবদ্ধতাগুলো (constraint) উত্তল সেট তৈরি করে। উত্তল প্রোগ্রামিংকে অরৈখিক প্রোগ্রামিংয়ের (nonlinear programming) একটি বিশেষ শাখা হিসেবে এবং রৈখিক সমস্যা এবং উত্তল দ্বিঘাত প্রোগ্রামিংয়ের (convex quadratic programming) সাধারণ শাখা হিসেবে দেখা যায়।
- রৈখিক প্রোগ্রামিং হচ্ছে একধরনের উত্তল সমস্যা যেখানে লক্ষ্য ফাংশন রৈখিক হয় এবং সীমাবদ্ধতাগুলোর সেটকে কেবল রৈখিক সমতা বা অসমতা দ্বারা প্রকাশ করা হয়। এই সেট সীমিতহলে বহুতলকের (polyhedron) আকার ধারণ করে।
- দ্বিতীয় ক্রমের কোণক প্রোগ্রামিংয়ে (second order cone programming) বিশেষ ধরনের দ্বিঘাত সমস্যা আলোচনা করা হয়।
- প্রায়নির্ধারিত প্রোগ্রামিং (semidefinite programming) হচ্ছে উত্তল প্রোগ্রামিংয়ের একটি শাখা যেখানে চলকগুলো হল প্রায়নির্ধারিত ম্যাট্রিক্স।
- কোণক প্রোগ্রামিং (conic programming) হচ্ছে উত্তল প্রোগ্রামিংয়ের একটি সাধারণ শাখা। রৈখিক, দ্বিতীয় ক্রমের কোণক এবং প্রায়নির্ধারিত প্রোগ্রামিংয়ের প্রত্যেকটিকেই কোণক প্রোগ্রামিংয়ের বিশেষ ধরনের কোণকযুক্ত কোণক প্রোগ্রামিং হিসেবে দেখা যায়।
- জ্যামিতিক প্রোগ্রামিং হচ্ছে একধরনের সেরা-অনুকূলকরণ কৌশল, যেখানে লক্ষ্য এবং অসমতা ফাংশনগুলো পসিনমিয়াল (posynomial) এবং সমতা ফাংশনগুলো মনমিয়াল (monomial)। জ্যামিতিক প্রোগ্রামিংকে উত্তল প্রোগ্রামিং আকারে সমাধান করা না হলেও উত্তল প্রোগ্রামিং সমস্যায় রূপান্তর করা যায়।
- পূর্ণসংখ্যা প্রোগ্রামিং হচ্ছে এক ধরনের রৈখিক প্রোগ্রামিং যেখানে কিছু অথবা সবগুলো চলক কেবল পূর্ণসংখ্যায় মান গ্রহণ করে। এর ফলে সমস্যাটি আর উত্তল প্রোগ্রামিং থাকে না। সাধারণ রৈখিক প্রোগ্রামিংয়ের চেয়ে এটি সাধারণত বেশ কঠিন সমস্যা।
- দ্বিঘাত প্রোগ্রামিংয়ে (quadratic programming) লক্ষ্য ফাংশন হয় দ্বিঘাতবিশিষ্ট এবং সমতা ও অসমতাগুলো হয় রৈখিক। দ্বিঘাত পদটির বিশেষ একটি আকারের ক্ষেত্রে সমস্যাটি একটি উত্তল প্রোগ্রামিং সমস্যায় পরিণত হয়।
- অরৈখিক প্রোগ্রামিংয়ের গবেষণায় সেধরনের সমস্যা নিয়ে আলোচনা হয় যেখানে লক্ষ্য ফাংশন বা সীমাবদ্ধতা অথবা উভয়েই অরৈখিক অংশ থাকে।
- অনির্ধারিত প্রোগ্রামিং (stochastic programming) গবেষণায় সে ধরনের সমস্যা বিবেচনা করা হয়, যেখানে সীমাবদ্ধতা বা প্যারামিটারগুলো দৈব চলকের উপর নির্ভর করে।
- রোবাস্ট প্রোগ্রামিং অনির্ধারিত প্রোগ্রামিংয়ের মতই সেরা-অনকূলকরণ সমস্যার সাথে জড়িত উপাত্তের অনিশ্চয়তাকে নিয়ে কাজ করে। তবে এ কাজের জন্যে দৈব চলক বিবেচনা না করে উপাত্তের ত্রুটিকে বিবেচনায় নিয়ে সমস্যার সমাধান করা হয়।
- কম্বিনেটোরিয়াল সেরাঅনুকুলকরণ
- অধি-আবিষ্করণী (Metaheuristic) গবেষণায় সমস্যার ব্যাপারে যৎসামান্য অনুমান তৈরি করা হয় এবং এ ধরনের কৌশল সমাধান-ক্ষেত্রের বিশাল অঞ্চলে অনুসন্ধান চালাতে পারে। তবে অধি-আবিষ্করণী পদ্ধতি সেরা সমাধানের নিশ্চয়তা প্রদান করে না।
0 comments:
Post a Comment