نظریهی الگوریتمی بهینهسازی نامقید
برقرار ساختن شرایط لازم برای حل یک مسئلهی بهینهسازی نامقید منجر به تشکیل یک دستگاه $n$ معادله، $n$ مجهولی میشود که از حل آن میتوان نقاط ایستای تابع هدف را، که کاندیداهای جواب بهین موضعی هستند، بهدست آورد. با به کارگیری این روش شاید بتوان برخی از مسائل در ابعاد کوچک را حل نمود.
مثال: مطلوب است کمینهسازی $f\left( {{x}_{1}},{{x}_{2}} \right)=x_{1}^{2}-{{x}_{1}}{{x}_{2}}+x_{2}^{2}-3{{x}_{2}}$ .
حل: با مساوی صفر قرار دادن مشتقات جزئی مرتبه اول $f$، به دستگاه معادلات زیر میرسیم:
$$\begin{align} & 2{{x}_{1}}-{{x}_{2}}=0 \\ & {{x}_{1}}+2{{x}_{2}}=3 \end{align}$$
این دستگاه معادلات دارای جواب یکتای ${{x}_{1}}=1$ و ${{x}_{2}}=2$ است. از طرفی، ماتریس هسین تابع $f$ در این جواب برابر است با:
$$H={{\nabla }^{2}}f\left( 1,2 \right)=\left( \begin{matrix} 2 & -1\\ -1 & 2\\\end{matrix} \right)$$
که معین مثبت است. بنابراین نقطهی $\left( 1,2 \right)$ کمینهی سراسری تابع $f$ میباشد.
در بسیاری از مواقع، دستگاه معادلاتی که از برقرار ساختن شرایط لازم بهدست میآید، به سادگی قابل حل نیست و هر قدر که ابعاد مسئله گسترش یابد، این دستگاه پیچیدهتر میگردد. بهویژه هنگامی که تابع $f$ نامحدب باشد، دیگر نمیتوان از قضایای شرایط لازم و کافی استفاده کرد. در چنین مواقعی لازم است از شیوههای عددی که جواب مسئله را با دقت مناسب محاسبه کرده و نیز از نظر محاسبات، زمان انجام و حجم حافظهی اشغالشده مقرون بهصرفه باشند استفاده کنیم. در ادامهی این آموزش به ارائه و تحلیل برخی از این روشها پرداخته میشود. اگرچه زمینه و انگیزهی طرح این روشها و جزئیات تحلیل آنها تفاوتهای بسیاری با هم دارند، تقریباً همگی دارای جنبهی مشترکی هستند و آن اینکه تمام این روشها از نوع الگوریتم تکراری کاهشی هستند؛ هر یک از آنها از یک نقطهی اولیه مانند ${{x}_{0}}$ شروع نموده و با تولید دنبالهای مانند $\left\{ {{x}_{k}} \right\}$ از نقاط به پیش میروند بهطوری که هر نقطهی جدید، تقریب بهتری از جواب بهینه را به دست میدهد. به این معنی که $f\left( {{x}_{k+1}} \right)\le f\left( {{x}_{k}} \right)$. البته الگوریتمهای غیر یکنوایی نیز وجود دارند که لزوماً در هر تکرار مقدار تابع $f$ را کاهش نمیدهند ولی پس از $m$ تکرار این اتفاق میافتد، یعنی:
$$f\left( {{x}_{k+m}} \right)\le f\left( {{x}_{k}} \right).$$
نقطهی اولیهی ${{x}_{0}}$ را میتوان با توجه به مقتضیات مسئله بهگونهای که نزدیک به جواب واقعی مسئله باشد، یا توسط یک الگوریتم دیگر یا به دلخواه اختیار نمود. تولید دنبالهی نقاط $\left\{ {{x}_{k}} \right\}$ تا جایی ادامه مییابد که یا نتوان نقطهی بعد را محاسبه نمود یا این که نقطهی بهدست آمده تقریب مناسبی از کمینهی مسئله باشد. برای اینکه بدانیم که یک شیوهی تکراری، به تقریب مناسبی از کمینهی مورد نظر رسیده است یا خیر، معمولاً یکی از شرطهای
$\left \| x_{k+1} -{x_{k}}\right \|< \varepsilon$ یا $\left| f\left( {{x}_{k+1}} \right)-f\left( {{x}_{k}} \right) \right|<\varepsilon $ یا $\left \| \nabla f\left( {{x}_{k}} \right)\right \|<\varepsilon $
که در آنها $\varepsilon $ یک عدد کوچک مثبت است، به عنوان شرط خاتمهی الگوریتم در نظر گرفته میشود.
برای رفتن از نقطهی ${{x}_{k}}$ به ${{x}_{k+1}}$ به یک جهت کاهشی و فاصلهای که باید در راستای این جهت پیموده شود نیاز است. طبیعی است که انتظار داشته باشیم انتخاب این پارامترها بهگونهای باشد که بیشترین کاهش ممکن در هر تکرار الگوریتم رخ دهد. در حقیقت تفاوت عمدهی بین الگوریتمهای کاهشی نیز، مربوط به نحوهی انتخاب این دو پارامتر، یعنی جهت جستجو و طول گام مناسب است. انتخاب این دو پارامتر میتواند به چند راه صورت گیرد؛ این کار ممکن است صرفاً متکی بر مقادیر تابع و اطلاعات بهدست آمده از تکرارهای قبلی و یا متکی بر اطلاعاتی از مشتقات جزئی تابع باشد. الگوریتمهایی که از شیوهی اول استفاده میکنند، عموماً به روشهای جستجوی مستقیم معروفند و از جملهی این روشها، میتوان به دو روش جستجوی فیبوناچی و روش سادکی نلدر و مید اشاره کرد. سایر الگوریتمها که از شیوهی دوم استفاده میکنند به روشهای گرادیانی معروفاند. روشهای تندترین کاهش، نیوتن و شبهنیوتن از جمله روشهای گرادیانی هستند. همچنین میتوان در مورد اینکه کدام یک از دو پارامتر جهت جستجو یا طول گام مناسب زودتر از دیگری انتخاب شود، تصمیم گرفت. این تصمیمگیری منجر به معرفی دو راهبرد جستجوی خطی و ناحیهی اطمینان میشود.