چکیده
بهینهسازی یک فعالیت مهم و تعیینکننده در طراحی ساختاری است. طراحان زمانی قادر خواهند بود طرحهای بهتری تولید کنند که بتوانند با روشهای بهینهسازی در صرف زمان و هزینه طراحی صرفهجویی نمایند. بسیاری از مسائل بهینهسازی در مهندسی، طبیعتاً پیچیدهتر و مشکلتر از آن هستند که با روشهای مرسوم بهینهسازی نظیر روش برنامهریزی ریاضی و نظایر آن قابل حل باشند. بهینه سازی ترکیبی (Combinational Optimization)، جستجو برای یافتن نقطه بهینه توابع با متغیرهای گسسته (Discrete Variables) میباشد. امروزه بسیاری از مسائل بهینهسازی ترکیبی که اغلب از جمله مسائل با درجه غیر چندجملهای (NP-Hard) هستند، به صورت تقریبی با کامپیوترهای موجود قابل حل میباشند. از جمله راهحلهای موجود در برخورد با این گونه مسائل، استفاده از الگوریتمهای تقریبی یا ابتکاری است. این الگوریتمها تضمینی نمیدهند که جواب به دست آمده بهینه باشد و تنها با صرف زمان بسیار میتوان جواب نسبتاً دقیقی به دست آورد و در حقیقت بسته به زمان صرف شده، دقت جواب تغییر میکند.
مقدمه
هدف از بهینهسازی یافتن بهترین جواب قابل قبول، با توجه به محدودیتها و نیازهای مسأله است. برای یک مسأله، ممکن است جوابهای مختلفی موجود باشد که برای مقایسه آنها و انتخاب جواب بهینه، تابعی به نام تابع هدف تعریف میشود. انتخاب این تابع به طبیعت مسأله وابسته است. به عنوان مثال، زمان سفر یا هزینه از جمله اهداف رایج بهینهسازی شبکههای حمل و نقل میباشد. به هر حال، انتخاب تابع هدف مناسب یکی از مهمترین گامهای بهینهسازی است. گاهی در بهینهسازی چند هدف به طور همزمان مد نظر قرار میگیرد؛ این گونه مسائل بهینهسازی را که دربرگیرنده چند تابع هدف هستند، مسائل چند هدفی مینامند. سادهترین راه در برخورد با این گونه مسائل، تشکیل یک تابع هدف جدید به صورت ترکیب خطی توابع هدف اصلی است که در این ترکیب میزان اثرگذاری هر تابع با وزن اختصاص یافته به آن مشخص میشود. هر مسأله بهینهسازی دارای تعدادی متغیر مستقل است که آنها را متغیرهای طراحی مینامند که با بردار n بعدی x نشان داده میشوند.
هدف از بهینهسازی تعیین متغیرهای طراحی است، به گونهای که تابع هدف کمینه یا بیشینه شود.
مسائل مختلف بهینهسازی به دو دسته زیر تقسیم میشود:
الف) مسائل بهینهسازی بیمحدودیت: در این مسائل هدف، بیشینه یا کمینه کردن تابع هدف بدون هر گونه محدودیتی بر روی متغیرهای طراحی میباشد.
ب) مسائل بهینه سازی با محدودیت: بهینهسازی در اغلب مسائل کاربردی، با توجه به محدودیتهایی صورت میگیرد؛ محدودیتهایی که در زمینه رفتار و عملکرد یک سیستم میباشد و محدودیتهای رفتاری و محدودیتهایی که در فیزیک و هندسه مسأله وجود دارد، محدودیتهای هندسی یا جانبی نامیده میشوند.
معادلات معرف محدودیتها ممکن است به صورت مساوی یا نامساوی باشند که در هر مورد، روش بهینهسازی متفاوت میباشد. به هر حال محدودیتها، ناحیه قابل قبول در طراحی را معین میکنند.
به طور کلی مسائل بهینهسازی با محدودیت را میتوان به صورت زیر نشان داد:
Minimize or Maximize : F(X) (1-1 )
Subject to : I = 1,2,3,…,p
j = 1,2,3,…,q
k = 1,2,3,…,n
که در آن X={ بردار طراحی و رابطههای (1-1) به ترتیب محدودیتهای نامساوی، مساوی و محدوده قابل قبول برای متغیرهای طراحی میباشند.
بررسی روش های جستجو و بهینه سازی
پیشرفت کامپیوتر در طی پنجاه سال گذشته باعث توسعه روشهای بهینهسازی شده، به طوری که دستورهای متعددی در طی این دوره تدوین شده است. در این بخش، مروری بر روشهای مختلف بهینهسازی ارائه میشود.
شکل 1-1 روشهای بهینهسازی را در چهار دسته وسیع دستهبندی میکند. در ادامه بحث، هر دسته از این روشها مورد بررسی قرار میگیرند.
روشهای بهینهسازی
روشهای شمارشی
با محدودیت
بی محدودیت
روشهای ابتکاری
روشهای محاسیاتی (جستجوی ریاضی)
مستقیم
برنامهریزی خطی
توابع چند متغیره
توابع یک متغیره
الگوریتم کلونی مورچهها
غیر مستقیم
الگوریتم ژنتیک
شبکهها
شبیهسازی آنیلینگ
روشهای فرا ابتکاری
آزاد سازی
تجزیه
جستجوی سازنده
جستجوی بهبود یابنده
تولید ستون
تکرار
جستجوی همسایه
شکل 1 1: طبقهبندی انواع روشهای بهینهسازی
1-1-1- روشهای شمارشی
در روشهای شمارشی (Enumerative Method)، در هر تکرار فقط یک نقطه متعلق به فضای دامنه تابع هدف بررسی میشود. این روشها برای پیادهسازی، سادهتر از روشهای دیگر میباشند؛ اما به محاسبات قابل توجهی نیاز دارند. در این روشها سازوکاری برای کاستن دامنه جستجو وجود ندارد و دامنه فضای جستجو شده با این روش خیلی بزرگ است. برنامهریزی پویا (Dynamic Programming) مثال خوبی از روشهای شمارشی میباشد. این روش کاملاً غیرهوشمند است و به همین دلیل امروزه بندرت به تنهایی مورد استفاده قرار میگیرد.
1-1-2- روشهای محاسباتی (جستجوی ریاضی یا- Based Method Calculus)
این روشها از مجموعه شرایط لازم و کافی که در جواب مسأله بهینهسازی صدق میکند، استفاده میکنند. وجود یا عدم وجود محدودیتهای بهینهسازی در این روشها نقش اساسی دارد. به همین علت، این روشها به دو دسته روشهای با محدودیت و بیمحدودیت تقسیم میشوند.
روشهای بهینهسازی بیمحدودیت با توجه به تعداد متغیرها شامل بهینهسازی توابع یک متغیره و چند متغیره میباشند.
روشهای بهینهسازی توابع یک متغیره، به سه دسته روشهای مرتبه صفر، مرتبه اول و مرتبه دوم تقسیم میشوند. روشهای مرتبه صفر فقط به محاسبه تابع هدف در نقاط مختلف نیاز دارد؛ اما روشهای مرتبه اول از تابع هدف و مشتق آن و روشهای مرتبه دوم از تابع هدف و مشتق اول و دوم آن استفاده میکنند. در بهینهسازی توابع چند متغیره که کاربرد بسیار زیادی در مسائل مهندسی دارد، کمینهسازی یا بیشینهسازی یک کمیت با مقدار زیادی متغیر طراحی صورت میگیرد.
یک تقسیمبندی، روشهای بهینهسازی با محدودیت را به سه دسته برنامهریزی خطی، روشهای مستقیم و غیرمستقیم تقسیم میکند. مسائل با محدودیت که توابع هدف و محدودیتهای آنها خطی باشند، جزو مسائل برنامهریزی خطی قرار میگیرند. برنامهریزی خطی شاخهای از برنامهریزی ریاضی است و کاربردهای فیزیکی، صنعتی و تجاری بسیاری دارد.
در روشهای مستقیم، نقطه بهینه به طور مستقیم جستجو شده و از روشهای بهینهیابی بیمحدودیت استفاده نمیشود. هدف اصلی روشهای غیرمستقیم استفاده از الگوریتمهای بهینهسازی بیمحدودیت برای حل عمومی مسائل بهینهسازی با محدودیت میباشد.
در اکثر روشهای محاسباتی بهینهیابی، از گرادیان تابع هدف برای هدایت جستجو استفاده میشود. اگر مثلاً به علت ناپیوستگی تابع هدف، مشتق آن قابل محاسبه نباشد، این روشها اغلب با مشکل روبهرو میشوند.
1-1-3- روشهای ابتکاری و فرا ابتکاری (جستجوی تصادفی)
یک روش ناشیانه برای حل مسائل بهینهسازی ترکیبی این است که تمامی جوابهای امکانپذیر در نظر گرفته شود و توابع هدف مربوط به آن محاسبه شود و در نهایت، بهترین جواب انتخاب گردد. روشن است که شیوه شمارش کامل، نهایتاً به جواب دقیق مسأله منتهی میشود؛ اما در عمل به دلیل زیاد بودن تعداد جوابهای امکانپذیر، استفاده از آن غیرممکن است. با توجه به مشکلات مربوط به روش شمارش کامل، همواره بر ایجاد روشهای مؤثرتر و کاراتر تأکید شده است. در این زمینه، الگوریتمهای مختلفی به وجود آمده است که مشهورترین نمونه آنها، روش سیمپلکس برای حل برنامههای خطی و روش شاخه و کرانه برای حل برنامههای خطی با متغیرهای صحیح است. برای مسائلی با ابعاد بزرگ، روش سیمپلکس از کارایی بسیار خوبی برخوردار است، ولی روش شاخه و کرانه کارایی خود را از دست میدهد و عملکرد بهتری از شمارش کامل نخواهد داشت. به دلایل فوق، اخیراً تمرکز بیشتری بر روشهای ابتکاری (Heuristic) یا فرا ابتکاری (Metaheuristic) یا جستجوی تصادفی (Random Method) صورت گرفته است. روشهای جستجوی ابتکاری، روشهایی هستند که میتوانند جوابی خوب (نزدیک به بهینه) در زمانی محدود برای یک مسأله ارائه کنند. روشهای جستجوی ابتکاری عمدتاً بر مبنای روشهای شمارشی میباشند، با این تفاوت که از اطلاعات اضافی برای هدایت جستجو استفاده میکنند. این روشها از نظر حوزه کاربرد، کاملاً عمومی هستند و میتوانند مسائل خیلی پیچیده را حل کنند. عمده این روشها، تصادفی بوده و از طبیعت الهام گرفته شدهاند.
2- مسائل بهینهسازی ترکیبی (Optimization Problems Combinational)
در طول دو دهه گذشته، کاربرد بهینهسازی در زمینههای مختلفی چون مهندسی صنایع، برق، کامپیوتر، ارتباطات و حمل و نقل گسترش یافته است.
بهینهسازی خطی و غیرخطی (جستجو جهت یافتن مقدار بهینه تابعی از متغیرهای پیوسته)، در دهه پنجاه و شصت از اصلیترین جنبههای توجه به بهینهسازی بود.
بهینهسازی ترکیبی عبارت است از جستجو برای یافتن نقطه توابع با متغیرهای گسسته و در دهه 70 نتایج مهمی در این زمینه به دست آمد. امروزه بسیاری از مسائل بهینهسازی ترکیبی (مانند مسأله فروشنده دورهگرد) که اغلب از جمله مسائل NP-hard هستند، به صورت تقریبی (نه به طور دقیق) در کامپیوترهای موجود قابل حل میباشند.
مسأله بهینهسازی ترکیبی را میتوان به صورت زوج مرتب R,C نمایش داد که R مجموعه متناهی از جوابهای ممکن (فضای حل) و C تابع هدفی است که به ازای هر جواب مقدار خاصی دارد. مسأله به صورت زیر در نظر گرفته میشود:
یافتن جواب به گونهای که C کمترین مقدار را داشته باشد.
جواب بهینه معیار زیر را ارضا میکند:
= C() = (2-1)
مقدار بهینه نام دارد و وظیفه ما پیدا کردن است.
2-1- روش حل مسائل بهینهسازی ترکیبی
روشن است که شیوه شمارش کامل، نهایتاً به جواب دقیق مسأله منجر میشود؛ اما در عمل به دلیل زیاد بودن تعداد جوابهای امکانپذیر، استفاده از آن بینتیجه است. برای آنکه مطلب روشن شود، مسأله مشهور فروشنده دورهگرد (TSP) را در نظر میگیریم.
این مسأله یکی از مشهورترین مسائل در حیطه بهینهسازی ترکیبی است که بدین شرح میباشد:
تعیین مسیر حرکت یک فروشنده بین N شهر به گونهای که از هر شهر تنها یکبار بگذرد و طول کل مسیر به حداقل برسد، بسیار مطلوب است. تعداد کل جوابها برابر است با ! . فرض کنید کامپیوتری موجود است که میتواند تمام جوابهای مسأله با بیست شهر را در یک ساعت بررسی کند. بر اساس آنچه آورده شد، برای حل مسأله با 21 شهر، 20 ساعت زمان لازم است و به همین ترتیب، زمان لازم برای مسأله 22 شهر، 5/17 روز و برای مسأله 25 شهر، 6 قرن ا ست!
به دلیل همین رشد نمایی زمان محاسبه، شمارش کامل روشی کاملاً نامناسب است.
همان طور که گفته شد، با توجه به مشکلات مربوط به روش شمارش کامل، همواره بر ایجاد روشهای مؤثرتر و کاراتر تأکید شده است. در این زمینه، الگوریتمهای مختلفی به وجود آمده که مشهورترین آنها، الگوریتم سیمپلکس برای حل برنامههای خطی و روش شاخه و کران برای حل برنامههای خطی با اعداد صحیح است.
بنابراین در سالهای اخیر توجه بیشتری بر روشهای ابتکاری برگرفته از طبیعت که شباهتهایی با سیستمهای اجتماعی یا طبیعی دارد، صورت گرفته است و نتایج بسیار خوبی در حل مسائل بهینهسازی ترکیبی NP-hard به دنبال داشته است. در این الگوریتمها هیچ ضمانتی برای آنکه جواب به دست آمده بهینه باشد، وجود ندارد و تنها با صرف زمان بسیار میتوان جواب نسبتاً دقیقی به دست آورد؛ در حقیقت با توجه به زمان صرف شده، دقت جواب تغییر میکند.
برای روشهای ابتکاری نمیتوان تعریفی جامع ارائه کرد. با وجود این، در اینجا کوشش میشود تعریفی تا حد امکان مناسب برای آن عنوان شود:
روش جستجوی ابتکاری، روشی است که میتواند جوابی خوب (نزدیک به بهینه) در زمانی محدود برای یک مسأله ارائه کند. هیچ تضمینی برای بهینه بودن جواب وجود ندارد و متأسفانه نمیتوان میزان نزدیکی جواب به دست آمده به جواب بهینه را تعیین کرد.
در اینجا مفاهیم برخی از روشهای اصلی ابتکاری بدون وارد شدن به جزییات معرفی میشود.