Это реализация генетического алгоритма на языке C++. В зависимости от задачи детали реализации могут отличаться, но здесь приведены характеристики текущей реализации:
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 )