拉皮条你的目标函数更快,稳健的优化
embarrassingl的Python项目详细描述
尴尬地
在将目标函数发送到优化例程之前,使用非常明显的(回想起来)方法来破解它们。 动机和解释见{a1}
安装
pip install embarrassingly
例1:并行目标计算
^{pr2}$例2:高原发现
from scipy.optimize import shgo
from embarrassingly.underpromoted import plateaudinous, Underpromoted2d
bounds = [(-1 ,1) ,(-1 ,1)]
f = plateaudinous
res1 = shgo(func=f, bounds=bounds, n=8, iters=4, options={'minimize_every_iter': True, 'ftol': 0.1})
print('Minimum at '+str(res1.x))
f_tilde = Underpromoted2d(f, bounds=bounds, radius=0.05)
res1 = shgo(func=f_tilde, bounds=bounds, n=8, iters=4, options={'minimize_every_iter': True, 'ftol': 0.1})
print('Landed at '+str(res1.x))
例3:昂贵的函数
def slow_and_pointless(x):
""" Example of a function with varying computation time """
r = np.linalg.norm(x)
quad = (0.5*0.5-r*r)/(0.5*0.5)
compute_time = max(0,0.5*quad+x[0])
time.sleep(compute_time)
return schwefel([1000*x[0],980*x[1]])[0]
# Save time by making it a "shy" objective function
bounds = [(-0.5, 0.5), (-0.5, 0.5)]
SAP = Shy(slow_and_pointless, bounds=bounds, t_unit=0.01, d_unit=0.3)
from scipy.optimize import minimize
res = scipy.optimize.shgo(func=SAP, bounds=bounds, n=8, iters=4, options={'minimize_every_iter': True, 'ftol': 0.1})
- 项目
标签: