Микро-библиотека для оптимизации разведения животных
Project description
Animal Breeding Optimizer
Микро-библиотека для оптимизации разведения животных с использованием генетического алгоритма NSGA-II.
Описание
Библиотека предназначена для оптимизации подбора пар животных с учётом:
- Коэффициентов родства (инбридинга)
- Коэффициента племенной ценности, float (EBV - Estimated Breeding Values)
- Ограничений на количество партнёров
- Многокритериальной оптимизации
Основные возможности
Обработка родословных
- Загрузка и очистка данных родословной
- Построение графов родственных связей
- Извлечение предков до N поколений
Расчёт родства
- Коэффициенты родства между животными
- Коэффициенты инбридинга
- Матрица коэффициентов родства для всех пар
Генетическая оптимизация
- Многокритериальная оптимизация с помощью NSGA-II
- Учёт ограничений по родству
- Ограничения на количество партнёров
- Максимизация среднего EBV потомков
Анализ данных
- Статистика EBV для самок и самцов
- Анализ влияния фильтрации по родству
- Отчёты и визуализация результатов
Установка
# Клонирование репозитория
git clone <repository-url>
cd animal-breeding-optimizer
# Установка зависимостей
pip install pandas numpy networkx deap
Быстрый старт
from animal_breeding_optimizer import (
load_and_prepare_data,
KinshipCalculator,
BreedingOptimizer,
create_offspring_matrix
)
# Загрузка данных
dams_df, sires_df, pedigree_processor = load_and_prepare_data(
'dams.csv', 'sires.csv', 'pedigree.csv'
)
# Расчёт родства
kinship_calculator = KinshipCalculator(pedigree_processor)
kinship_matrix = kinship_calculator.calculate_kinship_matrix(dams_df, sires_df)
# Создание матрицы потомков
offspring_matrix = create_offspring_matrix(
dams_df, sires_df, kinship_matrix, kinship_threshold=0.05
)
# Оптимизация
optimizer = BreedingOptimizer(offspring_matrix, max_assign_per_sire=0.1)
result_df, best_individual, hall_of_fame = optimizer.optimize(
pop_size=100, ngen=50
)
print(f"Лучшее среднее EBV: {best_individual.fitness.values[0]:.2f}")
Структура данных
Входные файлы
dams.csv (самки):
id,ebv
UA77642,266.5
Zhuchka,0.0
...
sires.csv (самцы):
id,ebv
Gektor,468.0
1842,350.0
...
pedigree.csv (родословная):
id,mother_id,father_id
047882,RU8833,Khirs
...
Выходные данные
Результат оптимизации:
Dam,Assigned_Sire
76421,Gektor
Zhuchka,7421155
...
Основные классы
PedigreeProcessor
Обработка и анализ родословных данных.
processor = PedigreeProcessor('pedigree.csv')
processor.load_and_clean_pedigree()
graph = processor.build_pedigree_graph()
KinshipCalculator
Расчёт коэффициентов родства и инбридинга.
calculator = KinshipCalculator(pedigree_processor)
kinship = calculator.calculate_kinship(dam_id, sire_id)
inbreeding = calculator.calculate_inbreeding(animal_id)
BreedingOptimizer
Генетический алгоритм для оптимизации подбора пар.
optimizer = BreedingOptimizer(offspring_matrix, max_assign_per_sire=0.1)
result_df, best_individual, hall_of_fame = optimizer.optimize(
pop_size=100, ngen=50, cxpb=0.8, mutpb=0.2
)
DataAnalyzer
Анализ данных и генерация отчётов.
ebv_stats = DataAnalyzer.analyze_ebv_statistics(dams_df, sires_df)
filtering_stats = DataAnalyzer.analyze_kinship_filtering(
kinship_matrix, offspring_matrix
)
DataAnalyzer.print_analysis_report(ebv_stats, filtering_stats)
Параметры оптимизации
- kinship_threshold: порог родства для исключения пар (по умолчанию 0.05)
- max_assign_per_sire: максимальная доля самок на одного самца (по умолчанию 0.1)
- pop_size: размер популяции генетического алгоритма ("особь" в генетическом алгоритме -- это не реальное животное, а "вариант ответа", в нашем случае -- плана вязок)
- ngen: количество поколений генетического алгоритма
- cxpb: вероятность скрещивания (скрещивание -- это синтез из "особей" генетического алгоритма)
- mutpb: вероятность мутации (случайного изменения в следующем поколении)
Примеры использования
См. файл example_usage.py для полного примера работы с библиотекой.
Требования
- Python 3.7+
- pandas
- numpy
- networkx
- deap
Лицензия
MIT License
Поддержка
Для вопросов и предложений создавайте issues в репозитории.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file animal_breeding_optimizer-0.1.0.tar.gz.
File metadata
- Download URL: animal_breeding_optimizer-0.1.0.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4516e1bb52cd6e174a1411f6a1ee4e95181e8361210bd2c374fb8a10d00a6f0f
|
|
| MD5 |
a5603284b8c6a4f6ad9f676167dcadf2
|
|
| BLAKE2b-256 |
2e822f12f9085ff26df06a0cf71c6a971aa4b1e486f4ebc8bdd5bceed71557e9
|
File details
Details for the file animal_breeding_optimizer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: animal_breeding_optimizer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18531aab504868b9f6325d9085cb558828477db287db90db09968cd9f703f06a
|
|
| MD5 |
bfad6db92601dce54c6cf9f3c4121e92
|
|
| BLAKE2b-256 |
a9bfdcec57cad346cc8f3ec3d55f9f7341b0c5cf108fb3da74db746cf68834ec
|