Skip to content

AugustUnderground/baceball

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bAC²Eball

Using Bayesian methods for hyper parameter optimization with AC²E takes about as long as nine innings.

Best Model NAND4

objective

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.

Setup

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"]

Dependencies

WIP

  • Vary kappa and xi
  • Find way to benchmark ps variants
  • Try optimizing amplifiers

Design Objective NAND4

inverter chain

Optimize the widths [wn0, wn1, wn2, wn3, wp] such that the switching voltages vsi = vdd / 2 = 1.65V where i ∈ [0,1,2,3].

Design Space

(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") ])