Cunoaște Intuit, curs, programare genetică
Rezumat: Acest curs este dedicat programării genetice (GP), fondurile din care sunt axate pe crearea automată a unei schimbări de software. Odată cu aplicarea metodologiei utilizate în SE este o „creștere“, software-ul pentru a rezolva problema calculatorului. Această „creștere“ este, de asemenea, realizată ca în Adunarea Generală, prin formarea de generație după generație de programe noi, care sunt „mai bine“ și „cel mai bun“ rezolva sarcina. Tehnici GA și GP au multe în comun, dar în același timp, există diferențe semnificative. O diferență importantă este faptul că HA operează cu aceeași dimensiune și aceeași structură de indivizi, în timp ce la indivizii SE pot avea o structură complet diferită una de alta. Consecința acestui fapt este, de exemplu, apariția unor probleme cu operatorul de crossover, deoarece mecanismul său depinde puternic de prezentarea programului.
copac, liniar, grafopodobnoe: a se introduce diverse metode de codare (reprezentare) Software următoarele. Pentru ei, prezinta operatorii genetici cu trei căi și mutația corespunzătoare și tipurile de funcții de fitness. Descrie o metodă de regresie simbolică.
Experimentele pe programe de sinteză de calculator au fost efectuate la sfârșitul anilor '50 [1] și este una dintre cele mai importante componente ale mașinii de învățare, care se referă la una dintre cele mai promițătoare domenii ale inteligenței artificiale. In timpul antrenamentelor cromozomi sau unele structuri sunt generate automat cu ajutorul operatorilor genetici și reprezintă programe de calculator de diferite de complexitate. Primele experimente au fost efectuate folosind coduri binare și programe au demonstrat rezultate modeste, datorită, în primul rând. starea tehnicii de calcul și software (SW) a timpului. Abia în anii '80, cu dezvoltarea de computere suficient de puternice și software-ul de programare genetică format (GP). în primul rând pe baza Koza în [2].
Programarea genetică (GP) ca program de avocați speciale. prezentate într-un format specific, care este de a rezolva anumite probleme. acest lucru se face de multe ori folosind datele de formare și de inferență inductivă. GP este foarte aproape de mașină de învățare, și așa mai departe în funcție de fitness efectua destul de des funcția de eroare (nepotrivire, discrepanțe în diferite valori). Trebuie remarcat faptul că SE lucrează cu materialul genetic al lungime variabilă, care necesită un format non-standard pentru genomul și operatorii genetici corespunzători [3].
6.1. set funcțional și terminale
Programele sunt formate din variabile, constante și funcții, care sunt legate de anumite reguli sintactice. Prin urmare, este necesar să se determine setul terminalului. care cuprinde constante și variabile, iar setul funcțional. care constă în principal din operatori și funcțiile elementare necesare (și altele). Trebuie remarcat faptul că terminalele și funcțiile joacă un rol diferit. Terminale furnizează valori de intrare ale sistemului (program), în timp ce valorile funcției utilizate în procesul de prelucrare în cadrul sistemului. Termenii „funcție“ și „terminale“ sunt luate din copac, cel mai frecvent utilizate, software-ul de prezentare, care este utilizat pe scară largă în teoria limbilor formale și gramatici. Terminalele și funcții ale structurilor nodurile arborelui (sau grafopodobnyh).
6.1.1. Setul de borne
Setul terminal include: 1) extern de intrare la program; 2) Constantele utilizate în program; 3), funcții care nu au argumente. Cuvântul „terminal“ este folosit, deoarece obiectele enumerate mai sus corespund terminalului (sfârșitul, agățat) nodurile din structura arborescentă și terminalele corespund gramaticile formale. Terminalul dă o valoare (numerică), fără a suferi orice valori de intrare. Ea nu are argumente de intrare, și el are de la zero „Arity“.
Trebuie remarcat conexiunea strânsă a intrărilor externe cu probe de formare, care sunt adesea folosite în GP. În care fiecare variabilă (factor semn, etc.), proba de formare corespunde terminalului său. În acest sens, medicul de familie este diferit de alte metode de învățare mașină. Aici variabila de probă nu este legată în mod direct la datele de intrare - comunicarea se realizează prin intermediul terminalelor. Dacă este necesar, terminalul poate fi legat de o altă variabilă externă.
Setul terminal include ca constante. În GP clasic, bazat pe afișarea ierarhică. set de constante numerice alese pentru întreaga populație și nu se schimbă în cursul evoluției. Dar într-un GP liniar (folosind o reprezentare liniară a programului) sunt generate aleator (de obicei din intervalul specificat) Constantele pot suferi mutații atunci când caută soluții.
6.1.2. multe funcționale
Set funcțional este format din operatori (luate de limbaje de programare) și diferite funcții. Poate fi suficient de larg pentru a include un design diferit de limbaje de programare, cum ar fi:
- Funcții Boolean AND, OR, NOT, etc.;
- funcții aritmetice de adunare, scădere, înmulțire, împărțire;
- funcții transcendente (trigonometrice, logaritmice);
- atribuirea de valori variabilelor ();
- Declarații condiționale (în cazul în care, atunci, altfel: caz sucursală sau pentru a comuta operatori);
- operatorii de tranziție (du-te la, sari, call- funcție de apel);
- looping (în timp ce face, se repetă până când, pentru do);
- subrutine și funcții.
Pe de o parte, seturile terminale și funcționale trebuie să fie suficient de mare pentru a reprezenta o soluție potențială. De exemplu, este pluralitate funcțională improbabil de adunare și scădere a operatorilor pot fi utilizate în mod eficient în rezolvarea unor probleme complexe suficient. Pe de altă parte, nu ar trebui să fie mult fără a fi nevoie de a extinde funcționalitatea multora. deoarece crește foarte mult soluțiile spațiale de căutare. Desigur, setul de funcții depinde în mod esențial de sarcina la îndemână. Se poate porni de la un simplu set format din operatorii aritmetice de adunare, scădere, înmulțire, împărțire și logica - AND, OR, NOT, EX-OR.
Acest lucru se aplică și constante. În multe implementări folosesc 256 de noduri pentru reprezentări ale funcțiilor și terminale. De exemplu, 56 de caracteristici sunt utilizate pentru a codifica și 200 pentru constantele. O proprietate importantă a unui set funcțional este că acesta este închis în raport cu valoarea implicită. Asta este, fiecare funcție trebuie să aibă valori care pot lua argumentele sale. Cel mai faimos contraexemplul este diviziunea obișnuită, în care al doilea argument (divizorul) nu poate avea valoarea zero. În acest caz, acesta poate fi o oprire de urgență. Prin urmare, folosesc uneori „protejate“ diviziune, care a spus procese situație, revenind în acest caz, de exemplu, un număr mare sau egală cu zero. De preferință, toate funcțiile (rădăcină pătrată, logaritm, etc.) au „protecție“ similare.