Проектирование и разработка информационных систем



Download 2,21 Mb.
Pdf ko'rish
bet21/38
Sana24.02.2022
Hajmi2,21 Mb.
#242470
TuriРеферат
1   ...   17   18   19   20   21   22   23   24   ...   38
Bog'liq
programm

3.2.4 Генетический алгоритм 
Решается задача нахождения ключа по известному оригинальному и 
зашифрованному тексту. Оригинальный текст, ключи, зашифрованный текст 
обрабатываются в виде бинарных строк, аналогично муравьиному алгоритму, 
что позволяет использовать достаточно простую фитнесс-функцию сравнения 
бинарных битовых строк.
Структура, содержащая данные особи struct genotype. Структура, 
содержащая дополнительные параметры для работы алгоритма struct gen_cfg. 
Структура, управляющая работой генетического алгоритма Часть 
параметров аналогична параметрам, используемым в муравьином алгоритме 
struct gen. 
Для реализации генетического алгоритма в OPS добавлены следующие 
функции: 
Функция порождения ключа-«ребенка» по заданным параметрам 
void ops_data_breed (struct ops_data ops,


59 
void *parent_key1, void *parent_key2, void *child_key) 
Родители выбираются из популяции методом турнирной селекции с 
учетом значения фитнесс-функций. В качестве родителей выбираются ключи с 
лучшим значением фитнесс-функции. При этом соблюдается условие, чтобы 
потом появлялся от двух разных родителей.
Выбор родителей для скрещивания реализован в gen.c. В функции 
static struct genotype* gen_select_tournament(struct gen *p) 
происходит проведение турниров, в которых выбирают одного победителя из 
текущей популяции с учетом наилучшего значения фитнесс-функции и 
функции
static void gen_select(struct gen *p,struct genotype **parent1,struct genotype 
**parent2), 
которая выбирает двух различных победителей турниров, которые будут 
являться родителями. 
Как отмечалось выше, в классическом варианте кроссовер 
одноточечный. Точка раздела бинарных строк определяется случайным 
образом, потомки получаются путем обмена отрезками. При этом возможно 
создание двух видов потомков (см. рис. 3.2) 
Рисунок 3.2 - Формирование ключа-потомка в генетическом алгоритме 
Для того чтобы выбрать, какой из потомков будет получен, нужно 
выбрать, какой из родителей будет главным (главным считается тот, чьи биты в 


60 
ключе будут первыми). В представленной реализации это делается следующим 
образом: диапазон разреза удваивается 2 * (key_length - 1), и точка разделения, 
принадлежащая диапазону, определяется случайным образом
pos = rand() % (2 * (key_length - 1)), где 
pos – бит разделения 
key_length – длина ключа 
Если позиция разреза не выходит за рамки длины ключа [0..key_length-
1], значит, основным родителем будет родитель 1 (parent_key1), в противном 
случае родитель 2 (parent_key2). В последнем случае необходимо пересчитать 
позицию разреза. Реализация данное положения приведена в листинге 3.1. 
Листинг 3.1 — Реализация определения позиции разреза при формировании 
ключа-потомка 
if (pos >= ops->key_length - 1) 

// swap parents 
tmp = parent_key1; 
parent_key1 = parent_key2; 
parent_key2 = tmp; 
// fix position 
pos -= ops->key_length - 1; 

Основная функция работы генетического алгоритма void gen_run(struct 
gen *p). Эта функция работает следующим образом: 
1. Создаются случайные особи для начальной популяции population
2. Определение значения фитнесс-функции для созданных особей. Проверка 
значения фитнесс-функции. Сохраняется лучшее полученное значение и 
соответствующая особь (тестовый ключ); 


61 
3. Полученная популяция сортируется по значению фитнесс-функции в 
убывающем порядке; 
4. Алгоритм для создания нового поколения tmp: 
4.1 В новое поколение сохраняется заданное количество особей с 
наилучшими значениями фитнесс-функции; 
4.2 Создание потомков с одноточечным кроссовером 
- выбор родителей — турнирная селекция 
- создание потомка 
- мутация потомка 
4.3. Определение значений фитнесс-функции для полученных особей 
4.4. Проверка полученных значений фитнесс-функции с наилучшим 
значением, сохраненном в п.3. Если получено значение лучше, чем 
предыдущее, полученное значение сохраняется как лучшее и сохраняется 
соответствующая особь (тестовый ключ). 
5. Полученная популяция tmp сортируется по значению фитнесс-функции 
6. Новое поколение tmp сохраняется, как текущее поколение population 
7. Алгоритм повторяется с п.5 
В конце работы алгоритма собирается статистика по последнему 
поколению, позволяющая установить, какие гены проявляются чаще всего. Эти 
гены будут считаться известными. 
Проверка происходит следующим образом: 
- определяется sum - сколько раз бит на определенной позиции ключа 
установлен в 1 
- общее полученное количество сравнивается с размером популяции c учетом 
заданного параметра delta и правилу 
sum ≥ population_size * delta
=>
bit = 1
(3-10) 
sum ≤ population_size * (1 - delta) =>
bit = 0
(3-11) 
в остальных случаях бит остается не определенным (known_bits[i] = -1). 
sum - сколько раз бит на определенной позиции ключа установлен в 1 
population_size - размером популяции 


62 
delta – параметр для определения будет ли зафиксирован бит, как 
определенный
bit – установка значения бита
known_bits[i] – массив фиксированных битов.
Значение основных параметров для работы алгоритма задается для AES 
и DES соответственно в функциях: int test_gen_aes() и int test_gen_des() 
В случае работы с алгоритмом шифрования DES добавляется количество 
раундов des_rounds шифрования, для которых возможно проводить 
эксперименты. 
Реализованная система для муравьиного и генетического алгоритмов 
позволяет легко дополнять разные фитнесс-функции, определять начальное 
распределение феромонов, дополнять различные способы селекции, то есть 
разработанная система является достаточно гибкой для дальнейшей работы.
Технические характеристики: 
Реализация на языке: С 
Среда разработки: Code::Blocks 16.01 
Компилятор: gcc 
Операционная система: Linux Debian GNU 9.0 
Процессор: 4 Intel Core™ I5-2430M 2.40 GHz 
Память: 6065 MB 

Download 2,21 Mb.

Do'stlaringiz bilan baham:
1   ...   17   18   19   20   21   22   23   24   ...   38




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish