9个不稳定版本 (4个破坏性更新)
0.5.0 | 2023年11月22日 |
---|---|
0.4.1 | 2023年5月15日 |
0.3.2 | 2023年4月28日 |
0.3.1 | 2022年5月8日 |
0.1.0 | 2021年12月20日 |
#526 in 数学
每月30次下载
175KB
3.5K SLoC
gomez
gomez是一个用于数学优化和求解非线性方程组的框架和实现。
该库完全用Rust编写。它的重点是解决实际问题,并具有简单易用的API以及灵活应对复杂情况的API。其名称代表全局优化与非线性和方程求解(GOMEZ),其中包含一些错别字。
实际问题
主要目标是解决实际问题。以下功能体现了这一点:
- 无导数。没有算法需要解析导数(梯度、海森矩阵、雅可比矩阵)。使用导数的算法使用有限差分法进行近似1。
- 约束支持。可以指定问题域的约束2,这对于许多工程应用是必要的。
- 非原始实现。代码不是直接将教科书伪代码翻译成代码。它是编写时考虑性能,并应用数值数学的重要技术。它还试图处理实际中出现但损害方法的情况。
1 计划提供覆盖这种近似方法以使用真实导数的方法。
2 目前,仅支持无约束和箱型边界域。
算法
- 信任域 – 建议用作默认方法,它将在大多数情况下正常工作。
- LIPO – 全局优化算法,用于与数值算法结合搜索良好的初始猜测。
- Steffensen – 解决一维方程组的快速轻量级方法。
- Nelder-Mead – 不使用任何导数的不动点搜索优化方法。
将来还将扩展此列表。但与此同时,尽可能多地拥有算法不是目标。相反,重点是提供经过实战检验的方法的优质实现。
路线图
以下列表不是按优先顺序排列。
- 同伦延拓方法 以比较与信任域方法的性能
- 共轭梯度方法
- 实验各种全局优化技术以搜索初始猜测
- 进化/自然启发式算法
- 贝叶斯优化
- 重点关注初始猜测的搜索和分析工具
许可证
本软件基于MIT许可证。
存在gsl-wrapper
和gsl-sys
这两个crate,其许可证与GPLv3一致,与GSL本身一致。这段代码是仓库的一部分,但不是gomez库的一部分。其目的是仅在基准测试中进行比较。
依赖项
~3.5MB
~77K SLoC