Знайте, Intuit, лекция, генетично програмиране

Анотация: Тази лекция е посветена на генетичното програмиране (GP), средствата от които са фокусирани върху автоматично създаване на промяна на софтуера. С прилагането на методиката, използвана в SE е "расте" софтуер за решаване на проблема компютър. Тази "отглеждане" също се извършва както в Общото събрание, чрез образуване на поколение след поколение на нови програми, които са "по-добро" и "най-добър" решаване на задачата. GA и GP техники имат много общи черти, но в същото време има значителни разлики. Една важна разлика е, че ХК работи с еднакъв размер, същата структура на физическите лица, докато в ЮИ индивиди могат да имат напълно различна структура от друг. Последица от това е, например, появата на проблеми с оператора на кросоувър, тъй механизъм му силно зависи от представянето на програмата.

По-долу са въведени различни методи за кодиране (представителство) Софтуер: дърво, линейни, grafopodobnoe. За тях, показва, съответстваща генетични оператори кръстосване и мутация и видовете фитнес функция. Описва метод за символично регресия.

Опитите с компютърни програми синтез бяха проведени в края на 50-те години [1] и е една от най-важните компоненти на машинно обучение, който се отнася до един от най-обещаващите области на изкуствения интелект. По време на обучението хромозоми или някои структури се генерират автоматично с помощта на генетични оператори и представляват компютърни програми, с различна сложност. Първите експерименти са извършени с помощта на двоични кодове и програми са показали скромни резултати, което се дължи на първо място. състоянието на компютърните технологии и софтуер (SW) от времето. Едва през 80-те години с развитието на достатъчно мощни компютри и софтуер, образувана генетично програмиране (GP). главно въз основа на Koza в [2].

Генетичната програмиране (GP), като програмата специални адвокати. представени в определен формат, който е за решаване на някои проблеми. това се прави често се използват данни, обучение и индуктивен извод. GP е много близо до машинно обучение, и така като фитнес функция доста често изпълнява функция грешка (несъответствие, несъответствия в различните показатели). Трябва да се отбележи, че SE работи с генетичен материал с променлива дължина, която изисква не-стандартен формат за генома и съответните генетични оператори [3].

6.1. Функционална и терминал комплект

Програми са съставени от променливи, константи и функции, които са свързани с някои синтактични правила. Ето защо е необходимо да се определи краен комплекта. съдържащ постоянен и променлив и функционалната комплекта. който се състои основно от операторите и необходимите елементарни функции (и други подобни). Трябва да се отбележи, че изводите и функциите играят различна роля. Терминали дават стойности за въвеждане на системата (програма), а стойностите на функциите, използвани при преработката в рамките на системата. Термините "функция" и "крайни" са взети от дървото, най-често се използва, представяне софтуер, който се използва широко в теорията на формалните езици и граматики. Терминали и функции на възли дърво (или grafopodobnyh) структури.

6.1.1. Комплектът терминал

Терминалният Комплектът включва: 1) външен вход на програмата; 2) константи, използвани в програмата; 3) функции, които нямат аргументи. Думата "терминал" се използва, тъй като предметите, изброени по-горе съответстват на терминал (края, висящи) върхове в дървовидна структура и терминалите отговарят на формалните граматики. Терминалът дава (цифров) стойност, без да се подлагат на входа стойности. Тя няма входните аргументи, а той има нула "arity".

Трябва да се отбележи тясната връзка на външните ресурси, с обучение на проби, които често се използват в личния лекар. Където всяка променлива (знак фактор, и т.н.) проба обучение съответства на неговата терминал. В този смисъл, личният лекар е различен от други методи за машинно обучение. Тук проба променливата не е свързана директно към входните данни - комуникация се осъществява чрез терминали. Ако е необходимо, терминалът може да бъде свързан с други външни променлива.

Терминалният Комплектът включва като константи. В класическия личния лекар, въз основа на мнението на дърво. набор от числови константи, избрани за цялото население и не се променя в хода на еволюцията. Но по линеен GP (като се използва линеен представяне на програмата) са случайно генерирани (обикновено от посочения диапазон) константи могат да мутират при търсенето на решения.

6.1.2. функционален много

Функционален набор се състои от оператори (взети от езици за програмиране), както и различни функции. То може да бъде достатъчно широко, за да се включат с различен дизайн на езици за програмиране, като например:

  • Булеви функции AND, OR, NOT, и др.;
  • аритметични функции на събиране, изваждане, умножение, разделяне;
  • трансцедентни функции (тригонометрични, логаритмична);
  • определяне стойности на променливите ();
  • условни конструкции (ако тогава, друго: случай клон или сменяме оператора);
  • оператори в преход (отиват, да скачат, кол извикване на функция);
  • примка (докато се повтаря, докато, за задачи);
  • подпрограми и функции.

От една страна, на терминала и функционални комплекти трябва да са достатъчно големи, за да представляват потенциален разтвор. Например, това е малко вероятно функционален множество събиране и изваждане на операторите могат да бъдат ефективно използвани в решаване на сложни проблеми достатъчно. От друга страна не трябва да бъде много по-без да е необходимо да се разшири функционалността на мнозина. защото това увеличава значително търсене космически решения. Разбира се, на снимачната площадка на функциите по същество зависи от задачата. Човек може да се започне от един прост набор състои от аритметични оператори на събиране, изваждане, умножение, деление и логика - И, ИЛИ, НЕ, EX-OR.

Това важи и за константи. В много приложения се използват 256 възли за представяне на функции и терминали. Например, 56 функции се използват за кодиране и 200 за константи. Важно свойство на функционален набор е, че тя е затворена по отношение на стойността по подразбиране. Това означава, че всяка функция трябва да имат стойности, които могат да вземат своите аргументи. Най-известният Контрапример е обичайно участък, където вторият аргумент (делителя) не може да вземе стойността нула. В този случай, тя може да бъде аварийно спиране. Затова понякога се използва "защитени" дивизия, който обработва каза ситуация, връщайки се в този случай, например, голям брой или нула. За предпочитане, всички функция (квадратен корен, логаритъм, и т.н.) имат подобна "защита".