Using Bayesian methods for hyper parameter optimization with AC²E takes about as long as nine innings.
Best Model NAND4
| Description | Value |
|---|---|
| optimzer | gp_minimize |
| estimator | GBRT |
| generator | sobol |
| acquisitor | PI |
| wn0 | 0.000015 |
| wn1 | 0.000029 |
| wn2 | 0.000045 |
| wn3 | 0.000072 |
| wp | 0.000041 |
| vs0 | 1.6602 |
| vs1 | 1.652853 |
| vs2 | 1.662488 |
| vs3 | 1.659937 |
| cost | 0.021502 |
See the reports on optimizing an inverter chain and a schmitt trigger for a detailed comparison of algorithms offered by scikit-optimize.
These plots were generated by running bace.hy.
The basic setup is as follows:
(optimizer :func design-objective
:dimensions design-space
:n-calls 128
:n-random-starts 32
:base-estimator estimator
:initial-point-generator generator
:acq-func acquisitor
:xi 0.01
:kappa 1.96
:random-state 666
:n-jobs 42
:verbose True)Where
optimizer ∈ [forest-minimize gbrt-minimize gp-minimize]estimator ∈ ["GP" "RF" "ET" "GBRT"]generator ∈ ["random" "sobol" "halton" "hammersly" "lhs" "grid"]acquisitor ∈ ["LCB" "EI" "PI"]
- Vary
kappaandxi - Find way to benchmark
psvariants - Try optimizing amplifiers
Optimize the widths [wn0, wn1, wn2, wn3, wp] such that the switching voltages
vsi = vdd / 2 = 1.65V where i ∈ [0,1,2,3].
(setv design-space
[ (space.Real 0.4e-6 150e-6 :name "wn0" :prior "normal")
(space.Real 0.4e-6 150e-6 :name "wn1" :prior "normal")
(space.Real 0.4e-6 150e-6 :name "wn2" :prior "normal")
(space.Real 0.4e-6 150e-6 :name "wn3" :prior "normal")
(space.Real 0.4e-6 150e-6 :name "wp" :prior "normal") ])