اختيار المعلمة متفرق باستخدام الخوارزمية الوراثية

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

سؤال

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

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

ترميز المشكلة باستخدام مؤشرات المعلمات لا يعمل أيضا. على الأرجح ذلك على الأرجح، بسبب حقيقة أن الكروموسومات اتجاهية، في حين أن مشكلة الاختيار ليست (أي الكروموسومات [1، 2، 3، 4]؛ [4، 3، 2، 1]؛ [3، 2، 4، 1] إلخ.

ما مشكلة المشكلة التي تقترحها؟

ملاحظة: إذا كانت هذه الأمور، فأنا استخدم بقلم.

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

المحلول

لست على دراية ب Pyevolve، ولكن من ما يمكنني تذكره عن الخوارزميات الوراثية، فأنت مهتم ب 4 خطوات،

  1. chormosome التقييم (ربما يكون لديك بالفعل هذا
  2. تهيئة الكروموسوم
  3. كروموسوم كروس
  4. طفرة الكروموسوم

أعتقد أنه يمكنك القيام بذلك مع القوائم على ما يرام. ستحتاج إلى التحميل الزائد بعض المشغلين، ولكن يبدو وكأنه Pyevolve يتيح لك القيام بذلك سيكون هناك شيء بسيط هو الحفاظ على تمثيل القائمة، فقط فرزها عدديا قبل إرجاع الكروموسوم.

سأحتاج إلى معرفة المزيد عن مشكلتك، ولكن فيما يلي اقتراحاتي. نظرا لأن لديك عدد متغير من المعلمات، فأنت بحاجة إلى التوصل إلى نوع من توزيع الاحتمالات لعدد المعلمات في الكروموسوم. سأفترض عشوائيا موحدا على 1،2،3،4 هنا، ولكن يمكنك تجربة شيء آخر إذا كنت ترغب في ذلك أفضل. أنا ذاهب للاتصال بهذا التوزيع P_N.

  1. التهيئة. بذرة سكانك مع (على الأقل) 3000 كروموسومات. اتصل بهذه C_1، ...، C_3000. ارسم n_j من p_n. وضع J في C_J. اختر المعلمات N_J - 1 المتبقية بتوزيع عشوائي موحد من المعلمات المتبقية.
  2. عبور. يتيح لنفترض أن لدينا اثنين من الكروموسومات. C_1 و C_2. سنقوم بإنشاء (والعودة) ChromoSome C_3. اختر n_3 من {n_1، n_2} لكل احتمالية 1/2. ضع الآن معلمات C_1 و C_2 في قائمة واحدة (وفريدة من نوعها، لذلك إذا على حد سواء يحتوي C_1 و C_2 على المعلمة 1، فهي فقط في القائمة مرة واحدة). ارسم معلمات N_3 من القائمة المشتركة ووضعها في ChromoSome C_3.
  3. طفره. نظرا ل Chromosome C_1، ارسم N_1 * من P_N. إذا كان N_1 * هو <n_1، حذف العناصر عشوائيا من C_1 حتى يتمتع بعناصر N_1 *. إذا اختر N_1 * = N_1 عشوائيا عنصر واحد من C_1 واستبدله بمعلمة يتم اختيارها عشوائيا من الأشخاص غير الموجودين في C_1. إذا كان n_1 *> n_1 عشوائيا إضافة عناصر إلى c_1 حتى يتم توفير حجم n_1 *.

الآن، هناك العديد من الطرق للذهاب حول هذا الأمر، لذا افعل ما الذي يجعل أكثر مشكلتك.

نصائح أخرى

أعتقد أن تحلل قيمة المفرد (http://en.wikipedia.org/wiki/singular_value_decomposition.) قد يكون أكثر ملاءمة هنا على حساب الحد الأقصى لعدد المعلمات.

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