我可以使用哪些算法在 Python 中的高维离散空间中进行优化?

问题描述

我有一个矩阵 D 表示高维空间中的点网格。行数是数据点的数量,列数是空间的维数。

我有一个函数 f 可以取一行 D 并输出一个浮点值。如果函数 f 可以在网格外的点处进行评估,那么它将会是平滑的。函数 f 可能有多个零。

我想找到函数 f 接近于零的点(行实例)。我不想详尽地评估 D 中每一行的函数,因为行太多了。

对于这个问题,您推荐什么算法和库?我更喜欢使用现有的 Python 库来简化实现。我也有兴趣找到多个零。

首先,我想使用某种类型的单纯形搜索,可能会从不同的起始位置(多开始)多次运行它。不过,我不知道有哪些库可以按照提出的方式解决问题。

非常感谢您的帮助

解决方法

由于您不想多次评估f,您的问题看起来像一个黑盒函数问题。为了优化这样的函数,有许多工具,如贝叶斯优化,它们将使用高斯过程对函数的形状进行建模(查看维基百科中的“克里金法”)。如果您的函数 f 值是一维的,我建议您使用 smt :https://github.com/SMTorg/SMT

如果目标很多,我开发了一个工具:https://github.com/RobinGRAPIN/smoot。查看笔记本教程以了解其功能:)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...