Міністерство освіти і науки України
Національний університет «Львівська політехніка»
кафедра САПР
Звіт
до лабораторної роботи №6
на тему:
«ОПТИМІЗАЦІЯ МОДЕЛІ НЕЙРОННОЇ МЕРЕЖІ
ГЕНЕТИЧНИМИ АЛГОРИТМАМИ У СЕРЕДОВИЩІ MATLAB»
Львів-2008
МЕТА РОБОТИ
Вивчити і закріпити знання та основні аспекти роботи, а також отримати практичні навички оптимізації моделі нейронної мережі за допомогою генетичних алгоритмів у середовищі програми Matlab.
ТЕОРИТИЧНІ ВІДОМОСТІ
Реалізація генетичних алгоритмів у середовищі Matlab.
Генетичні алгоритми і графічне меню прямого пошуку. Генетичні алгоритми і графічне меню прямого пошуку – це набір функцій, які розширюють можливості графічного меню оптимізації і обчислювального числового середовища програми Matlab. Генетичні алгоритми і графічне меню прямого пошуку включають програму для розв’язання задач оптимізації, використовуючи генетичні алгоритми прямого пошуку. Алгоритми дають можливість розв’язувати низку задач оптимізації, які знаходяться за межами стандартного графічного меню оптимізації. Всі функції графічного меню інструментів – це М-файли Matlab, сформовані з тверджень Matlab, які реалізують спеціалізовані алгоритми оптимізації. Коди Matlab для цих функцій можна побачити, використовуючи протокол (твердження) type function_name.Можливості генетичних алгоритмів і графічного меню прямого пошуку можна розширити, написавши власні М-файли або використовуючи панель інструментів в комбінації з Simulink.
Запуск генетичних алгоритмів. Щоб запустити генетичні алгоритми, треба натиснути на клавішу Start y режимі Ran solver. Після цього в полі Current generations буде показаний номер поточного покоління. Поля Status і Results покажуть повідомлення "GA runnig". Коли робота алгоритму припиняється, поля Status і Results показують повідомлення "GA terminated". Поки алгоритми запускаються, параметри в панелі інструментів можна змінювати. Зміни будуть прийняті в наступному поколінні. Поки зміни, які з’являються на початку наступного покоління, не будуть прийняті, поля Staus і Results генерують повідомлення Changes pending. На початку наступного покоління з’являється повідомлення Changes applied.
Написання М-файлів для функцій, які треба оптимізувати. Для використання генетичних алгоритмів і графічного меню прямого пошуку спочатку треба написати М-файл, який обчислює функцію, що має бути оптимізована. М-файл повинен бути вектором-рядком, довжина якого дорівнює числу незалежних змінних для цільової функції, і повертатися скалярною величиною.
Припустимо, що треба мінімізувати функцію. М-файл, який обчислює цю функцію, повинен бути вектором-рядком x довжини 2, відповідаючи змінним і , і повертати скалярну величину, рівну значенню функції в точці x. Для того, щоб написати М-файл, необхілно виконати такі кроки:
1. Вибрати команду New у файловому меню Matlab.
2. Вибрати М-файл. Ця команда відкриває новий М-файл у редакторі.
3. В М-файлі ввести такі два рядки кодів:
function z = my_fun(x)
z = x(1) ^2 - 2*x(1) *x(2)+ 6*x(1)+ x(2) ^2 - 6*x(2);
4. Зберегти М-файл у папці на шляху Matlab.
Для того, щоб перевірити, що М-файл повертає правильне значення, треба ввести my_fun([2 3]). Отримана відповідь буде мати такий вигляд: ans =-5.
Примітка. Не слід використовувати Editor/Debugger для того, щоб виправити несправності М-файлу для цільової функції під час роботи панелі графічного алгоритму або меню пошуку за шаблоном. Це призводить до появи повідомлень на мові Java в командному вікні і ускладнює виправлення несправностей.
Виклик генетичних алгоритмів. Існує два шляхи: генетичні алгоритми можна викликати за допомогою панелі інструментів:
викликаючи функцію генетичних алгоритмів ga в командному рядку;
використовуючи меню генетичних алгоритмів та графічний інтерфейс для генетичних алгоритмів.
Для того, щоб викликати генетичні алгоритми в командному рядку, треба викликати функцію генетичних алгоритмів ga з синтаксичною структурою [x fval] = ga(@fitnessfun, nvars, options), де
@fitnessfun - шлях до функції придатності;
nvars - число незалежних змінних для функції придатності;
оptions – структура, яка містить опції для генетичних алгоритмів. Якщо ці аргументи не задаються, функція ga використовує свої опції.
Використання функції ga є зручним, якщо потрібно:
повернути результати безпосередньо до робочого простору Matlab;
керувати генетичними алгоритмами багаторазово з різними опціями, викликаючи функцію ga з М-файлу;
керувати генетичними алгоритмами багаторазово з різними опціями, викликаючи функцію ga з М-файлу.
Використання інструментів генетичних алгоритмів. Меню інструментів генетичних алгоритмів - це графічний інтерфейс користувача, який дає можливість використовувати генетичні алгоритми без роботи в командному рядку. Щоб відкрити панель інструментів генетичних алгоритмів, треба ввести команду Gatool. Для використання панелі інструментів генетичних алгоритмів треба ввести інформацію про:
функцію придатності - цільову функцію, яку треба мінімізувати. Ввести функцію придатності потрібно у формі @fitnessfun, де fitnessfun.m – М-файл, який обчислює функцію придатності. Знак @ вказує шлях функції до fitnessfun.
число змінних -- довжина вхідного вектора функції прилатності. Для функції my_fun, описаної при написанні М-файлів для функцій, які треба оптимізувати, вводиться 2.
Щоб запустити генетичні алгоритми, треба клацнути на клавіші Start. Панель інструментів покаже результати оптимізації в полях Status i Results. Опції для генетичних алгоритмів можна змінити на панелі Options. Для того, щоб переглянути опції в одній з категорій, перелічених на панелі, треба клацнути поряд з нею на знаку +. Отримати більш конкретнуї інформацію можна в меню генетичних алгоритмів і в детальному описі панелі інструментів.
Функція Растрінга. Розглянемо, як у середовищі Matlab можна знайти мінімум функції Растрінга, тобто функції, яка часто використовується для тестування генетичних алгоритмів. Панель інструментів містить М-файл rastriginsfcn.m, який обчислює значення функції Растрінга. Функція Растрінга має багато місцевих мінімумів -- "впадин". Однак, вона має тільки один глобальний мінімум, який знаходиться в точці [0 0] простору x-y. У будь-якому локальному мінімумі, окрім [0 0], значення функції Растрінга є більшим, ніж 0. Чим віддаленішим є локальний мінімум від початку координат, тим більшим є значення функції в цій точці.
Завдання.
Ознайомитися з теоретичними відомостями.
Увімкнути комп'ютер. Переконатись у наявності встановленої програми Matlab. Запустити програму Matlab.
Оптимізувати за допомогою тулбоксу Genetic Algorithms програми Matlab модель нейронної мережі з прикладу 1. Отримати: графік значень параметрів та після початкової та кінцевої генерацій, наведені на рис. 2, якщо , де n - № прізвища студента у списку групи; графік динаміки енергетичної функції у нормалізованих одиницях, поданий на рис. 3, якщо ; графік форми енергетичної функції для рівновіддалених на інтервалі та значень параметрів та , показаний на рис. 4, якщо ; графік ліній однакового рівня енергетичної функції, поданий на рис. 5, якщо ; графік форми енергетичної функції для та значень параметрів та , показаний на рис. 6, якщо ; графік ліній однакового рівня для та значень параметрів та , поданий на рис. 7, якщо .
Написати на мові Matlab програму моделювання аналогової нейронної мережі, яка описується диференційним рівнянням (1). Узагальнивши
написану програму, отримати графіки розподілу зон кількості переможців в залежності від значень вхідних сигналів та , показані на рис. 8 і рис. 9.
Оптимізувати за допомогою тулбоксу Genetic Algorithms програми Matlab модель нейронної мережі з прикладу 1 при наявності у множині параметрів моделі (1) парамера . Отримати: графік динаміки енергетичної функції у нормалізованих одиницях, показаний на рис. 10, якщо ; графік розподілу зон кількості переможців в залежності від значень вхідних сигналів та , поданий на рис. 11, якщо .
Отримати: графік динаміки станів в нормалізованих одиницях та нормалізованому масштабі часу, поданий на рис. 12, якщо ; графік динаміки станів , показаний на рис. 13, якщо . Порівняти результати функціонування моделі нейронної мережі, отриманої за допомогою евристичного пошуку, та моделей, оптимізованих за допомогою генетичних алгоритмів.
Проінформувати викладача про завершення роботи.
Продемонструвати на комп’ютері та пояснити результати виконання отриманих завдань.
9. Оформити звіт.
Оскільки n=8, то потрібно отримати графік динаміки енергетичної функції у нормалізованих одиницях, поданий на рис. 3.
Хід роботи.
Долучимо до множини параметрів моделі (1), які повинні бути оптимізовані, парамер . Обмежимо значення діапазоном , а значення та залишимо у попередніх діапазонах. Задамо параметрам початкові значення , відповідно та значення ваг енергетичної функції (7) . Застосуємо дискретних значень вхідних сигналів у діапазоні , значень параметрів , кількість генерацій генетичних алгоритмів та умову . В результаті мінімізації енергетичної функції (7) за допомогою генетичних алгоритмів отримуються наступні значення параме-
трів моделі (1):. Динаміка енергетичної функції у нормалізованих одиницях представлена на рис. 10. Розподіл зон кількості переможців в залежності від значень вхідних сигналів та для отриманих параметрів представлений на рис. 11. Як можна побачити з порівняння рис. 11 та рис. 9, розмір діапазону коректного функціонування моделі (1) збільшився і визначається нерівністю , тобто є максимально можливим. Можна пересвідчитись у тому, що для будь-якої іншої кількості вхідних сигналів , які задовольняють умову (7), розмір зони коректного функціонування моделі на рис. 11 буде залишатись незмінним. Отриманий розв’язок є стійким до зміни значень параметрів моделі (1).
Змоделюємо динаміку вихідних сигналів моделі (1). Задамо значення та з тим, щоб вихідні сигнали розміщувались у необхідному діапазоні з рис. 11. Динаміка станів в норма-
лізованих одиницях та нормалізованому масштабі часу має форму, представлену на рис. 12. Згідно з рис. 12 компоненти демонструють влас-
тивість вибору більшого з двох сигналів. Переможцем є , вказуючи на те, що вхідний сигнал є більшим, ніж . Змінимо значення вхідних сигналів мережі на . Динаміка станів буде мати форму, представлену на рис. 13. Згідно з рис. 13, компоненти демонструють властивість (4).
Отже, генетичні алгоритми дозволяють оптимізувати модель нейронної мережі другого порядку (1) шляхом оптимізації значень її параметрів , та розміру діапазону коректних розв’язків. Відмітимо, що для надійного знаходження за допомогою генетисних алгоритмів значень параметрів моделі (1) доцільним є використання значної кількості () дискретних точок та , максимально дозволену умовою (8) кількість дискретних значень вхідних сигналів та кількість генерацій генетичних алгоритмів . Це дає можливість уникати виконання виснажливого пошуку “правильних” початкових значень параметрів та чисел .
Отримані результати.
1. Динаміка максимальної та середньої величини енергетичної функції в залежності від кількості генерацій .
Висновки
На цій лабораторній роботі я вивчив і закріпив знання та основні аспекти роботи, а також отримав практичні навички оптимізації моделі нейронної мережі за допомогою генетичних алгоритмів у середовищі програми Matlab.