ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ Область применения 1. Нахождение экстремумов функций 2. Решение задач размещения ресурсов 3. Решение задач экономического планирования Пример. max f(x), где D = {x = (x1, x2, :, xN) | xi на [ai, bi], i=1, 2,:N} x из D Решение задачи - вектор x = (x1, x2, :, xN). 3D Surface Plot (lab1_15 14v*50c) ALV1_MVP = Distance Weighted Least Squares Поиск глобального оптимума ГА = (P0, , l, s, р, f, t) 200 150 100 50 0 -50 -100 Формальное описание ГА ГА = (P0, , l, s, р, f, t) где P0 = (a01, ..., a0) - исходная популяция, где, a0i - решение задачи, представленное в виде хромосомы; - целое число ( размер популяции); l - целое число (длина каждой хромосомы популяции); s - оператор отбора; p - отображение, определяющее рекомбинацию (кроссовер, мутация, инверсия); f - функция оптимальности; t - критерий остановки. ОСОБЬ – ОДНО ИЗ ВОЗМОЖНЫХ РЕШЕНИЙ ПОСТАВЛЕННОЙ ЗАДАЧИ ПОПУЛЯЦИЯ – СОВОКУПНОСТЬ ОСОБЕЙ ОСОБЬ ИЛИ ХРОМОСОМА 1101 1100 0101 Х1 Х2 Х3 1001 1000 0111 Х1 Х2 Х3 ……………… 1000 1010 ГЕН ОСОБИ 1011 1010 ПОПУЛЯЦИЯ ПРИНЦИПЫ КОДИРОВАНИЯ ГЕНОВ Двоичное кодирование Кодирование по коду Грея Десяти чны й код Двоич. значе ние Шестн. значе ние Десят. код Двоич.з начен ие Шестн. значен ие 0 0000 0h 0 0000 0h 1 0001 1h 1 0001 1h 2 0010 2h 3 0011 3h 3 0011 3h 2 0010 2h 4 0100 4h 6 0110 6h 5 0101 5h 7 0111 7h 6 0110 6h 5 0101 5h 7 0111 7h 4 0100 4h 8 1000 8h 12 1100 Ch 9 1001 9h 13 1101 Dh 10 1010 Ah 15 1111 Fh 11 1011 Bh 14 1110 Eh 12 1100 Ch 10 1010 Ah 1001 1000 0111 Х1 Х2 Х3 1011 1010 Как выбрать длину гена в соответствии с точностью?? Пример. Функция от двух переменных x1 и x2, определенной на прямоугольной области D = {0 <x1<1; 0<x2<1}, Требуется локализовать решение x* с точностью по каждому из параметров 10-6. 1 алгоритм решения задачи выбора длины гена Пространство параметров дискретизируется равномерной сеткой с (bi-ai)/(10-6)= 1/10-6 = 1000000 узлами. Количество узлов кодируется l = 20 бит, где l - 106 < 2l+1. Общая длина бинарной строки кодировки для двумерной задачи составит 2X20 = 40 бит. 2 алгоритм решения задачи выбора длины гена и кодировки для чисел с плавающей точкой 1. Разбивают весь интервал допустимых значений признака на участки с требуемой точностью. 2. Принимают значение гена как целочисленное число, определяющее номер интервала (используя код Грея). 3. В качестве значения параметра принимают число, являющиеся серединой этого интервала. Допустим, что значения признака лежат в интервале [0,1]. При кодировании использовалось разбиение участка на 256 интервалов. Для кодирования их номера нам потребуется таким образом 8 бит. Допустим значение гена: 00100101bG. Найдем соответствующий ему номер интервала: 25hG->36h->54d. Получаем интервал [0,20703125, 0,2109375]. Значит значение нашего параметра будет (0,20703125+0,2109375)/2=0,208984375. 3 алгоритм решения задачи выбора длины гена и кодировки для чисел с плавающей точкой 1. Каждый интервал [ai, bi] разбиваем на k отрезков равной длины. Определяем шаг hi = (bi - ai) / k, i = 1, 2, :N. 2. Покроем i-ый интервал [ai, bi] сетью si из (k+1) узла с постоянным шагом hi. xi,j = ai + jhi, j = 0, 1, : k. 3. Длина кода q выбирается таким образом, чтобы k < 2q. Наиболее целесообразно и экономично использовать сетку с k = 2q-1. Символьная запись j-ого узла по i-ой координатной оси в двоичном коде b 1i b 2i ... B qi После дискретизации по всем N координатным осям, s = b11 b21 ... b q1 ... b 1N b 2N особь Пример. f(x) = 10 + x sin(x), х [0, 10]. Пусть q=3. Тогда 23=8- отрезков. Шаг h=10:8=1,25. ... b qN Пусть у объекта имеется 5 признаков, каждый закодирован геном длинной в 4 элемента. Тогда длина особи будет 5*4=20 бит Определение. Приспособленность особи – значение соответственной целевой функции f(x) Например. Имеем функцию y=3 x2+ 5x3. Необходимо на участке х[1; 5] найти ее максимум. 1. Задаем популяцию особей согласно алгоритмам. 2. Рассчитываем приспособленность особей и всей популяции. Пусть 1 особь = 1, 2 особь – 2 и т.д. Приспособленность 1 особи 1= 8, 2=52 и т.д. Приспособленность всей популяции (1+ 2+….+ n)\n Генетические операторы МУТАЦИЯ 1 0 1 0 1 1 ИНВЕРСИЯ 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 1 ПОТОМКИ КРОССОВЕР 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 ПЛАН РАЗВИТИЯ ПОПУЛЯЦИИ ХОЛЛАНДА Шаг 1.Инициализация начальной популяции. Ввести точку отсчета эпох t=0. Инициализировать случайным образом М генотипов особей и сформулировать из них начальную популяцию b 0 A1 0 ,..., AM 0 Вычислить приспособленность особей популяции 0 1 0 ,..., M 0 a потом — среднюю приспособленность популяции ~0 h 0 / M M h 1 Шаг 2. Выбор родителей для скрещивания 2.1. Увеличить номер эпохи на единицу t=t+1. Определить случайную переменную Randt , на множестве М = {1,..., М}, назначив вероятность выпадения любого h М пропорциональной h t / ~ t 2.2. Сделать одно испытание Randt , и вычислить результат i(t}, который определит номер первого родителя . Ai t t 2.3. Повторным испытанием определить номер второго родителя i(t). Шаг 3. Формирование генотипа потомка. 3.1. С вероятностью кроссовера - Рс произвести над выбранными родителями кроссовер. 3.2. Выбрать одного из потомков и сохранить его как 1A(t). 3.3. Последовательно применить к 1A(t) оператор инверсии (с вероятностью Рі,), а потом - мутации (с вероятностью Pт). 3.4. Полученный генотип потомка сохранить как A' ( t ) Шаг 4. Отбор особи на элиминирование и замена ее потомком. 4.1. С равной вероятностью 1/М для всех h М определить случайным образом номер j(t) особи в популяции, которую заменит потомок. 4.2. Обновить текущую популяцию b(t) путем замены A t на A' ( t ) i t Шаг 5. Определение приспособленности потомков. 5.1. Вычислить приспособленность потомка Е( ^ A' ( t )). 5.2. Обновить значение средней приспособленности (t) и вектор приспособленностей v(t). Шаг 6. Перейти к шагу 2.