我正在搜索100d空间中的最小值。我使用的是skopt (python3.6)中的gp_minimize。
space = [(0., 1.) for _ in range(100)]
res = gp_minimize(f, space) 但是,我也有一个约束,即每个后续维度中的值不大于先前维度中的值。例如,对于5d的情况,点1,0.9,0.9,0.8,0.7是ok,而点1,0.3,0.5,0.4,0.2不是。
如何使用skopt添加此约束?
发布于 2020-06-19 17:22:55
我找到的最好的方法是修改函数f,为f选择一个上界,在域中不应该计算f的任何地方,让它返回这个上界。
很明显,这是一种数学上合理的方法,因为它不会改变最小值,也不会像拉格朗日乘数那样限制搜索空间。然而,我不知道它是否能很好地处理算法,因为我真的不知道贝叶斯优化是如何处理大范围的高原问题的。
https://stackoverflow.com/questions/59248619
复制相似问题