embarrassingly
Embarrassingly obvious (in retrospect) ways to hack objective functions before you send them to optimization routines. See blog article for motivation and explanation
Install
pip install embarrassingly
Example 1 : Parallel objective computation
from embarrassingly.parallel import Parallel
import optuna
def pre_objective(worker, trial):
print('Hi this is worker ' + str(worker))
x = [trial.suggest_float('x' + str(i), 0, 1) for i in range(3)]
return x[0] + x[1] * x[2]
def test_optuna():
objective = Parallel(pre_objective, num_workers=7)
study = optuna.create_study()
study.optimize(objective, n_trials=15, n_jobs=7)
Example 2 : Plateau finding
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))
Example 3 : Expensive functions
See shy_shgo.py
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})
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
embarrassingly-0.0.6.tar.gz
(10.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file embarrassingly-0.0.6.tar.gz.
File metadata
- Download URL: embarrassingly-0.0.6.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f88fbc9459322a67d9038f35031d74b3ec70dec56a2e06fa10797b2ce18c2981
|
|
| MD5 |
8a91f56e0df5d47b07d8f9d55e88dec4
|
|
| BLAKE2b-256 |
a669eea2ebb14bbdf095b3f4a868b8562557cf4581ef80a717e2a91b1a4371a7
|
File details
Details for the file embarrassingly-0.0.6-py3-none-any.whl.
File metadata
- Download URL: embarrassingly-0.0.6-py3-none-any.whl
- Upload date:
- Size: 12.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe1880e50e295c28567e7d3b9b7e4ebb7218b0e5b097e2f900c17ba30485b0fd
|
|
| MD5 |
7f37cfffaa1a757398bfd1769101f1c8
|
|
| BLAKE2b-256 |
bf57c0be723e2b5c822a8b730beeac5689c846558d45fd25cfdd4c8fec02800d
|