Skip to main content

“Darwinian” - это модуль Python, который реализует Дарвиновский Генетический Алгоритм (GA) для задач оптимизации. GA симулирует процесс естественного отбора, где наиболее приспособленные особи выбираются для воспроизводства, чтобы произвести потомство следующего поколения.

Project description

Вдохновлен EasyGa ❤️

ссылка на их проект

Darwinian GA

Эта библиотека Python реализует "Дарвиновский" Генетический Алгоритм (GA) для задач оптимизации. GA симулирует процесс естественного отбора, где наиболее приспособленные особи выбираются для воспроизводства, чтобы произвести потомство следующего поколения.

Особенности

  • Генетическое представление: Каждая особь в популяции представлена в виде списка генов.
  • Инициализация популяции: Популяция инициализируется случайными особями, но возможние значения генов могут задоваться пользователем.
  • Функция приспособленности: Пользовательская функция для оценки приспособленности особи.
  • Выбор: Реализованы три типа методов выбора: Лучшие Родители, Турнир и Рулетка.
  • Скрещивание: Метод для объединения генов двух родителей для создания новой особи.
  • Мутация: Метод для внесения небольших изменений в особи для поддержания разнообразия в популяции.

Методы

  • setup: Инициализирует GA с необходимыми параметрами.
  • tournament_selection: Выбирает лучшую особь из случайно выбранного подмножества популяции.
  • roulette_selection: Выбирает особь из популяции с использованием выбора рулеткой.
  • crossover: Объединяет гены двух особей для создания новой.
  • mutate: Вносит небольшие изменения в особь.
  • constructor: Запускает GA с использованием указанного метода.

constructor

  • constructor: Запускает GA с использованием указанного метода. Аргументы: selection_method (str, optional): description. Defaults to "bestparents". MaxOrMin (bool, optional): description. Defaults to True. how_much (int, optional): description. Defaults to 5. print_pop (bool, optional): description. Defaults to False.

    Ща покажу как этим пользоваться:

    1. bestparents - выбираем двух лучших родителей
    2. tournament - выбираем двух родителей с помощью турнирного отбора
    3. roulette - выбираем двух родителей с помощью рулетки

    При турнирном отборе можно задать параметр tournament_size, по умолчанию равен 2

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

Для использования этого модуля вам нужно определить функцию приспособленности, которая оценивает приспособленность особи. Затем вы можете инициализировать GA с необходимыми параметрами и запустить его с использованием одного из методов выбора.

from darwinian import Darwinian_GA
import random

# Определите функцию приспособленности
def fitness(*individual):
    return sum(individual[0])

# Инициализируйте GA
ga = Darwinian_GA()
ga.setup(len_gen=10, pop_size=100, mutation_rate=0.1, crossover_chance=0.5, epochs=100, fitness_func=fitness)

# Запустите GA
best_individuals = ga.constructor()
print(best_individuals[0])

GA будет развивать популяцию в течение указанного количества эпох и возвращать лучших особей из окончательной популяции. Вы также можете вывести популяцию на каждой эпохе, чтобы наблюдать за прогрессом GA.

ga.constructor(print_pop=True)

Кастомизация функции генерации особи rand_func

Эта функция генерирует гены индивида. По умолчанию, генерируются случайное целое число в диапазоне от 0 до 1.

Получается -> [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

Ее можно переопределить:

from darwinian import Darwinian_GA
import random

def fitness(*individual):
    return sum(individual[0])

# Инициализируйте GA
ga = Darwinian_GA()
ga.setup(len_gen=10, pop_size=100, mutation_rate=0.1, crossover_chance=0.5, epochs=100, fitness_func=fitness, rand_func= lambda: random.randint(0, 5))

# Запустите GA
best_individuals = ga.constructor()
print(best_individuals[0])

результат будет

([5, 5, 5, 5, 5, 5, 5, 5, 5, 5], 50)

Метод максимезации или минимизации:

Если вы хотите чтоб приспособленность была минимизирована:

то вы можете использовать параметр MaxOrMin=False

best_individuals = ga.constructor(MaxOrMin=False)
print(best_individuals[0])

при прошлом примере ответ будет:

([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 0)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Darwinian-0.0.5.4.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Darwinian-0.0.5.4-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file Darwinian-0.0.5.4.tar.gz.

File metadata

  • Download URL: Darwinian-0.0.5.4.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for Darwinian-0.0.5.4.tar.gz
Algorithm Hash digest
SHA256 53fbc7d363db1967f54b24774c5d15f65556a56e441f17769e4265cd835ffcaa
MD5 ecdd1dacb602fea9be35a22d4f2af37d
BLAKE2b-256 63c9e64cfa6a072011a204b3052e9f6176bb74ac0521a5b5df5db250a806b055

See more details on using hashes here.

File details

Details for the file Darwinian-0.0.5.4-py3-none-any.whl.

File metadata

  • Download URL: Darwinian-0.0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for Darwinian-0.0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1b522771ccbca6b357f748e7059ca0147b0e4b312dcb6f3337a14523501ef40d
MD5 313fefb94cc33bcd9623f4d3e3900d55
BLAKE2b-256 d3f52fd7abc416aab0cd9c7991ee5eae01c01fa5d0e6f2bb9379d7ffe21fe8af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page