كيفية حل المعادلات الخطية باستخدام خوارزمية وراثية؟

StackOverflow https://stackoverflow.com/questions/1692418

سؤال

أريد حل نظام من المعادلات الخطية التي تحتوي على متغيرات N باستخدام خوارزمية وراثية.

أواجه صعوبة في تحديد عملية كروس كحل قد يتكون من قيم النقطة العائمة. كيف أذهب؟ يبدو ممكنا، لكن هذا هو أول لقاء لي مع الخوارزميات الوراثية.

لنفترض أننا يجب أن نحل

 x + 2y = 1
2x + 8y = 3

سيكون الجواب X = 1/2 و Y = 1/4.

كيف نعلم المشكلة؟

تحديث: معرفة ما إذا كان يمكنك فك أي شيء من الورقة http://www.masaumnet.com/archives/mjbas/volume1/iskue2/mjbas010205.pdf..

هل كانت مفيدة؟

المحلول

هناك طريق واحد هو اختيار تمثيل النقطة العائمة الخاصة بك، مما يحررك كثيرا مع القيم التي تريدها. بالطبع، هذا يجعلك مسؤولا عن تنفيذ العمليات الحسابية. ربما يمكنك العثور على مكتبة برعاية يمكنك تغييرها.

يمكنك أيضا تحلل النقاط العائمة من النظام الأساسي باستخدام EG frexp أثناء خطوة كروس، ثم إعادة تجميعها أثناء العلاج.

نصائح أخرى

يمكن أن تكون الكروموسوم الخاصة بك أرقام النقطة العائمة (الزوجي)، أو يمكنك إعادة تفسيرها كسلاسل بت باستخدام اتحاد:

const int n = 100;

union Chromosome {
  double val[n];
  unsigned char bits[n * sizeof(double)];
};

... ثم يمكنك استخدام القيم المزدوجة للتفسير في قيمة الحل / اللياقة البدنية، وتطبق التكاثر / كروس / طفرة.

حظ سعيد!

أنت ببساطة لا. هناك الكثير من الطرق المختلفة التي يمكنك تطبيقها على حل الأنظمة الخطية. لكن "الخوارزميات الوراثية" ليست شيئا يتبادر إلى الذهن. كنت تستخدم الخوارزميات الوراثية لحل المشاكل المختلطة (اختيار عنصر واحد من محدود تعيين).

عادة ما تحل النظم الخطية باستخدام التعامل مع الخوارزميات (QR، LU) أو خوارزميات تكرارية (Gauß-Seidel، CG، ...)

ستحتاج إلى التفكير في استخدام خوارزمية وراثية مشفرة حقيقية بدلا من الخوارزمية الوراثية المرمزة الثنائية كما هو مقترح في الورق الذي أشرت إليه. في الواقع، إذا كنت تستخدم خوارزمية جينية ترميز ثنائية، فلن تتمكن من العثور على الحل للمعادلات إذا كان 'x'، 'y' يمكن أن تأخذ القيم السالبة.

وبالتالي تحتاج إلى استخدام خوارزمية وراثية مشفرة حقيقية. إما يمكنك رمز الخوارزمية الوراثية بأكملها بنفسك، أو يمكنك فقط استخدام رمز RGA موجود جيد لحل مشكلتك. سيكون عليك فقط تخصيص وظيفة اللياقة البدنية لحضلك. هنا يمكنك استخدام تلك المقترحة المقترحة في الورقة. كان من السهل جدا!

يمكنك التفكير في استخدام تنفيذ RGA من http://www.iitk.ac.in/kangal/codes.shtml..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top