我有一个矩阵D,表示高维空间中的点的网格。行数是数据点的数量,列数是空间的维度。
我有一个函数f,它可以取一行D,并输出一个浮点值。如果函数f可以在网格外的点上求值,那么它将是光滑的。函数f可以有多个零。
我想找到函数f接近于零的点(行实例)。我不想详尽地计算D中每一行的函数,因为这里有太多的行。
对于这个问题,你推荐什么算法和库?我更喜欢使用现有的Python库来简化实现。我也对寻找多个零感兴趣。
因此,首先,我在考虑使用某种类型的单形搜索,也许可以从不同的开始位置多次运行它(多开始)。不过,我不知道有什么库可以解决这个问题。
非常感谢您的帮助
发布于 2021-04-27 08:45:48
因为您不想计算f太多次,所以您的问题看起来像是黑盒函数问题。要优化这样的函数,有许多工具,如贝叶斯优化,将使用高斯过程对函数的形状进行建模(请查看维基百科中的“克里金”)。如果您的函数f值是一维的,我建议您使用smt:https://github.com/SMTorg/SMT
如果有很多目标,我开发了一个工具:https://github.com/RobinGRAPIN/smoot。查看笔记本教程以了解其功能:)
https://stackoverflow.com/questions/67279570
复制相似问题