GithubHelp home page GithubHelp logo

zhbanovaanna / exa-min-light Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alvls/globalizer-light

0.0 2.0 0.0 395 KB

Демонстрационная система по глобальной оптимизации

C++ 99.92% C 0.08%

exa-min-light's Introduction

Демонстрационная система по глобальной оптимизации

Требования

  1. Демонстрационная система предназначена для решения задач многомерной глобальной однокритериальной оптимизации.
  2. Размерность решаемых задач жестко ограничена. Текущий вариант - до 5 параметров.
  3. В первой версии системы рассматриваются задачи только безусловной оптимизации.
  4. Метод решения основан на редукции размерности с использованием разверток.
  5. Редукция выполняется с использованием одиночной или множественной (вращаемой) развертки.
  6. Распараллеливание выполняется по характеристикам.
  7. Первая версия ориентирована только на системы с общей памятью и не использует MPI.
  8. Работа с матрицей состояния поиска ускоряется за счет использования глобальной очереди характеристик.
  9. Матрица состояния поиска хранится в виде АВЛ-дерева.
  10. Постановка задачи оптимизации с точки зрения пользователя системы состоит в подключении динамической библиотеки, в которой должна быть реализована оптимизируемая функция.
  11. Система рассчитана на поиск глобального минимума оптимизируемой функции. Если требуется поиск максимума, нужно соответствующим образом переформулировать задачу и исправить dll с оптимизируемой функцией.
  12. Система представляет собой консольное приложение без графического интерфейса.
  13. Система будет поставляться в исходных кодах и будет выложена в Интернет.
  14. Ближе к концу разработки будет выбрана лицензия, под которой будет поставляться система (текущее понимание – использовать LGPL).

Основные классы

  1. Процесс - управляющий класс, отвечает за создание всех объектов системы.
  2. Метод - класс, содержащий метод решения.
  3. Задача - класс инкапсулирует задачу оптимизации.
  4. Поисковая информация - класс инкапсулирует МСП и методы ее обработки. МСП в классе хранится в виде АВЛ-дерева.
  5. Одиночная развертка.
  6. Множественная (вращаемая) развертка.
  7. Очередь - хранит интервалы с лучшими характеристиками.

Этапы и сроки

Предварительные замечания:

  1. Большая часть кода будет взята из ExaMin.
  2. Для всего позаимствованного кода будет выполнен рефакторинг с целью удаления не требующейся функциональности. Как результат, большинство этапов будут состоять не в разработке соответствующих классов, а в их модификации.
  3. Для всех основных методов всех классов будут разработаны тесты с использованием библиотеки Google Test. Как минимум по два теста на метод - с корректным входом, с некорректным входом.
  4. С самого начала работы будет подготовлена инфраструктура для постоянного запуска тестов. Каждый этап будет считаться выполненным только при нулевом числе тестов с состоянием FAILED.
  5. Разработка будет вестись на GitHub-е.
  6. Начало работы - 1 октября. Окончание работы - 23 декабря.

Этап 1. Метод + одиночная развертка

  • Подготовка инфраструктуры проекта
  • Модификация класса Метод из ExaMin.
  • Подключение класса Развертка из ExaMin
  • Разработка тестов для классов Развертка, Метод

На этом этапе работа с поисковой информацией будет целиком взята из ExaMin, оптимизируемая функция будет задаваться прямо в коде, без использования dll. Класса Процесс не будет, его функции будут реализованы непосредственно в функции main(). Развертка будет только одиночная.

Результаты этапа

Подготовлена инфраструктура проекта. Подготовлены тесты для классов Развертка, Метод.

Срок - 21 октября

Этап 2. Задача + поисковая информация

  • Модификация класса Задача из ExaMin
  • Модификация класса Поисковая информация из ExaMin
  • Модификация класса Очередь из ExaMin
  • Разработка тестов для классов Задача, Поисковая информация, Очередь

На этом этапе указанные выше классы будут модифицированы под требования ТЗ.

Результаты этапа

Подготовлены тесты для классов Задача, Поисковая информация, Очередь. Система способна искать глобальный минимум функций, заданных непосредственно в коде, используя одиночную развертку.

Срок - 11 ноября

Этап 3. Множественная развертка

  • Перенос множественной (вращаемой развертки) из ExaMin
  • Модификация класса Метод для использования множественной развертки
  • Разработка тестов для класса Множественная развертка

Результаты этапа

Подготовлены тесты для класса Множественная развертка. Система способна искать глобальный минимум функций, заданных непосредственно в коде, используя одиночную илии множественную развертку.

Срок - 2 декабря

Этап 4. Процесс и постановка задачи

  • Разработка класса Процесс
  • Разработка шаблона dll с постановкой задачи (на основе схемы из Global Expert с исключением ненужных деталей)
  • Разработка тестов для класса Процесс
  • Разработка консольного интерфейса
  • Подготовка кода к выкладыванию в Интернет (Readme, лицензия, оформление исходников и т.д.).

Результаты этапа

Подготовлены тесты для класса Процесс. Система способна искать глобальный минимум функций, заданных в виде dll, используя одиночную или множественную развертку.

Срок – 23 декабря

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.