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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

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