ევოლუციური ძიების ალგორითმი არის ოპტიმიზაციის მეთოდი, რომელიც დაფუძნებულია ბუნებრივი ევოლუციის მექანიზმზე. ეს ალგორითმი ახდენს ინდივიდების ევოლუციის პროცესს პოპულაციაში თაობების განმავლობაში პრობლემის საუკეთესო გადაწყვეტის მოსაძებნად.
Როგორ მუშაობს
- პოპულაციის ინიციალიზაცია: შექმენით შემთხვევით გენერირებული ინდივიდების საწყისი პოპულაცია.
- შეფასება: შეაფასეთ პოპულაციის თითოეული ინდივიდის ხარისხი ობიექტური ფუნქციის ან შეფასების კრიტერიუმების საფუძველზე.
- შერჩევა: შეარჩიეთ საუკეთესო ინდივიდების ქვეჯგუფი მიმდინარე პოპულაციიდან, ალბათობის ან შერჩევის კრიტერიუმების საფუძველზე.
- ევოლუცია: შექმენით ახალი თაობა შერჩეულ პირებზე კროსოვერის და მუტაციის ოპერაციების გამოყენებით.
- გამეორება: გაიმეორეთ ნაბიჯები 2-დან 4-მდე რამდენიმე თაობის განმავლობაში, სანამ არ მიიღწევა დამაკმაყოფილებელი გამოსავალი ან არ მიიღწევა გამეორებების წინასწარ განსაზღვრული რაოდენობა.
მაგალითი: Fibonacci ფუნქციის ოპტიმიზაცია ევოლუციური ძიების გამოყენებით
განვიხილოთ F(x) = F(x-1) + F(x-2) ფუნქციის ოპტიმიზაციის ამოცანა Fibonacci F(0) = 0, F(1) = 1. ჩვენ გვინდა ვიპოვოთ x-ის მნიშვნელობა, რომლისთვისაც F(x) არის მაქსიმალური. ევოლუციური ძიების მეთოდს შეუძლია წარმოქმნას შემთხვევითი x მნიშვნელობების პოპულაცია, განავითაროს ისინი თაობებში ოპტიმალური x მნიშვნელობის მოსაძებნად.
კოდის მაგალითი C++-ში
ამ მაგალითში ჩვენ ვიყენებთ ევოლუციური ძიების მეთოდს ფუნქციის ოპტიმიზაციისთვის Fibonacci. ჩვენ ვქმნით შემთხვევით x მნიშვნელობების პოპულაციას, ვავითარებთ მათ თაობებში საუკეთესო ინდივიდების შერჩევით და კროსოვერის და მუტაციის ოპერაციების გამოყენებით.