- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前我尝试使用 GPyOpt 最小化函数并优化参数。
import GPy
import GPyOpt
from math import log
def f(x):
x0,x1,x2,x3,x4,x5 = x[:,0],x[:,1],x[:,2],x[:,3],x[:,4],x[:,5],
f0 = 0.2 * log(x0)
f1 = 0.3 * log(x1)
f2 = 0.4 * log(x2)
f3 = 0.2 * log(x3)
f4 = 0.5 * log(x4)
f5 = 0.2 * log(x5)
return -(f0 + f1 + f2 + f3 + f4 + f5)
bounds = [
{'name': 'x0', 'type': 'discrete', 'domain': (1,1000000)},
{'name': 'x1', 'type': 'discrete', 'domain': (1,1000000)},
{'name': 'x2', 'type': 'discrete', 'domain': (1,1000000)},
{'name': 'x3', 'type': 'discrete', 'domain': (1,1000000)},
{'name': 'x4', 'type': 'discrete', 'domain': (1,1000000)},
{'name': 'x5', 'type': 'discrete', 'domain': (1,1000000)}
]
myBopt = GPyOpt.methods.BayesianOptimization(f=f, domain=bounds)
myBopt.run_optimization(max_iter=100)
print(myBopt.x_opt)
print(myBopt.fx_opt)
我想给这个函数加上限制条件。这是一个例子。
x0 + x1 + x2 + x3 + x4 + x5 == 100000000
我该如何修改这段代码?
最佳答案
GPyOpt 只支持 c(x0, x1, ..., xn) <= 0
形式的约束,所以你能做的最好的事情就是选择一个足够小的值并将你拥有的约束表达式“夹在中间”。假设 0.1 足够小,那么您可以这样做:
(x0 + x1 + x2 + x3 + x4 + x5) - 100000000 <= 0.1
(x0 + x1 + x2 + x3 + x4 + x5) - 100000000 >= -0.1
然后
(x0 + x1 + x2 + x3 + x4 + x5) - 100000000 - 0.1 <= 0
100000000 - (x0 + x1 + x2 + x3 + x4 + x5) - 0.1 <= 0
API 看起来像这样:
constraints = [
{
'name': 'constr_1',
'constraint': '(x[:,0] + x[:,1] + x[:,2] + x[:,3] + x[:,4] + x[:,5]) - 100000000 - 0.1'
},
{
'name': 'constr_2',
'constraint': '100000000 - (x[:,0] + x[:,1] + x[:,2] + x[:,3] + x[:,4] + x[:,5]) - 0.1'
}
]
myBopt = GPyOpt.methods.BayesianOptimization(f=f, domain=bounds, constraints = constraints)
关于python - 使用 GpyOpt 时如何添加限制条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48184833/
有人知道贝叶斯优化算法随着搜索空间维度的变化速度有多快吗?对可以合理使用的最大尺寸的一个好的估计是多少?我特别想到 GPyOpt 和 GPFlowOpt。 最佳答案 作为一般经验法则,当搜索空间的维度
目前我尝试使用 GPyOpt 最小化函数并优化参数。 import GPy import GPyOpt from math import log def f(x): x0,x1,x2,x3,x
我想在 GpyOpt 中运行约束优化。说,我想最小化 在哪里 s.t.至少一个是非零的,并且不超过 3 可以等于 1。所以我指定约束: 基于引用手册here ,看起来我们可以使用 numpy 函数指定
我目前正在尝试使用 GPyOpt 通过高斯优化找到某些函数 f(arg1, arg2, arg3, ...) 的最小值模块。虽然 f(...) 需要许多输入参数,但我只想优化其中一个。你是怎么做到的?
"First Step" page from GPyOpt显示漂亮的图像,看起来像最小值,由上面的代码找到 不幸的是,当我运行完全相同的代码时,我得到了 或 即垂直线很少达到最小值。 这是我的误会,还
我是一名优秀的程序员,十分优秀!