# 佳颖设计 | JIAYING DESIGN > 佳颖设计 (Jiaying Design) - 专注于高品质全栈开发、人工智能产品、macOS / iOS 原生应用与数字艺术工程。开源项目 geatpy-rs:现代 Rust 内核进化算法与遗传算法工具箱。 重点项目是开源进化算法工具箱 geatpy-rs。 ## geatpy-rs(重点推荐) geatpy-rs 是经典进化算法工具箱 Geatpy 的纯 Rust (PyO3 + abi3) 内核重构版:pip install geatpy-rs 即可在 Python 3.8 ~ 3.15、Apple Silicon、Linux ARM64 与 Windows 上使用,沿用原版 API,import geatpy as ea 的代码无需改动;内核行为已与官方 2.7.0 二进制逐项差分验证,经典用例的运行耗时普遍低于原版。 - 项目介绍: https://jiaying.design/geatpy-rs - 安装: `pip install geatpy-rs` - GitHub: https://github.com/yangyachao/geatpy - PyPI: https://pypi.org/project/geatpy-rs/ - 原版 Geatpy: https://github.com/geatpy-dev/geatpy - 当前版本: 2.7.3(页面更新于 2026-10-12) - 协议: LGPL-3.0 ### 与原版 Geatpy 的区别 - 底层核心实现:原版 早期 C/C++ 动态库,内核以预编译二进制分发;geatpy-rs 纯 Rust 原生实现(crates/geatpy_core),源码公开 - Python 版本:原版 仅支持 Python 3.5 ~ 3.10;geatpy-rs Python 3.8 ~ 3.15 全覆盖 - ABI 兼容:原版 每个 Python 小版本单独构建;geatpy-rs PyO3 abi3:一次构建,3.8+ 各版本通用 - 预编译 Wheel:原版 Windows x86 / x64、Linux x86_64、macOS(Apple Silicon 仅 Python 3.8 ~ 3.10),无 Linux ARM64;geatpy-rs macOS Universal2(Apple Silicon + Intel)、Linux x86_64 / ARM64、Windows x64 - 内存安全:原版 边界输入可能触发段错误,导致 Python 进程退出;geatpy-rs 纯安全 Rust(无 unsafe),非法输入抛出 Python 异常 - 多核并行与性能:原版 C OpenMP;geatpy-rs 单线程实现(Parallel 参数为兼容保留,暂不生效);36 个经典用例耗时为原版的 0.21 ~ 1.02 倍 - 随机数与复现:原版 取自 numpy 全局随机状态,np.random.seed 可复现;geatpy-rs 与原版一致:np.random.seed / ea.optimize(seed=…) 可完整复现一次运行 - API 兼容度:原版 基准;geatpy-rs 沿用原有 Python 接口、数据结构与 42 个算法模板;内核行为与官方 2.7.0 二进制逐项差分验证 ### 与官方 2.7.0 内核的一致性 - 确定性算子逐值比对:非支配排序、拥挤距离、编码解码、适应度分配、参考点、性能指标、NSGA-III / RVEA 环境选择等,以官方 2.7.0 二进制的实际输出为基准逐值比对。 - 随机算子比对统计分布:交叉、变异、选择等随机算子重复调用数百到数千次,逐元素比对均值分布,确认与官方实现同分布。 - 算法模板与经典用例比较解质量:39 个算法模板在相同问题上比对最终解质量;另有 Ackley、Rastrigin、att48 TSP、ZDT、DTLZ 等 36 个经典用例,覆盖最大化、混合整数、带约束、排列编码、多种群与多染色体模板,两边各运行 30 次比较最优值或 IGD / HV 的分布。除修正了原版迁移缺陷的多种群模板明显更好外,均无显著差异。 - 约 1500 个随机差分用例:随机形状、参数组合与边界值同时在官方二进制与 Rust 内核上运行,逐项比对数值、dtype、返回结构与报错;全整数变量时同样返回 int32,参数校验与报错信息与官方一致。 - 官方二进制的已知缺陷(geatpy-rs 按文档修正):ndsortDED 分层错误;mergecv 跨行累加;tcheby / pbi 在 idealPoint=None 时返回理想点;refselect 候选矩阵行序错位;migrate 择劣替换实际淘汰的是最优个体;migrate 随机替换总是淘汰最后一个个体,完全网状结构会从自身迁入;mutgau / mutuni 的 Middle=True 以 (ub-lb)/2 而非区间中点为中心;crtip 在边界为小数时生成越界整数;pbi 对恰在理想点上的个体返回 NaN;crowdis 在目标值含 inf 时返回 NaN;cdist 对非连续数组读错数据;染色体长度为 1 或一维输入时 xovsp / xovsh 等段错误 ### 常见问题 **什么是 geatpy-rs?与原版 Geatpy 有什么区别?** geatpy-rs 是经典进化算法工具箱 Geatpy 的 Rust 内核重构版。原版 Geatpy 的内核是只以二进制分发的 C/C++ 动态库,预编译轮子止于 Python 3.10,也没有 Linux ARM64 版本。geatpy-rs 用 Rust(PyO3 + abi3)重写了全部 74 个内核算子,提供 Python 3.8 ~ 3.15 通用的预编译 Wheel,沿用原版的 Python 接口与算法模板,业务代码无需改动即可替换。 **为什么在 Python 3.11 及以上版本中 pip install geatpy 会报错?如何解决?** 原版 Geatpy 在 PyPI 上只提供 Python 3.5 ~ 3.10 的预编译包。在 Python 3.11、3.12、3.13、3.14 或 3.15 中执行 pip install geatpy 时,pip 找不到匹配的轮子,只能尝试从源码构建,而原版内核并不随源码公开,因此安装失败。解决方法是改装 geatpy-rs:运行 pip install geatpy-rs,即可使用预编译的 abi3 轮子,无需本地安装任何编译器。 **geatpy-rs 支持 Apple Silicon (M1 ~ M4) 和 Linux ARM64 吗?** 都支持。macOS 提供 Universal2 轮子,同时包含 Apple Silicon 与 Intel 架构,无需 Rosetta 2;Linux 提供 x86_64 与 ARM64 (aarch64) 两种 manylinux2014 轮子,可直接用于 ARM 云服务器与 Docker 容器;Windows 提供 x64 轮子。 **原有基于 Geatpy 编写的优化代码需要修改吗?** 不需要。geatpy-rs 沿用原版 Geatpy 的 Python 接口,包括问题定义类 ea.Problem、种群 ea.Population、ea.optimize,以及 moea_NSGA3_templet、moea_NSGA2_templet、soea_SEGA_templet 等算法模板和 ndsortESS、crowdis、mutbga、xovdp 等内核算子。安装 geatpy-rs 后仍然 import geatpy as ea,上层代码无需重构。 **geatpy-rs 的计算结果与原版一致吗?** 一致性经过系统验证。确定性算子以官方 2.7.0 二进制的实际输出为基准逐值比对,随机算子比对统计分布,39 个算法模板比对最终解质量,另有约 1500 个随机差分用例同时在两边运行,逐项比对数值、dtype、返回结构与报错;36 个经典用例两边各运行 30 次,解的质量无显著差异。官方二进制中有多处与其自身文档不符的缺陷(如 ndsortDED 分层错误、mergecv 跨行累加、多种群迁移淘汰最优个体、边界输入段错误),geatpy-rs 按文档实现,并在测试中单独说明;其中多种群模板因此得到明显更好的解。 **geatpy-rs 包含哪些进化算法与算子?** 42 个单目标与多目标算法模板:NSGA-III、NSGA-II、RVEA、MOEA/D、awGA 等多目标算法,以及 SEGA、SGA、EGA、差分进化 DE、进化策略 ES 等单目标算法。Rust 内核包含 74 个算子:种群初始化与编码转换,锦标赛、轮盘赌等选择,单点 / 两点 / 均匀 / PMX / SBX 等交叉,多项式、高斯、差分进化等变异,ndsortESS 非支配排序、crowdis 拥挤距离、refselect 参考点选择,以及 GD、IGD、Spacing、HV 性能指标。 **geatpy-rs 支持多核并行吗?** 当前版本的 Rust 内核是单线程实现。原版算子中的 Parallel 参数为兼容而保留,传入不会报错,但暂不生效。即便如此,在 36 个经典用例上 geatpy-rs 的运行耗时为原版的 0.21 ~ 1.02 倍。种群规模较大时,可以在问题类的目标函数里自行使用多进程或向量化计算来提速。 **geatpy-rs 的运行结果可以复现吗?** 可以。与原版一样,内核的随机数取自 numpy 的全局随机状态:调用 np.random.seed,或给 ea.optimize 传入 seed 参数,同样的代码会得到完全相同的结果。 ## 其他作品 - [织景 PanoWeave](https://jiaying.design/pano-weave)(macOS / iPad 应用):macOS 与 iPad 上的全景照片编辑器与 VR 漫游制作工具。选取三脚架所在的极点区域一键修补,添加导航与信息热点,用拓扑视图串联多个空间,导出可离线打开的 Web VR 漫游项目。 - [帧知 FrameSense](https://jiaying.design/framesense)(macOS / iOS 应用):把网课、讲座、会议录像里的关键画面自动截成知识卡片:检测画面变化、过滤重复帧,端侧 OCR 识别文字,一键导出为 Markdown、A4 PDF、16:9 幻灯片、Word 或 HTML 网页。 - [无界截图](https://jiaying.design/scrollshot)(iPhone / iPad 应用):录屏自动转长图:导入一段滚动屏幕的录屏,或几张有重叠的截图,自动对齐拼接成高清长图,重复的顶栏与底栏自动去除。全部在设备本地离线完成。 - [智考通](https://jiaying.design/ai/)(Web · AI 学习平台):智能刷题与复习平台。覆盖计算机、数据结构、机器学习、人工智能等学科题库,提供单选、多选、判断与模拟考试等题型练习,自动归纳错题,助力专业知识高效备考。 - [Semester 2](https://jiaying.design/semester2/)(Web · 英语学习):大学英语 (General English II) 交互式学习与复习平台。围绕沟通交流、批判性思维等六大主题单元,提供高频词汇背诵、课文精读与期末模拟考刷题中心。 - [梁思礼的故事](https://jiaying.design/liang-sili)(亲子互动绘本):为亲子共读定制的交互式科普绘本,讲述中国第一代航天人梁思礼院士从少年求学到毅然归国、奉献两弹一星的历程。支持妈妈 / 孩子 / 合读多角色朗读、语音合成、自动播放与手势翻页。 ## 联系 - 邮箱: yangyachao@outlook.com - GitHub: https://github.com/yangyachao