Z tego, co dotychczas przeczytałem, wydają się bardzo podobne. Ewolucja różnicowa używa zamiast tego liczb zmiennoprzecinkowych, a rozwiązania nazywa się wektorami? Nie jestem do końca pewien, co to oznacza. Jeśli ktoś mógłby przedstawić przegląd nieco z zaletami i wadami obu.Co to jest ewolucja różnicowa i jak się ją porównuje do algorytmu genetycznego?
Odpowiedz
Cóż, zarówno algorytmy genetyczne, jak i ewolucja różnicowa są przykładami obliczeń ewolucyjnych.
Algorytmy genetyczne ściśle trzymają się metafory reprodukcji genetycznej. Nawet język jest w większości taki sam - oba mówią o chromosomach, oba mówią o genach, geny są odrębnymi alfabetami, obydwa mówią o skrzyżowaniu, a zwrot jest dość bliski zrozumieniu genetycznej reprodukcji niskiego poziomu, itp.
Ewolucja różnicowa ma ten sam styl, ale jej odpowiedniki nie są dokładne. Pierwszą dużą zmianą jest to, że DE używa rzeczywistych liczb rzeczywistych (w ścisłym znaczeniu matematycznym - są one implementowane jako zmienne, podwójne lub dowolne, ale teoretycznie mają one zasięg w stosunku do reali). W rezultacie idee mutacji i crossover są zasadniczo różne. Operator mutacji jest zmodyfikowany do tego stopnia, że trudno mi nawet zrozumieć, dlaczego nazywa się to mutacją, z tym wyjątkiem, że służy temu samemu celowi przełamywania rzeczy z lokalnych minimów.
Po stronie plusa jest kilka wyników pokazujących, że DE są często bardziej skuteczne i/lub bardziej wydajne niż algorytmy genetyczne. A kiedy pracujemy nad optymalizacją numeryczną, miło jest móc reprezentować rzeczy jako rzeczywiste liczby rzeczywiste, zamiast najpierw przejść do reprezentacji chromosomalnej. (Uwaga: o nich czytałem, ale nie rozmawiałem z nimi zbyt wiele, więc nie mogę wypowiedzieć się z pierwszej ręki.)
Po stronie negatywnej, nie sądzę, aby istniał jakikolwiek dowód konwergencji dla DE.
Trzeba dodać, że nic o Algorytmach genetycznych nie wyklucza kodowania o wartościach rzeczywistych. Istnieją operatory typu crossover, takie jak SBX (symulacja binarnego crossovera), a także różne pomysły "mieszania" rodziców na różne sposoby. Mutacja chromosomów o wartościach rzeczywistych ma kilka oczywistych implementacji, guzy Gaussa do parametrów, itp. – deong
To prawda, ale im dalej od pierwotnych pojęć, tym bardziej napięta staje się metafora.Nie rzuca mi się w oczy, myślę, że wszystkie są fascynujące i użyteczne, i można je w uzasadniony sposób nazwać algorytmami genetycznymi. To tylko wyrok/estetyczne wezwanie. – Novak
ewolucja różnicowego jest rzeczywiście specyficzny podzbiorem szerszej przestrzeni algorytmów genetycznych, z następującymi ograniczeniami:
- Genotyp jest jakaś forma wartościach rzeczywistych wektora operacje
- Mutacja/zwrotnicy skorzystać różnicy między dwoma lub więcej wektorami w populacji w celu utworzenia nowego wektora (zazwyczaj przez dodanie losowej proporcji różnicy do jednego z istniejących wektorów, plus niewielka ilość losowego szumu)
DE sprawdza się dobrze w pewnych sytuacjach, ponieważ wektory można uznać za tworzące "chmurę", która dość skutecznie eksploruje obszary o wysokiej wartości przestrzeni rozwiązania. W pewnym sensie jest to ściśle związane z optymalizacją roju cząstek.
Nadal ma jednak zwykły problem z GA, ale utknął w lokalnych minimach.
Czy masz odniesienie, gdzie GA jest podatne na utknięcie w lokalnych minimach? –
- 1. Co to jest "perspektywa" Eclipse i jak mam ją wykonać?
- 2. Co to jest "pułapka przerwania" i jak mogę ją debugować?
- 3. co to jest zmienna devise_mapping i jak ją uwzględnić?
- 4. Co to jest ślad aplikacji i jak ją obliczyć?
- 5. Wybór rankingu w kodzie algorytmu genetycznego
- 6. Pytanie szczegółowe przy stosowaniu algorytmu genetycznego do podróżującego sprzedawcy
- 7. Co to jest Cordova i jak odnosi się do PhoneGap?
- 8. Co to jest metoda __del__, jak ją nazwać?
- 9. Co to jest | i używa się operatorów?
- 10. Co to jest analiza Big O tego algorytmu?
- 11. co to jest "tryb ścisły" i jak się go używa?
- 12. Co to jest VertiPaq i jak działa
- 13. C# - Co to jest komponent i jak jest zwykle używany?
- 14. co to jest [cmdletbinding()] i jak to działa?
- 15. Dokumentacja różnicowa z plamiakiem
- 16. Co to jest S_ISREG() i co robi?
- 17. Co to jest proces kthreadd i dzieci i jak to się różni od init i dzieci
- 18. Co to jest i jak zrobić WBS?
- 19. Avro ewolucja schematu
- 20. Co to jest Thread.CurrentPrincipal i co robi?
- 21. Co to jest $ {project.licensePath}?
- 22. Co to jest []
- 23. Co to jest gradlew do
- 24. Co to jest mangling nazw i jak to działa?
- 25. Co to jest php.ini i gdzie się znajduje w CentOS
- 26. Co to jest niezaznaczone i jak to sprawdzić?
- 27. Jak Google Protocol Buffers porównuje się do ASN.1
- 28. Co to jest WebIDL i (dlaczego) jest to ważne?
- 29. Co to jest POI i co to znaczy?
- 30. Co to jest Serializable? Co to znaczy?
Liczba zmiennoprzecinkowa nie jest różnicą. Wszystkie strategie ewolucyjne używają liczb zmiennoprzecinkowych. Algorytmy EC nie są już podzielone na typy przez ich reprezentację. – user