САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

advertisement
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Математико-механический факультет
Кафедра информационно-аналитических систем
Заведующий кафедрой:
Профессор
Б.А. Новиков
Хаустова Вера Евгеньевна
Применение генетического алгоритма для вычисления чисел
Армстронга
Курсовая работа
Научный руководитель:
К. ф.-м. н., доцент
Н.Г. Графеева
Санкт-Петербург
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) Л.А. Гладков, В.В. Курейчик, В.М. Курейчик, Генетические алгоритмы
Download