Programowanie genetyczne w C# [zamknięty]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.

Zamknięte 3 lata temu .

Popraw to pytanie

Szukałem dobrych przykładów programowania genetycznego do C#. Ktoś zna dobre zasoby internetowe / książkowe? Ciekawe czy istnieje jakaś biblioteka C# Dla Evolutionary / Genetic programowanie?

Author: Jon Seigel, 2008-08-17

12 answers

Po opracowaniu własnej aplikacji dydaktycznej programowania genetycznego , znalazłem kompletny Framework programowania genetycznego o nazwie AForge.NET genetyka . To część Aforge.NET biblioteka . Jest licencjonowany przez LGPL.

 28
Author: Jader Dias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-16 19:11:31

MSDN miał w zeszłym roku artykuł o programowaniu genetycznym: Algorytmy genetyczne: przetrwanie najsilniejszych z form Windows

 24
Author: Judah Gabriel Himango,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 23:28:18

Zalecałbym, aby nie generować zespołów, chyba że jest to absolutnie konieczne, szczególnie jeśli dopiero zaczynasz implementację algorytmu genetycznego.

Algorytm genetyczny jest najłatwiej zaimplementować, gdy język docelowy jest funkcjonalnie i dynamicznie wpisywany. Dlatego większość badań algorytmów genetycznych jest pisana w Lispie. W rezultacie, jeśli zamierzasz zaimplementować go w C#, prawdopodobnie lepiej będzie zdefiniować własny mini " język drzewa", algorytm generuje drzewa i interpretuje je, gdy przychodzi czas na uruchomienie każdej iteracji algorytmu.

Zrobiłem taki projekt, kiedy byłem na studiach (implementacja algorytmu genetycznego w C#), i takie podejście przyjąłem.

Robienie tego w ten sposób da ci przewagę posiadania tylko 1 reprezentacji do pracy (reprezentacji AST), która jest optymalnie dostosowana zarówno do wykonania, jak i do etapów "reprodukcji" algorytmu genetycznego.

Alternatywnie, jeśli spróbujesz wygenerować zespoły, prawdopodobnie skończysz dodając dużą ilość niepotrzebnej złożoności do aplikacji. Obecnie CLR nie pozwala na rozładowanie zestawu z domeny aplikacji, chyba że cała domena aplikacji zostanie zniszczona. Oznaczałoby to, że będziesz musiał uruchomić osobną domenę aplikacji dla każdego wygenerowanego programu w każdej iteracji algorytmu, aby uniknąć gigantycznego wycieku pamięci do aplikacji. Ogólnie rzecz biorąc, całość będzie wystarczy dodać kilka dodatkowych irytacji.

Interpretowane AST, z drugiej strony, są zbierane śmieci, tak jak każdy inny obiekt, a więc nie trzeba małpa wokół z wielu domen aplikacji. Jeśli, ze względu na wydajność, chcesz kodować gen końcowy wynik, możesz dodać wsparcie dla tego później. Jednak polecam, abyś to zrobił używając klasy DynamicMethod. Pozwoli Ci to na dynamiczną konwersję AST do skompilowanego delegata w czasie wykonywania. To będzie umożliwia wdrożenie pojedynczej biblioteki DLL, zachowując proces generowania kodu tak prosty, jak to możliwe. Również instancje DynamicMethod są zbierane śmieci, więc możesz skończyć zatrudniając je jako część algorytmu genetycznego, aby przyspieszyć rzeczy tam również.

 14
Author: Scott Wisniewski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 06:14:06

Możesz być w stanie zaimplementować programowanie genetyczne za pomocą drzew ekspresji LINQ-jest to bardziej prawdopodobne, aby wygenerować coś użytecznego niż losowe generowanie IL.

 10
Author: Curt Hagenlocher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 01:00:07

Widziałem dobrą dyskusję na wysokim poziomie na channel9 Mike ' a Swansona na http://channel9.msdn.com/posts/Charles/Algorithms-and-Data-Structures-Mike-Swanson-Genetic-Session-Scheduler/

 6
Author: denis phillips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 23:28:25

Masz na myśli rzeczywiste programowanie genetyczne, w przeciwieństwie do algorytmów genetycznych w ogóle?

Jeśli tak, to C#/. Net nie jest do tego najlepszym językiem. Na przykład LISP zawsze był podstawą GP.

Jeśli jednak musisz, prawdopodobnie będziesz chciał dynamicznie generować CIL / MSIL. Można to zrobić za pomocą systemu .Odbicie.Emit , jednak polecam Mono.Cecil . Brakuje mu dobrych dokumentów (jakby reflection emit je miał).. Ale oferuje znacznie lepszy montaż emisja i odbicie.

Kolejną kwestią jest to, że ładowanie kodu, a później jego usuwanie, w. NET framework jest mniej niż trywialne. Przynajmniej nie można rozładować zespołów. Możesz rozładować AppDomain, ale cała sprawa ładowania kodu do oddzielnej appdomain i nazywania go zewnętrznie może być dość niechlujna. System. NET 3.5.Dodatki powinny to ułatwić.

 4
Author: mgsloan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 00:54:11

Jeśli interesują Cię algorytmy genetyczne lub ogólnie optymalizacja heurystyczna, możesz rzucić okiem na HeuristicLab . Jest rozwijany przez kilka lat, 1,5 roku od wydania nowej wersji. Jest zaprogramowany w C # 4 i ma ładny GUI. Istnieje już wiele algorytmów, takich jak algorytm genetyczny, Programowanie genetyczne, Strategia ewolucji, Wyszukiwanie lokalne, wyszukiwanie Tabu, Optymalizacja roju cząstek, Symulowane wyżarzanie i wiele innych. Istnieje również kilka problemów zaimplementowane jak problem trasowania pojazdów, sprzedawca podróżujący, optymalizacja funkcji rzeczywistych, plecak, problem przydziału kwadratowego, klasyfikacja, regresja i wiele innych. Istnieją również samouczki i mamy zintegrowane bufory protokołów, dzięki czemu można komunikować się z zewnętrznymi programami do oceny rozwiązania. Jest licencjonowany na licencji GPL. W 2009 roku oprogramowanie otrzymało nagrodę Microsoft innovation award od Microsoft Austria.

Napisaliśmy również książkę na ten temat: genetyczne Algorytmy i programowanie genetyczne .

 4
Author: Andreas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-17 20:24:22

Czytam A Field Guide to Genetic Programming właśnie teraz (bezpłatny plik PDF do pobrania). Dostępny jest również w wersji papierowej. Omawia wykorzystanie biblioteki napisanej w Javie o nazwie TinyGP . Możesz mieć z tego jakiś przebieg. Nie zacząłem robić żadnego rzeczywistego programowania, ale mam nadzieję zastosować niektóre z pojęć w C#.

 3
Author: Jason Jackson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-25 03:04:32

Mam forked do C#. Net 4.0 jeśli jesteś zainteresowany w pełni funkcjonalny ewolucyjny Framework obliczeniowy. Pakiet zawiera wszystko z oryginalnego projektu Java ECJ, w tym wszystkie próbki robocze.

Napisałem również 500 testów jednostkowych, aby zweryfikować wiele aspektów konwersji. Ale potrzeba jeszcze wielu testów. W szczególności aspekty obliczeń rozproszonych nie są w pełni testowane. To dlatego, że Planuję konwersję z prostego użycia gniazd do bardziej solidnego strategia z wykorzystaniem WCF i WF. Będę również przerabiać framework do wykorzystania TPL (Task Parallel Library).

W każdym razie, możesz pobrać początkową konwersję tutaj:

Http://branecloud.codeplex.com

Jestem również w trakcie konwersji kilku innych frameworków z Javy do. NET, które odnoszą się do badań" syntetycznej inteligencji " (kiedy znajdę czas).

Ben

 3
Author: bstabile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-01 15:11:26

Możesz spróbować GeneticSharp .

Posiada wszystkie klasyczne operacje GA, takie jak selekcja, crossover, mutacja, ponowne założenie i zakończenie.

Jest bardzo rozszerzalny, możesz zdefiniować własne chromosomy, funkcję sprawności, strategię generowania populacji i wszystkie cytowane powyżej operacje.

Może być używany w wielu rodzajach aplikacji, takich jak biblioteki C# i gry Unity 3D, istnieją próbki uruchamiające go w GTK # app i Warcaby Unity 3D gra .

Działa również w Win i OSX.

Oto przykładowy sposób korzystania z biblioteki:

var selection = new EliteSelection();
var crossover = new OrderedCrossover();
var mutation = new ReverseSequenceMutation();
var fitness = new YourFitnessFunction();
var chromosome = new YourChromosome();
var population = new Population (50, 70, chromosome);

var ga = new GeneticAlgorithm(population, fitness, selection, crossover, mutation);

ga.Start();
 3
Author: giacomelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-10 10:23:32

Księga Manninga: " Metaprogramowanie w.Net" poświęca dużą sekcję na GP poprzez drzewa wyrażeń.

 3
Author: cs0815,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 17:16:41

Utrzymuję port ECJ w C#. Świetnie.

 1
Author: mmcdole,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-29 13:25:17