55< head >
66 < meta charset ="utf-8 " />
77 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
8- < title > hill_climber.climber_functions — Hill Climber 2.1.5 documentation</ title >
8+ < title > hill_climber.climber_functions — Hill Climber 3.0.0 documentation</ title >
99 < link rel ="stylesheet " type ="text/css " href ="../../_static/pygments.css?v=b86133f3 " />
1010 < link rel ="stylesheet " type ="text/css " href ="../../_static/css/theme.css?v=e59714d7 " />
1111
1212
1313 < script src ="../../_static/jquery.js?v=5d32c60e "> </ script >
1414 < script src ="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c "> </ script >
15- < script src ="../../_static/documentation_options.js?v=786ba454 "> </ script >
15+ < script src ="../../_static/documentation_options.js?v=acc74ff5 "> </ script >
1616 < script src ="../../_static/doctools.js?v=9bcbadda "> </ script >
1717 < script src ="../../_static/sphinx_highlight.js?v=dc90522c "> </ script >
1818 < script crossorigin ="anonymous " integrity ="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA= " src ="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js "> </ script >
4343 < p class ="caption " role ="heading "> < span class ="caption-text "> Contents:</ span > </ p >
4444< ul >
4545< li class ="toctree-l1 "> < a class ="reference internal " href ="../../installation.html "> Installation</ a > </ li >
46- < li class ="toctree-l1 "> < a class ="reference internal " href ="../../quickstart.html "> Quick Start </ a > </ li >
47- < li class ="toctree-l1 "> < a class ="reference internal " href ="../../user_guide.html "> User Guide </ a > </ li >
48- < li class ="toctree-l1 "> < a class ="reference internal " href ="../../dashboard.html "> Real-Time Monitoring Dashboard </ a > </ li >
49- < li class ="toctree-l1 "> < a class ="reference internal " href ="../../api.html "> API Reference </ a > </ li >
50- < li class ="toctree-l1 "> < a class ="reference internal " href ="../../notebooks.html "> Example Notebooks </ a > </ li >
51- < li class ="toctree-l1 "> < a class ="reference internal " href ="../../advanced.html "> Advanced Topics </ a > </ li >
46+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../quickstart.html "> Quick start </ a > </ li >
47+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../user_guide.html "> User guide </ a > </ li >
48+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../dashboard.html "> Real-time monitoring dashboard </ a > </ li >
49+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../api.html "> API reference </ a > </ li >
50+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../notebooks.html "> Example notebooks </ a > </ li >
51+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../advanced.html "> Advanced topics </ a > </ li >
5252</ ul >
5353
5454 </ div >
@@ -91,7 +91,7 @@ <h1>Source code for hill_climber.climber_functions</h1><div class="highlight"><p
9191< span class ="sd "> </ span >
9292< span class ="sd "> Args:</ span >
9393< span class ="sd "> data_array (np.ndarray): 2D numpy array to perturb with shape (N, M).</ span >
94- < span class ="sd "> step_spread (float ): Standard deviation of normal distribution for perturbation.</ span >
94+ < span class ="sd "> step_spread (np.ndarray ): Standard deviation of normal distribution for perturbation (per-feature) .</ span >
9595< span class ="sd "> n_perturb (int): Number of elements to perturb.</ span >
9696< span class ="sd "> min_bounds (np.ndarray): 1D array of minimum bounds for each column.</ span >
9797< span class ="sd "> max_bounds (np.ndarray): 1D array of maximum bounds for each column.</ span >
@@ -108,7 +108,7 @@ <h1>Source code for hill_climber.climber_functions</h1><div class="highlight"><p
108108
109109 < span class ="n "> row_idx</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> random</ span > < span class ="o "> .</ span > < span class ="n "> randint</ span > < span class ="p "> (</ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="n "> n_rows</ span > < span class ="p "> )</ span >
110110 < span class ="n "> col_idx</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> random</ span > < span class ="o "> .</ span > < span class ="n "> randint</ span > < span class ="p "> (</ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="n "> n_cols</ span > < span class ="p "> )</ span >
111- < span class ="n "> perturbation</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> random</ span > < span class ="o "> .</ span > < span class ="n "> normal</ span > < span class ="p "> (</ span > < span class ="mf "> 0.0</ span > < span class ="p "> ,</ span > < span class ="n "> step_spread</ span > < span class ="p "> )</ span >
111+ < span class ="n "> perturbation</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> random</ span > < span class ="o "> .</ span > < span class ="n "> normal</ span > < span class ="p "> (</ span > < span class ="mf "> 0.0</ span > < span class ="p "> ,</ span > < span class ="n "> step_spread</ span > < span class ="p "> [ </ span > < span class =" n " > col_idx </ span > < span class =" p " > ] )</ span >
112112 < span class ="n "> new_value</ span > < span class ="o "> =</ span > < span class ="n "> result</ span > < span class ="p "> [</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span > < span class ="n "> col_idx</ span > < span class ="p "> ]</ span > < span class ="o "> +</ span > < span class ="n "> perturbation</ span >
113113
114114 < span class ="c1 "> # Reflect values back into bounds instead of clipping</ span >
@@ -152,8 +152,8 @@ <h1>Source code for hill_climber.climber_functions</h1><div class="highlight"><p
152152< span class ="sd "> Note: HillClimber uses 0.001 as its default.</ span >
153153< span class ="sd "> bounds (tuple, optional): Tuple of (min_bounds, max_bounds) arrays for each column.</ span >
154154< span class ="sd "> If None, uses data min/max. Default is None.</ span >
155- < span class ="sd "> step_spread (float): Standard deviation of normal distribution for perturbations.</ span >
156- < span class ="sd "> Default is 1.0.</ span >
155+ < span class ="sd "> step_spread (float or np.ndarray ): Standard deviation of normal distribution for perturbations.</ span >
156+ < span class ="sd "> Can be a scalar (same for all features) or array (per-feature). Default is 1.0.</ span >
157157< span class ="sd "> </ span >
158158< span class ="sd "> Returns:</ span >
159159< span class ="sd "> np.ndarray: Perturbed numpy array with same shape as input.</ span >
@@ -171,6 +171,10 @@ <h1>Source code for hill_climber.climber_functions</h1><div class="highlight"><p
171171 < span class ="k "> else</ span > < span class ="p "> :</ span >
172172 < span class ="n "> min_bounds</ span > < span class ="p "> ,</ span > < span class ="n "> max_bounds</ span > < span class ="o "> =</ span > < span class ="n "> bounds</ span >
173173
174+ < span class ="c1 "> # Ensure step_spread is an array (broadcast scalar if needed)</ span >
175+ < span class ="k "> if</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> isscalar</ span > < span class ="p "> (</ span > < span class ="n "> step_spread</ span > < span class ="p "> ):</ span >
176+ < span class ="n "> step_spread</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> full</ span > < span class ="p "> (</ span > < span class ="n "> data</ span > < span class ="o "> .</ span > < span class ="n "> shape</ span > < span class ="p "> [</ span > < span class ="mi "> 1</ span > < span class ="p "> ],</ span > < span class ="n "> step_spread</ span > < span class ="p "> )</ span >
177+
174178 < span class ="c1 "> # Call JIT-compiled function</ span >
175179 < span class ="k "> return</ span > < span class ="n "> _perturb_core</ span > < span class ="p "> (</ span > < span class ="n "> data</ span > < span class ="p "> ,</ span > < span class ="n "> step_spread</ span > < span class ="p "> ,</ span > < span class ="n "> n_perturb</ span > < span class ="p "> ,</ span > < span class ="n "> min_bounds</ span > < span class ="p "> ,</ span > < span class ="n "> max_bounds</ span > < span class ="p "> )</ span > </ div >
176180
0 commit comments