Разработка программы
Разработка программы проводилась модульным способом. Все модули были созданы в среде BorlandDelphi. Ниже приведу описание одного из самых сложных модулей, который реализует работу генетического алгоритма.
В модуле объявлены классы TChromosomeиTGeneticAlgorithm. Это основные классы алгоритма, рассмотрим их подробнее.
Класс TChromosomeпорождён отTBitsи представляет собой хранилище информации, включающее методы обработки информации. В нём объявлены следующие переменные:
Private//Раздел частных объявлений класса
fDegree:integer; //Разрядность генов
fGeneCount:integer; //Количество генов
fGene:arrayofTGene; //Собственно, гены
Работа с объектами этого класса происходит при помощи следующих методов.
procedure SetGeneCount(Value : integer); // Установка количества генов
functionGetGeneSize:integer; //Установка размеров генов
procedureSetGeneSize(Value:integer); //Установка размера конкретного гена
function GetGene(Index:integer):LongWord; //Получение значения гена
procedure SetGene(Index:integer;Value:LongWord); //Установка значения гена
function GetGeneAsInteger(Index:integer):LongInt; //Получение значения гена
procedure SetGeneAsInteger(Index:integer;Value:LongInt); //Получение значения гена
function GetGeneAsFloat(Index:integer):double; //Получение значения гена
procedure SetGeneAsFloat(Index:integer;Value:double); //Получение значения гена
В разделе открытых объявлений содержатся поле Suitability, которое хранит текущую приспособленность хромосомы, конструктор, деструктор и следующие методы и свойства.
procedureAssign(Source:TChromosome); //Копирование информации из одной хромосомы в другую
property GeneCount : integer read fGeneCount write SetGeneCount; //Количество генов
property GeneSize : Integer read GetGeneSize write SetGeneSize; //Размер генов
property GeneValue[Index:integer] : Longword read GetGene write SetGene; //Значение гена
property GeneAsInteger[Index:integer] : LongInt read GetGeneAsInteger write SetGeneAsInteger; //Значение гена
property GeneAsFloat[Index:integer] : double read GetGeneAsFloat write SetGeneAsFloat; //Значение гена
Класс TGeneticAlgorithmдостаточно громоздкий, поэтому приведу описания лишь самых важных его свойств и методов.
Переменная fPopulationхранит набор хромосом, то есть рабочий материал для работы алгоритма.
В переменной fEpochхранится номер текущей эпохи, который может быть использован для остановки программы, если алгоритм не сходится слишком долго.
Свойство Sutabilityхранит текущую приспособленность популяции, но его значение доступно только через свойствоfSutability, описание которого находится в разделеpublic.
Функция fGetSutability– это указатель на внешнюю функцию, которая определяет фитнесс-функцию текущей хромосомы.
fBestChromosome– лучшая особь данной популяции.
fInversion,fCrossover,fMutation– вероятности инверсии, кроссовера и мутации – важных параметров алгоритма.
Процедура OneEpochпроизводит один шаг эволюции.
Кроме вышеупомянутых, класс содержит большое количество свойств и методов, предназначенных для устройства работы алгоритма. Полное описание их заняло бы недопустимо большой объём. Полный текст модулей, включая этот, содержится в приложении 1.
- Содержание
- Введение
- Титул спецчасти
- Порядок контроля и приёмки
- Эскизный проект
- Постановка задачи
- Предварительные нир
- Обзор средств автоматизации туристского бизнеса.
- Программный комплекс «Мастер-Тур»
- 1С.Предприятие
- Потребности пользователя
- Технический проект
- Общий алгоритм работы программы
- Выбор платформы для проектирования и его обоснование.
- Выбор метода решения задачи и обоснование
- Уточнение общего алгоритма
- Описание генетических алгоритмов
- История появления эволюционных алгоритмов
- Основы генетических алгоритмов
- Возможности применения генетических алгоритмов
- Математическая формулировка экстремальной задачи однокритериального выбора
- Понятие “оптимальное решение”
- Влияние параметров генетического алгоритма на эффективность поиска
- Операторы кроссовера и мутации
- Выбор родительской пары
- Механизм отбора
- Формат данных
- Разработка алгоритма генерации критерия
- Разработка алгоритма оптимизации
- Разработка структуры классов
- Разработка базы данных системы
- Конфигурация технических средств
- Рабочий проект
- Разработка программы
- Алгоритмы работы программы
- Методика испытаний
- Разработка программной документации
- Установка информационной системы
- Титул технологи Технологический раздел
- Введение
- Объектно-ориентированное программирование
- Объектно-ориентированное проектирование
- Работа с базами данных вDelphi
- Использование компонентовAdo
- Методика отладки и тестирования программы
- Особенности тестирования программного обеспечения
- Встроенные средства отладки и тестирования среды разработки
- Основные факторы надёжности системы
- Метод «силовой отладки»
- Методы тестирования
- Алгоритмическое тестирование
- Функциональное или аналитическое тестирование
- Содержательное тестирование
- Виды тестов
- Анализ рынка туруслуг
- Постановка задачи
- Методы сегментирования
- Расчёт сегментации
- Титул пэб Раздел по технике безопасности
- Введение.
- Рабочее место турагента
- Источники опасности и вредностей
- Излучения экрана монитора
- Микроклимат помещения
- Психофизиологические факторы
- Нерациональное освещение.
- Заключение
- Список литературы
- Приложения