Bardzo ciekawe pytanie. Intryguje mnie możliwość programowania genetycznego na poziomie binarnym przez jakiś czas. W odniesieniu do tego, o co pytasz:
Z ich dokumentacji wynika, że mutacja LLVM nie może zrobić tego, o co prosisz. Uważam jednak, że mądrze jest, jeśli tego nie robimy. Moje rozumowanie jest takie, że każdy program genetyczny w języku maszynowym nieuchronnie napotkałby na "Halting Problem", np. nie byłoby możliwe dowiedzieć się, czy losowo wygenerowana instrukcja całkowicie zawiedzie cały komputer (na przykład przypisując wartość wskaźnikowi zarezerwowanemu dla systemu operacyjnego), lub może działać wiecznie i wykonywać wszystkie cykle procesora. Twierdzenie Turinga mówi nam, że nie można z góry wiedzieć, czy dany program by to zrobił. Pamiętajcie, że mutacja LLVM może spowodować, że całkowicie nieszkodliwy program nadal będzie się zawieszał lub będzie działać wiecznie, ale sądzę, że ich podejście czyni to mniej prawdopodobnym, jedynie poprzez przyjmowanie istniejących instrukcji.
jednak coś takiego jak „niemożliwości” tylko odstrasza naukowcy, inżynierowie nie: -) ...
Co mam na myśli to: W naturze, prawdziwe mutacje dużo pracować bardziej jak LLVM-mutować tak jak to, co robimy w normalnym Programowaniu Genetycznym. Innymi słowy, po prostu wymieniają litery z bardzo ograniczonego zestawu (A, T, C, G) i każda możliwa zmiana wynika z tego. Możemy mieć program lub zestaw programów z początkowym zestawem instrukcji oraz zestaw "możliwych funkcji" powiązanych lub zdefiniowanych w programie. Większość z tych funkcji nie byłaby faktycznie używana, ale będą one dostępne w celu zapewnienia "surowego DNA" dla mutacji, tak jak w przypadku our DNA. Ten zestaw funkcji miałby kompletny (lub częściowo kompletny) zestaw możliwych funkcji dla przestrzeni problemowej. Następnie po prostu używamy podstawowych operacji, takich jak te w mutacie LLVM.
Możliwe problemy mimo:
Biorąc pod uwagę ilość możliwej zmienności, jedynym sposobem, aby mieć dopuszczalne czasy wykonania byłoby mieć ogromne ilości mocy obliczeniowej. Możliwy do osiągnięcia w chmurze lub z procesorami graficznymi.
Nadal musiałbyś walczyć z problemem zatrzymania pana Turinga. Jednak myślę, że można to rozwiązać, uruchamiając rozwiązania w "Piaskownicy" o numerze , która nie zawiedzie, jeśli rozwiąże się problem: Coś jak jednorazowa maszyna wirtualna lub pojemnik podobny do Dockera, taki jak , z ograniczenie czasowe (aby wydostać się z nieskończonych pętli). RozwiĘ ... zanie, które zawiesza się lub przestaje działać, byłoby najgorsze z możliwoś ci , tak, że programy byłyby odbiegajĘ ... ce od tych ś cieżek .
Na pytanie dlaczego to zrobić w ogóle, widzę szereg interesujących wniosków: programy samouzdrawiania, programy, które samo optymalizacji dla konkretnego środowiska, programu „szczepienie” przed lukami, mutowania wirusy, jakość zapewnienie, itp.
Myślę, że istnieje tutaj potencjalny projekt open source. Byłby szalony, niebezpieczny i porywający wir: tylko mój rodzaj projektu. Licz mi, jeśli ktoś to robi.
Czy próbowałeś tego dokonać? O ile mogę powiedzieć, nikt nie ma. Znalazłem slash/A, który jest innym podejściem do programowania genetycznego nie opartego na AST. –