در حالت کلی سه دسته از الگوریتم‌های هیوریستیک قابل تشخیص است:

  • الگوریتم‌هایی که بر ویژگی‌های ساختاری مسأله و ساختار جواب متمرکز می‌شوند و با استفاده از آنها الگوریتم‌های سازنده یا جستجوی محلی تعریف می‌کنند.
  • الگوریتم‌هایی که بر هدایت هیوریستیک یک الگوریتم سازنده یا جستجوی محلی متمرکز می‌شوند به گونه‌ای که آن الگوریتم بتواند بر شرایط حساس (مانند فرار از بهینه محلی) غلبه کند. به این الگوریتم‌ها، متاهیوریستیک[1] گفته می‌شود.
  • الگوریتم‌هایی که بر ترکیب یک چارچوب یا مفهوم هیوریستیک با گونه‌هایی از برنامه‌ریزی ریاضی (معمولا روشهای دقیق) متمرکز می‌شوند.

هیوریستیک‌های نوع اول می‌توانند خیلی خوب عمل کنند (گاهی اوقات تا حد بهینگی) اما ممکن است در جواب‌های دارای کیفیت پایین گیر کنند. همانطور که اشاره شد یکی از مشکلات مهمی که این الگوریتم‌ها با آن روبرو می‌شوند افتادن در بهینه‌های محلی است، بدون اینکه هیچ شانسی برای فرار از آنها داشته باشند. برای بهبود این الگوریتم‌ها از اواسط دهۀ 70، موج تازه‌ای از رویکردها آغاز گردید. این رویکردها شامل الگوریتم‌هایی است که صریحاً یا به صورت ضمنی تقابل بین ایجاد تنوع جستجو (وقتی علائمی وجود دارد که جستجو به سمت مناطق بد فضای جستجو می‌رود) و تشدید جستجو (با این هدف که بهترین جواب در منطقه مورد بررسی را پیدا کند) را مدیریت می‌کنند. این الگوریتم‌ها متاهیوریستیک نامیده می‌شوند. از بین این الگوریتم‌ها می‌توان به موارد زیر اشاره کرد:

  • بازپخت شبیه‌سازی شده.
  • جستجوی ممنوع.
  • الگوریتم‌های ژنتیک.
  • شبکه‌های عصبی مصنوعی.
  • بهینه‌سازی مورچه‌ای یا الگوریتم‌های مورچه.

[8,13,14,15]

که در این بین الگوریتم‌های ژنتیک از شهرت بیشتری نسبت به دیگر الگوریتم‌ها برخوردار است.

[1] Meta Heuristic