Общая схема работы представлена на рисунке 6.
Рис. 6. Схема общего алгоритма работы программы
После запуска программы производится проверка безопасности на предмет нелегального копирования. При этом считывается серийный номер жёсткого диска, на котором расположена программа. При совпадении номера с хранящимся в базе данных производится переход в рабочее состояние. При несовпадении, программа завершается с сообщением о возможном нелегальном копировании и необходимости активизации. Активизация производится специальной утилитой, которая прописывает в базе значение текущего номера диска. Эта программа не выдаётся пользователю и используется только разработчиком. Более подробно алгоритмы расписаны далее.
Рис. 7. Схема алгоритма инициализации
Алгоритм инициализации представляет собой установку начальных данных алгоритма оптимизации на основе данных, полученных от пользователя. После генерации начальной популяции запускается основной алгоритм оптимизации.
Рис. 8. Схема алгоритма оптимизации
Генные операторы кроссовера, мутации, инверсии реализованы функциями класса TGeneticAlgorithm. Проверка приспособленности производится фитнесс-функцией, сформированной программой.
Рис. 9. Схема алгоритма преобразования данных
Преобразование в код Грея и обратно производится с помощью таблиц преобразования.
GrayToDec: array [0.15]of byte = (0,1,3,2,7,6,4,5,15,14,12,13,8,9,11,10);
DecToGray: array [0.15]of byte = (0,1,3,2,6,7,5,4,12,13,15,14,10,11,9,8);