Программный комплекс для изучения методов глобальной оптимизации «GlOpt» — страница 7

  • Просмотров 707
  • Скачиваний 5
  • Размер файла 364
    Кб

систему закладывалась возможность добавления новых алгоритмов и рассматриваемых задач как самими авторами на различных этапах разработки, так и другими студентами – с помощью подключения отдельных модулей (плагинов). Проектирование модулей предполагает изучение структуры уже реализованных методов оптимизации, и постарении на их основе собственных. Ниже приведены базовые рекомендации, которым необходимо следовать при

разработке собственных модулей, определяющих алгоритм решения. Реализуйте алгоритм поиска оптимального решения – класс, наследованный от абстрактного класса Algorithm. Данный класс должен определять следующие методы. Title – возвращает стоку с названием реализуемого алгоритма. Description – возвращает строку с кратким описанием алгоритма. OptimizationDirection – возвращает одну из двух именованных констант: OptimizationDirection.Minimize или

OptimizationDirection.Maximize. Initialize - описывает начальное состояние в алгоритме поиска решения. NextIteration – описывает действия, происходящие на очередной итерации алгоритма. В переменной BestIndividual типа Individual должна содержаться актуальная информация об объекте типа Individual c лучшей на данной итерации алгоритма целевой функцией. Методы Title и Description в свою очередь являются абстрактными методами класса Plugin, от которого наследуется класс Algorithm.

Реализуйте интерфейс SearchOperator, наследованный от интерфейса ICreateOperator. В данном интерфейсе должен быть определен метод Create, возвращающий объект типа Individual (абстрактный класс, определяется для конкретной задачи). Также в SearchOperator’е реализуются все необходимые методы для работы с объектами Individual – например, операции мутации и кроссовера. Необходимо удостовериться что библиотека *.dll откомпилированного модуля находится в папке

plugins проекта Framework. Для реализации новой задачи в комплексе GLOpt необходимо сделать следующее. Реализовать класс - наследник от абстрактного класса Individual, определяющего объект к которому в дальнейшем применяется алгоритм оптимизации. Так, в задачи о ферзях таким объектом выступает шахматная доска с расставленными на ней ферзями. Реализовать класс – наследник от абстрактного класса Problem. В данном классе должны быть определены

методы Title, Description, OptimizationDirecrtion, аналогичные методам, описанным в разделе рекомендаций по реализации алгоритма. Также необходимо определить метод EvaluateIndividual, возвращающий значение типа double – значение целевой функции для данного индивида. Для реализации компоненты визуализации текущего решения требуется определить класс Viewer, наследуемый от класса IndividualViewer, и в частности определить метод ViewIndividual, вызывающий графическую форму,