САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Математико-механический факультет Кафедра информационно-аналитических систем Заведующий кафедрой: Профессор Б.А. Новиков Хаустова Вера Евгеньевна Применение генетического алгоритма для вычисления чисел Армстронга Курсовая работа Научный руководитель: К. ф.-м. н., доцент Н.Г. Графеева Санкт-Петербург 2013 SAINT-PETERSBURG STATE UNIVERSITY Mathematics and Mechanics Faculty Sub-Department of Analytical Information Systems Head of Department: Professor B.A. Novikov Khaustova Vera Application of genetic algorithm for calculating the number of Armstrong Application of genetic algorithm for calculating the number of Armstrong Course project Scientific Supervisor Assoc. N.G. Grafeeva Saint-Petersburg 2013 Аннотация Данная работа посвящена применению генетического алгоритма, для вычисления чисел Армстронга. Одна из главных задач: определить влияние количества мутаций и особей в популяции на сходимость алгоритма. Числа Армстронга Введем определение чисел Армстронга. Если выполняется следующее равенство: 𝑎1𝑛 + 𝑎2𝑛 + ⋯ + 𝑎𝑛𝑛 = 𝐴, где A исходное число, n – количество цифр в А, 𝑎𝑖 - i-ая цифра числа А. Генетический алгоритм В качестве хромосом рассматриваем цифры числа. Получаем по n хромосом у каждой особи. Далее рассматриваем схему генетического алгоритма для решения данной задачи. 1) Создаем начальную популяцию. В данном случае важно, чтобы каждая из хромосом, могла принять все возможные значение от 1 до 9. Поэтому первый 10 особей начальной популяции задаем однозначно: 𝐴0 = 100…00; 𝐴1 = 111..11; 𝐴2 = 222..22; 𝐴3 = 333..33; 𝐴4 = 444..44; 𝐴5 = 555..55; 𝐴6 = 666..66; 𝐴7 = 777..77; 𝐴8 = 888..88; 𝐴9 = 999..99. Остальные особи начальной популяции заполняются случайными числами. 2) Для каждой особи считаем функцию выживаемости f – разность между числом и суммой цифр, возведенных в n-ую степень. Очевидно, что нам нужно свести это значение к 0. Сортируем популяцию по возрастанию f. В данном случае, чем меньше значение f, тем больше шансов у особи на выживание и размножение. 3) Случайным образом выбираем два родителя, с помощью нормального распределения. Номер родителей вычисляем по формуле: 𝑟𝑎𝑛𝑑𝑜𝑚 2 ∗ 𝑘 + 𝑟𝑎𝑛𝑑𝑜𝑚 2 ∗ 𝑘 + 𝑟𝑎𝑛𝑑𝑜𝑚 2 ∗ 𝑘 + 𝑟𝑎𝑛𝑑𝑜𝑚 2 ∗ 𝑘 + 𝑟𝑎𝑛𝑑𝑜𝑚 2 ∗ 𝑘 −𝑘 , 5 Где k – количество особей в популяции. Random(2*k) – случайное число от 0 до 2*k. Среднее арифметическое случайных величин имеет нормальное распределение, пик находится в нуле, далее функция убывает. 𝑖= 4) Два родителя скрещиваются кроссинговером, т.е. i = random( 1..(n-1)); 𝑃1 = 𝑎1,1 𝑎1,2 . . 𝑎1,𝑖 𝑎1,𝑖+1 . . 𝑎1,𝑛 – первый родитель; 𝑃2 = 𝑎2,1 𝑎2,2 . . 𝑎2,𝑖 𝑎2,𝑖+1 . . 𝑎2,𝑛 – второй родитель; 𝐶ℎ𝑖𝑙𝑑 = 𝑎1,1 𝑎1,2 . . 𝑎1,𝑖 𝑎2,𝑖+1 . . 𝑎2,𝑛 – потомок. 5) Таким образом, формируем новое поколение. Одна самая сильная особь из предыдущего поколения выживает и переходит в следующее, это обеспечивает нам не убывание min f. 6) Затем происходят мутации: i = random (0..k) номер мутирующей особи; j = random (1..n) номер мутирующей хромосомы; b = random (0..9) новое значение хромосомы; 𝑃𝑖 = 𝑎1,1 𝑎1,2 . . 𝑎1,𝑖−1 𝑏𝑎1,𝑖+1 . . 𝑎1,𝑛 – мутировавшая особь. 7) Повторяем пункты со 2-го по 6-ой, пока не получим необходимое значение. Сходимость алгоритма Ответ n 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Кол-во мутаций k 371 153 153 153 153 370 153 371 407 371 370 371 153 153 370 153 371 370 407 370 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 Номер поколения, в котором найдено решение 30 5 2 4 9 14 10 6 5 5 3 8 8 2 0 4 5 4 2 6 Зависимость номера поколения, от числа мутаций 35 30 25 20 15 10 5 0 0 20 40 60 80 100 120 Ответ n 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Кол-во мутаций k 153 407 370 407 153 407 370 370 407 371 370 370 153 153 153 153 370 371 371 370 370 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 7 10 12 15 17 20 22 25 27 30 32 35 37 40 42 45 47 50 52 55 57 Номер поколения, в котором найдено решение 29 3 1 28 5 8 4 13 11 0 8 6 5 0 6 0 0 0 0 4 0 Зависимость номера поколения, от числа особей в популяции. 35 30 25 20 15 10 5 0 0 -5 20 40 60 80 100 120 140 Ответ n 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Кол-во мутаций k 8208 9474 1634 1634 9474 1634 9474 8208 1634 8208 1634 1634 9474 1634 8208 9474 1634 9474 1634 8208 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 Номер поколения, в котором найдено решение 11960 4470 11 4 46 21 18 38 11 3 19 50 17 45 40 20 6 13 7 51 Зависимость номера поколения, от числа мутаций 120 100 80 60 40 20 0 0 -20 20 40 60 80 100 120 Ответ n 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 k 1634 1634 8208 1634 9474 8208 1634 1634 1634 9474 1634 8208 9474 9474 1634 9474 8208 9474 1634 9474 1634 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 Кол-во мутаций 7 10 12 15 17 20 22 25 27 30 32 35 37 40 42 45 47 50 52 55 57 Номер поколения, в котором найдено решение 700 619 17 234 38 13 132 101 8 31 22 51 215 4 27 2 1 9 25 71 25 Зависимость номера поколения, от числа особей в популяции. 800 700 600 500 400 300 200 100 0 0 -100 20 40 60 80 100 120 140 Ответ n 3 4 5 6 7 8 9 10 407 9474 93084 548834 4210818 24678051 146511208 4679307774 k 100 100 100 100 100 100 100 100 Кол-во мутаций 1000 1000 1000 1000 1000 1000 1000 1000 Номер поколения, в котором найдено решение 1 5 17 23 209 5154 301685 1060158 Заключение и планы Генетический алгоритм является усеченным перебором. Было рассмотрено влияние количества особей и мутаций, на сходимость алгоритма. В будущем планируется реализовать данный алгоритм для вычисления больших чисел Армстронга с помощью длинной арифметики. Математически обосновать полученные результаты. Список литературы: 1) N.Grafeeva, L.Grigorieva, N. Kalinina-Shuvalova, Genetic algorithms and genetic programming 2) Д. Рутковская, М. Пилиньский, Л. Рутковский, Нейронные, генетические алгоритмы и нечеткие системы. 3) Л.А. Гладков, В.В. Курейчик, В.М. Курейчик, Генетические алгоритмы