1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/az13js-cpp-genetic-algorithm

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Генетический алгоритм на C++

Это реализация генетического алгоритма на языке C++. В зависимости от задачи детали реализации могут отличаться, но здесь приведены характеристики текущей реализации:

  • Выбор особей с помощью алгоритма турнира
  • Удаление низкокачественных решений путём исключения из предыдущего поколения особей с низкой адаптивностью
  • Каждый организм состоит из одной хромосомы, поэтому программа не делает различий между организмами и хромосомами
  • Хромосома составлена с использованием вещественного кодирования, чтобы найти минимальное значение функции De Jong f2 в диапазоне от -2.048 до 2.048
  • Кроссовер осуществляется путём суммирования генов на одинаковых позициях двух хромосом и последующего усреднения
  • Мутация происходит за счет применения случайных чисел, распределённых по закону Гаусса
  • Адаптивность вычисляется как 1 / (0.01 + f2)
  • Параметры алгоритма можно изменять через входные параметры метода run в файле main.cpp

Кроме того, программа реализована с использованием объектно-ориентированного подхода, при этом существуют строгие соответствия между именами классов и файлов, а также используются правила записи в стиле camelCase. Каждому методу и свойству даны комментарии на китайском языке.

Требования к среде- Cmake: рекомендовано использование версии 3.10 и выше; если используется более ранняя версия, следует обратиться к примечаниям в файле CMakeLists.txt.

  • GCC: рекомендовано использование компилятора GCC, поддерживающего C++ 17; если используется более старшая версия, следует обратиться к примечаниям в файле CMakeLists.txt. Исходный код программы не использует более продвинутые возможности языка, однако требует хотя бы C++ 11 для выполнения.

Примечание: код проекта работает в окружении GNU/Linux, исходный код на C++ не использует API вне стандартной библиотеки, поэтому он поддерживает многоплатформенную работу. Теоретически конфигурация Cmake может быть использована на Windows и Mac, но это не было проверено.

Использование

Используется только в операционной системе GNU/Linux; для использования в других системах потребуется самостоятельно найти решение...

Это проект на C++, управляемый средством управления Cmake. Поэтому сборка производится обычным образом с использованием Cmake, вот пример сборки:

$ cmake -S src -B build
$ cmake --build build

После этого в директории build будут созданы различные файлы, включая исполняемый файл GeneticAlgorithm.out. Для запуска программы выполните следующую команду:``` $ ./GeneticAlgorithm.out Поколение=0, максимальная адаптивность=21.2265, информация об организме=Адаптивность=21.2265, v1=1.16928, v2=1.35803 Поколение=1, максимальная адаптивность=21.2265, информация об организме=Адаптивность=21.2265, v1=1.16928, v2=1.35803 Поколение=2, максимальная адаптивность=34.1127, информация об организме=Адаптивность=34.1127, v1=0.881568, v2=0.784435 Поколение=3, максимальная адаптивность=75.6878, информация об организме=Адаптивность=75.6878, v1=0.943324, v2=0.88987 Поколение=4, максимальная адаптивность=98.7995, информация об организме=Адаптивность=98.7995, v1=1.01102, v2=1.02211 Завершено.


- `main.cpp`: здесь находится входная точка программы и параметры алгоритма.
- `MainProcess.cpp` и `MainProcess.h`: здесь контролируется общее выполнение алгоритма.
- `PopulationFactory.cpp` и `PopulationFactory.h`: при создании объектов популяций следует использовать здесь определенные и реализованные фабричные классы; если требуется изменить способ создания популяций или добавить новые способы, то логика должна быть помещена именно здесь.
- `Population.cpp` и `Population.h`: класс популяции, где находятся методы взаимодействия и коммуникации с экземплярами популяции.
- `ChromosomeFactory.cpp` и `ChromosomeFactory.h`: фабричный класс для создания хромосом, который содержит различные способы создания хромосом.
- `Chromosome.cpp` и `Chromosome.h`: класс хромосомы (одна хромосома — это один индивидуум в популяции); реализация не делает различий между хромосомой и индивидуумом, поэтому если требуется сделать различие, то потребуется отдельно выделить класс для индивидуума; если же различие делать не требуется, то все методы внешнего взаимодействия и коммуникации хромосом и индивидуумов находятся здесь.Кроме того, `GlobalCppRandomEngine.cpp` и `GlobalCppRandomEngine.h` в настоящее время используются только для предоставления глобального случайного генератора.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/az13js-cpp-genetic-algorithm.git
git@api.gitlife.ru:oschina-mirror/az13js-cpp-genetic-algorithm.git
oschina-mirror
az13js-cpp-genetic-algorithm
az13js-cpp-genetic-algorithm
master