Cấu trúc thư mục và giới thiệu
Thư mục dự án Evostra được tổ chức như sau:
evostra/
├── evostra/
│ ├── __init__.py
│ ├── evolution_engine.py
│ ├── models/
│ │ ├── __init__.py
│ │ ├── feedforward_net.py
│ └── utilities/
│ ├── __init__.py
│ ├── genetic_ops.py
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE.txt
├── MANIFEST.in
├── README.rst
├── setup.cfg
├── setup.py
Chi tiết các thư mục:
evostra/: Chứa mã nguồn chính của thư viện.
__init__.py: Khởi tạo thư mục này thành một package Python.
evolution_engine.py: Implement thuật toán tiến hóa chính.
models/: Tập hợp các mô hình mạng nơ-ron.
__init__.py: Khởi tạo package con.
feedforward_net.py: Định nghĩa mô hình mạng nơ-ron truyền thẳng.
utilities/: Chứa các hàm tiện ích.
__init__.py: Khởi tạo package con.
genetic_ops.py: Các hàm hỗ trợ cho các phép toán di truyền như đột biến.
.gitignore: Các tệp và thư mục được Git bỏ qua.
CONTRIBUTING.md: Hướng dẫn đóng góp cho dự án.
LICENSE.txt: Giấy phép sử dụng của dự án.
MANIFEST.in: Tệp khai báo các tệp tin đi kèm khi đóng gói.
README.rst: Tài liệu mô tả dự án.
setup.cfg: Tệp cấu hình cài đặt.
setup.py: Tệp script để cài đặt dự án.
Tệp thực thi chính
Tệp cốt lõi của thuật toán tiến hóa nằm trong
evolution_engine.py. Đoạn mã sau minh họa cách sử dụng cơ bản:
from evostra.evolution_engine import EvolutionStrategy
from evostra.models.feedforward_net import FeedForwardNetwork
# Ví dụ khởi tạo và chạy
# Giả định 'model', 'evaluate_fn', 'population_size', 'sigma', 'learning_rate' đã được định nghĩa
strategy_instance = EvolutionStrategy(model, evaluate_fn, population_size, sigma, learning_rate)
strategy_instance.run(iterations, print_step)
Các thành phần chính bao gồm:
EvolutionStrategy: Lớp điều phối toàn bộ quá trình thuật toán tiến hóa.
FeedForwardNetwork: Lớp mô hình mạng nơ-ron truyền thẳng.
Cấu hình cài đặt
Các tệp cấu hình chính là
setup.cfg và
setup.py.
Nội dung setup.cfg
Tệp này định nghĩa các siêu dữ liệu và tùy chọn cài đặt cho gói.
[metadata]
name = evostra
version = 1.0.0
description = Thư viện thuật toán tiến hóa cho Python
author = Alireza Mika
author_email = alirezamika@gmail.com
url = https://github.com/alirezamika/evostra
license = MIT
[options]
packages = find:
install_requires =
numpy
scipy
torch
ray
Nội dung setup.py
Tệp script này dùng để đóng gói và cài đặt thư viện.
from setuptools import setup, find_packages
setup(
name='evostra',
version='1.0.0',
description='Thư viện thuật toán tiến hóa cho Python',
long_description=open('README.rst').read(),
author='Alireza Mika',
author_email='alirezamika@gmail.com',
url='https://github.com/alirezamika/evostra',
license='MIT',
packages=find_packages(),
install_requires=[
'numpy>=1.20',
'scipy>=1.7',
'torch>=1.10',
'ray[tune]>=2.0',
],
classifiers=[
'Programming Language :: Python :: 3',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
],
python_requires='>=3.7',
)
Tóm lại,
setup.cfg chứa các thông tin meta và cấu hình cài đặt, trong khi
setup.py là tệp thực thi để quản lý việc cài đặt và các phụ thuộc.