1.4. Класичний генетичний алгоритм
Основний (класичний) генетичний алгоритм (який також називається елементарним чи простим генетичним алгоритмом) складається з наступних кроків:
ініціалізація, або вибір вихідної популяції хромосом;
оцінка пристосованості хромосом в популяції;
перевірка умови зупинки алгоритму;
селекція хромосом;
застосування генетичних операторів;
формування нової популяції;
вибір «найкращої» хромосоми.
Блок — схема основного генетичного алгоритму зображена на рис. 1.3. Розглянемо конкретні етапи цього алгоритму більш докладно з використанням додаткових подробиць, представлених на рис. 1.4.
Ініціалізація, тобто формування вихідної популяції, полягає у випадковому виборі заданої кількості хромосом (особин), що представляються двійковими послідовностями фіксованої довжини.
Оцінювання пристосованості хромосом в популяції полягає в розрахунку функції пристосованості для кожної хромосоми цієї популяції. Чим більше значення цієї функції, тим вище «якість» хромосоми. Форма функції пристосованості залежить від характеру розв'язуваної задачі. Передбачається, що функція пристосованості завжди приймає невід'ємні значення і, крім того, що для вирішення оптимізаційної задачі потрібно максимізувати цю функцію. Якщо вихідна форма функції пристосованості не задовольняє цим умовам, то виконується відповідне перетворення (наприклад, завдання мінімізації функції можна легко звести до задачі максимізації).
Перевірка умови зупинки алгоритму. Визначення умови зупинки генетичного алгоритму залежить від його конкретного застосування. У оптимізаційних задачах, якщо відомо максимальне (або мінімальне) значення функції пристосованості, то зупинка алгоритму може відбутися після досягнення очікуваного оптимального значення, можливо — з заданою точністю.
Зупинка алгоритму також може статися у разі, коли його виконання не приводить до поліпшення вже досягнутого значення. Алгоритм може бути зупинений після закінчення певного часу виконання або після виконання заданої кількості ітерацій. Якщо умова зупинки виконана, то проводиться перехід до завершального етапу вибору «найкращої» хромосоми. В іншому випадку на наступному кроці виконується селекція.
Рис.1.3. Блок-схема генетичного алгоритму
Селекція хромосом полягає у виборі (по розрахованим на другому етапі значеннями функції пристосованості) тих хромосом, які братимуть участь у створенні нащадків для наступної популяції, тобто для чергового покоління. Такий вибір здійснюється згідно з принципом природного добору, за яким найбільші шанси на участь у створенні нових особин мають хромосоми з найбільшими значеннями функції пристосованості.
Існують різні методи селекції. Найбільш популярним вважається так званий метод рулетки (гои1еИеиЛее/ зе/ес/юп), який свою назву отримав за аналогією з відомою азартною грою. Кожній хромосомі може бути зіставлений сектор колеса рулетки, величина якого встановлюється пропорційною значенню функції пристосованості даної хромосоми. Тому чим більше значення функції пристосованості, тим більше сектор на колесі рулетки.
Рис.1.4 Схема виконання генетичного алгоритму
Все колесо рулетки відповідає сумі значень функції пристосованості всіх хромосом розглянутої популяції. Кожній хромосомі, що позначається chi для і =1,2, …, N (де N позначає чисельність популяції) відповідає сектор колеса V(сhj), виражений у відсотках згідно з формулою
(1.2)
Де
(1.3)
причому
— значення функції пристосованості хромосоми
— вірогідність селекції хромосоми.
Селекція хромосоми може бути представлена як результат повороту колеса рулетки, оскільки хромосома «яка виграла» (тобто обрана) відноситься до сектору цього колеса, що випав.
Очевидно, що чим більше сектор, тим більше вірогідність «перемоги» відповідної хромосоми. Тому ймовірність вибору даної хромосоми виявляється пропорційною значенню її функції пристосованості. Якщо все коло колеса рулетки представити у вигляді цифрового інтервалу [0, 100], то вибір хромосоми можна ототожнити з вибором числа з інтервалу [a, b], де а і b позначають відповідно початок і закінчення фрагмента кола, відповідного цьому сектору колеса; очевидно, що 0 <а < b <100. У цьому випадку вибір за допомогою колеса рулетки зводиться до вибору числа з інтервалу [0, 100], яке відповідає конкретній точці на колі колеса. Інші методи селекції будуть розглядатися в п. 1.8.1.
В результаті процесу селекції створюється батьківська популяція, також звана батьківським пулом (matingpool) з чисельністю N, що дорівнює чисельності поточної популяції.
Застосування генетичних операторів до хромосом, відібраних за допомогою селекції, призводить до формування нової популяції нащадків від створеної на попередньому кроці батьківської популяції.
У класичному генетичному алгоритмі застосовуються два основних генетичних оператора: оператор схрещування (сrossover) та оператор мутації (mutation). Однак слід зазначити, що оператор мутації грає явно другорядну роль в порівнянні з оператором схрещування. Це означає, що схрещування в класичному генетичному алгоритмі здійснюється практично завжди, тоді як мутація — досить рідко. Вірогідність схрещування, як правило, досить велика (звичайно 0,5 <рc <1), тоді як імовірність мутації встановлюється дуже малою (найчастіше 0 <рm <0,1). Це випливає з аналогії зі світом живих організмів, де мутації відбуваються надзвичайно рідко.
У генетичному алгоритмі мутація хромосом може виконуватися на популяції батьків перед схрещуванням або на популяції нащадків, утворених в результаті схрещування.
Оператор схрещування. На першому етапі схрещування вибираються пари хромосом з батьківського популяції (батьківського пулу). Це тимчасова популяція, що складається з хромосом, відібраних в результаті селекції та призначених для подальших перетворень операторами схрещування і мутації з метою формування нової популяції нащадків. На даному етапі хромосоми з батьківського популяції об'єднуються в пари.
Це здійснюється випадковим способом відповідно до ймовірністю схрещування Pс. Далі для кожної пари відібраних таким чином батьків розігрується позиція гена (локус) у хромосомі, що визначає так звану точку схрещування. Якщо хромосома кожного з батьків складається з L генів, то очевидно, що точка схрещування Lк представляє собою натуральне число, менше L. Тому фіксація точки схрещування зводиться до випадкового вибору числа з інтервалу [1, L-1] У результаті схрещування пари батьківських хромосом виходить така пара нащадків:
нащадок, хромосома якого на позиціях від 1 до Lк складається з генів першого з батьків, а на позиціях від Lк + 1 до L — із генів другого з батьків;
нащадок, хромосома якого на позиціях від 1 до Lк складається з генів другого з батьків, а на позиціях від Lк + 1 до L — з генів першого з батьків.
Дія оператора схрещування буде проілюстрована прикладами 1.4 та 1.5 (п.п. 1.5 та 1.6).
Оператор мутації з імовірністю рm змінює значення гена в хромосомі на протилежне (тобто з 0 на 1 або навпаки). Наприклад, якщо в хромосомі [100110101010] мутації піддається ген на позиції 7, то його значення, рівне 1, змінюється на 0. що призводить до утворення хромосоми [100110001010]. Як вже згадувалося вище, ймовірність мутації зазвичай дуже мала, і саме від неї залежить, чи буде цей ген мутувати чи ні. Вірогідність рm мутації може емулюватися, наприклад, випадковим вибором числа з інтервалу [0, 1] для кожного гена і відбором для виконання цієї операції тих генів, для яких розігране число виявляється меншим або рівним значенню рm.
Формування нової популяції. Хромосоми, отримані в результаті застосування генетичних операторів до хромосом тимчасової батьківської популяції, включаються до складу нової популяції. Вона стає так званою поточною популяцією для даної ітерації генетичного алгоритму.
На кожній черговій ітерації розраховуються значення функції пристосованості для всіх хромосом цієї популяції, після чого перевіряється умова зупинки алгоритму і або фіксується результат у вигляді хромосоми з найбільшим значенням функції пристосованості, або здійснюється перехід до наступного кроку генетичного алгоритму, тобто до селекції. У класичному генетичному алгоритмі вся попередня популяція хромосом заміщається новою популяцією нащадків, що має ту ж чисельність.
Вибір «найкращої» хромосоми. Якщо умова зупинки алгоритму виконана, то слід вивести результат роботи, тобто представити шуканий розв'язок задачі. Кращим рішенням вважається хромосома з найбільшим значенням функції пристосованості.
На завершення слід визнати, що генетичні алгоритми успадкували властивості природного еволюційного процесу, що складаються в генетичних змінах популяцій організмів з плином часу.
Головний фактор еволюції — це природний відбір (тобто природна селекція), який призводить до того, що серед особин однієї і тієї ж популяції, які генетично розрізняються, виживають і залишають потомство тільки найбільш пристосовані до навколишнього середовища.
У генетичних алгоритмах також виділяється етап селекції, на якому з поточної популяції вибираються і включаються до батьківської популяції особини, що мають найбільші значення функції пристосованості. На наступному етапі, який іноді називається еволюцією, застосовуються генетичні оператори схрещування і мутації, що виконують рекомбінацію генів в хромосомах.
Операція схрещування полягає в обміні фрагментами ланцюжків між двома батьківськими хромосомами. Пари батьків для схрещування вибираються з батьківського пулу випадковим чином так, щоб ймовірність вибору конкретної хромосоми для схрещування була рівна ймовірності Pс.
Наприклад, якщо як батьків випадковим чином вибираються дві хромосоми з батьківського популяції чисельністю N, то Pс=2/N. Аналогічно, якщо з батьківського популяції чисельністю N вибирається 2z хромосом (z <= N / 2), які утворюють z пар батьків, то Pс = 2z/N.
Звернемо увагу, що якщо всі хромосоми поточної популяції об'єднані в пари до схрещування, то Рс = 1. Після операції схрещування батьки в батьківській популяції заміщаються їхніми нащадками.
Операція мутації змінює значення генів у хромосомах із заданою вірогідністю рm способом, представленим при описі відповідного оператора. Це призводить до інвертування значень відібраних генів з 0 на 1 і навпаки. Значення рm, як правило, дуже мале, тому мутації піддається лише невелика кількість генів. Схрещування — це ключовий оператор генетичних алгоритмів, що визначає їх можливості та ефективність. Мутація грає більш обмежену роль. Вона вводить в популяцію деяку різноманітність і попереджає втрати, які могли б відбутися внаслідок виключення якого-небудь значимого гена в результаті схрещування.
Основний (класичний) генетичний алгоритм відомий у літературі в якості інструменту, в якому виділяються три види операцій: репродукція, схрещування і мутація. Терміни селекції та репродукція в даному контексті використовуються як синоніми. При цьому репродукція в даному випадку пов'язується радше з створенням копій хромосом батьківського пулу, тоді як більш поширений зміст цього поняття означає процес формування нових особин, що походять від конкретних батьків (див. розд. 1.1). Якщо ми приймаємо таке тлумачення, то оператори схрещування і мутації можуть вважатися операторами репродукції, а селекція — відбором особин (хромосом) для репродукції.
Еволюційне програмування було винайдено доктором Лоуренсом Дж. Фогелем в Національному Науковому Фонді США в 1960 році. Йому було доручено представити доповідь Конгресу США щодо суми інвестицій у фундаментальні дослідження. Одним з питань розгляду був штучний інтелект.
У той час штучний інтелект був обмежений двома основними напрямками досліджень: моделюванням людського мозку ( нейронні мережі) і моделюванням вирішення проблем поведінки людини ( евристичне програмування). Альтернативний варіант, передбачений доктором Фогелем, повинен був відмовитися від моделювання кінцевого продукту еволюції, і, швидше, моделювати процес еволюції, використовуючи себе як транспортний засіб для отримання розумної поведінки (Фогель, 1962, 1963). Фогель розглядає інтелект як складову частину здатності робити прогнози навколишнього середовища в поєднанні з перекладом кожного прогнозу у відповідну відповідь у світлі заданої мети (наприклад, для максимізації функції виграшу). Таким чином, на його думку прогнозування є необхідною умовою для розумної поведінки. Моделювання еволюції як оптимізації процесу стало наслідком досвіду доктора Фогеля в нових галузях «біотехнології», кібернетики і техніки. Доктор Фогель провів серію експериментів, в яких автомати представляли окремі організми. Автомати - це графічні моделі, які використовуються для опису поведінки або програмного забезпечення та апаратних засобів, тому він назвав свій підхід еволюційним програмуванням.
Переваги еволюційного програмування були вивчені д-ром Фогелем після його повернення в Сан-Дієго в липні 1961 р. при зверненні до проблем прогнозування системи ідентифікації і контролю в серії досліджень, очолюваних тоді Фогелем та його колегами, провідними вченими в області еволюційних обчислень. У деяких ранніх описах еволюційного програмування Фогель неправильно стверджував, що воно було обмежено одним батьком і одним нащадком.
У 1964 році Фогель отримав докторський ступінь у галузі електротехніки в університеті Каліфорнії в Лос-Анджелесі. Його дисертація «Про походження Інтелекту», була присвячена штучному інтелекту шляхом імітації еволюції. Ранні роботи також привели доктора Фогеля, д-ра Аль Оуенса, і д-ра Майкла Уолша до створення рішень для Science, Inc в 1965 році. Це була перша компанія у світі, що займалася виключно комерціалізацією еволюційних алгоритмів.
У 1970 р., завдяки в першу чергу керівництву професора Дональда Дерхольта в державному університеті Нью-Мехіко, було опубліковано більш широке дослідження обчислень для еволюційного програмування, ніж для будь-яких інших форм модельованої еволюції. Більшість цих досліджень використовували еволюційні програми длярозпізнавання образів (Root, 1970; Корнетт, 1972; Lyle, 1972; Holmes, 1973; Trellue, 1973; Монтес, 1974; Атмар, 1976; Вінсент, 1976; Вільямс, 1977; Dearholt, 1976) . Як приклад для розпізнавання використовувалися головним чином рукописні символи. До експериментів включили параметри адаптивних мутацій. Робота Атмара (1976) - один з ранніх прикладів імітації еволюції в обстановці штучного життя. Атмар (1976), можливо, перший запропонував і описав, як еволюційне програмування може бути розраховане на те, що зараз відомо як «розширена база обладнання». Ангеліні і Поллак (1993) описали, як еволюційне програмування може бути використано для розвитку комп'ютерних програм.
Гіпотези щодо виду залежності цільової змінної від інших змінних формулюються системою у вигляді програм на деякій внутрішній мові програмування. Якщо це універсальна мова, то теоретично нею можна виразити залежність будь-якого виду. Процес побудови таких програм будується як еволюція у світі програм (цим метод трохи схожий на генетичні алгоритми). Якщо система знаходить програму, яка точно виражає шукану залежність, вона починає вносити до неї невеликі модифікації і відбирає серед побудованих таким чином дочірніх програм ті, які підвищують точність. Система "вирощує" кілька генетичних ліній програм, що конкурують між собою щодо точності знаходження шуканої залежності. Спеціальний транслюючий модуль, переводить знайдені залежності з внутрішньої мови системи на зрозумілу користувачу мову ( математичних формул, таблиці тощо), роблячи їх легкодоступними. Для того, щоб зробити отримані результати зрозумілішими для користувача-нематематика, існує великий арсенал різноманітних засобів візуалізації виявлених залежностей.
Пошук залежності цільових змінних від інших проводиться у формі функцій якогось певного виду. Наприклад, в одному з найвдаліших алгоритмів цього типу - методі групового урахування аргументів ( МГУА) залежність шукають у формі поліномів. Причому складні поліноми заміняються декількома простими, враховують лише деякі ознаки (групи аргументів). Зазвичай використовуються попарні об'єднання ознак. Цей метод не має великих переваг в порівнянні з нейронними мережами з готовим набором стандартних нелінійних функцій, але, отримані формули залежності, в принципі, піддаються аналізу і інтерпретації (хоча на практиці це все-таки складно).
|
|
