چرا الگوریتم ژنتیک؟

برخی دستگاه معادلات — به‌ویژه دستگاه‌های غیرخطی — به‌شکل تحلیلی دشوارند. یک الگوریتم ژنتیک فضای راه‌حل را همان‌طور که زیست‌شناسی به دنبال ارگانیسم‌های مناسب می‌گردد، جستجو می‌کند.

دستور پخت

  1. رمزگذاری — هر راه‌حل کاندید یک کروموزوم حاوی مقادیر متغیرهاست.
  2. جمعیت اولیه — حدس‌های تصادفی.
  3. برازش — کاندید چقدر به ارضای هر معادله نزدیک است (مجموع مجذور باقی‌مانده‌ها).
  4. انتخاب — کاندیدهای برازنده‌تر احتمال بیشتری برای والد شدن دارند.
  5. تقاطع و جهش — ترکیب و اختلال برای کاوش مناطق جدید.
  6. تکرار — تا همگرایی جمعیت روی یک راه‌حل کم‌خطا.
fitness = 1.0 / (1.0 + total_error)

رساندن به همگرایی

  • نرخ جهش یک دیال بین کاوش و بهره‌برداری است. خیلی زیاد، جمعیت هرگز آرام نمی‌گیرد؛ خیلی کم، در بهینه محلی متوقف می‌شود.
  • زیت‌گرایی — همیشه بهترین فرد را به نسل بعد ببرید تا بهترین پاسخ را از دست ندهید.
  • تجزیه معادله — از تجزیه نمادین برای تایپکردن طبیعی معادلات غیرخطی توسط کاربر استفاده کردم.

نتیجه یک حل‌کننده کوچک و تعاملی است که هم حالت خطی ۲ متغیره و هم دستگاه‌های غیرخطی با ابعاد بالاتر را مدیریت می‌کند.