Skip to content

Commit ceacf40

Browse files
committed
Update website and images for v1.25.0
1 parent 2381d44 commit ceacf40

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

contourf.jpg

-11.6 KB
Loading

index.html

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,8 @@ <h4>Use case №1: Find global minimium of an objective/cost function</h4>
357357
<a href="https://en.wikipedia.org/wiki/Rosenbrock_function">Rosenbrock's banana function</a>,
358358
constrained to a circle with <math><mi>r</mi><mo>=</mo><mn>2</mn></math>, all in comparatively just a few evaluations.
359359
</p>
360+
<p>This is a simple 2D example, but partial dependence plots and sequence of evaluations plots
361+
generalize well to multiple dimensions.</p>
360362
</div>
361363
<pre class="snippet"><code class="python">import sambo
362364
from sambo.plot import *
@@ -366,7 +368,7 @@ <h4>Use case №1: Find global minimium of an objective/cost function</h4>
366368

367369
result = sambo.minimize(
368370
rosen, bounds=[(-2, 2)]*2, method='shgo',
369-
constraints=lambda x: sum(x**2) &lt;= 2)
371+
constraints=lambda x: sum(x**2) &lt;= 2**len(x))
370372

371373
plot_convergence(result)
372374
plot_objective(result) # Partial dependence
@@ -445,9 +447,9 @@ <h4>Use case №2: Sequential surrogate model-based optimization through "ask-an
445447
<h4>Use case №3: <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization">Hyperparameter tuning</a> for machine-learning in quasi-logarithmic time</h4>
446448
<p>
447449
Use <code>sambo.SamboSearchCV</code> as a <b>drop-in replacement</b> for
448-
<code>GridSearchCV</code> (or even <code>HalvingRandomSearchCV</code>!) from scikit-learn
450+
<code>GridSearchCV</code> (or even <code>HalvingRandomSearchCV</code>) from scikit-learn
449451
to <b>optimize your machine learning pipeline hyperparameters in sub-linear time</b>,
450-
yet with an algo way better informed than simple random search!
452+
yet with an algorithm considerably better-informed than simple random search!
451453
</p>
452454
</div>
453455
<pre class="snippet"><code class="python"># Example setup of a scikit-learn pipeline
@@ -521,11 +523,12 @@ <h3>Benchmark</h3>
521523
According to our <a href="https://github.com/sambo-optimization/sambo/blob/master/benchmark">benchmark</a>
522524
of most common optimization algorithm implementations
523525
on several popular global optimization functions, including a few multi-dimensional ones (2–10D),
524-
<b><cite>SAMBO</cite> most often converges to correct global optimum,
526+
<b><cite>SAMBO</cite> out-of-the-box most often converges to correct global optimum,
525527
in fewest total objective evaluations,
526528
yielding smallest absolute error,
527529
with runtime just as fast as that of the best</b>
528-
(<a href="benchmark.txt">full stdout output</a>).
530+
(<a href="benchmark.txt">full stdout output</a>),
531+
proving the implementation sound and justified.
529532
</p>
530533
</div>
531534
<div class="table">
@@ -538,25 +541,25 @@ <h3>Benchmark</h3>
538541
<th>Duration</th>
539542
</tr></thead>
540543
<tbody>
541-
<tr class="significant"><td>sambo.minimize(shgo)</td><td>92%</td><td>135</td><td>1</td><td>0.04</td></tr>
542-
<tr class="significant"><td>sambo.minimize(sceua)</td><td>92%</td><td>558</td><td>1</td><td>0.25</td></tr>
543-
<tr><td>direct †</td><td>92%</td><td>1389</td><td>1</td><td>0.03</td></tr>
544-
<tr><td>dual_annealing †</td><td>92%</td><td>6461</td><td>1</td><td>0.86</td></tr>
545-
<tr><td>differential_evolution</td><td>83%</td><td>13959</td><td>1</td><td>2.00</td></tr>
546-
<tr class="significant"><td>sambo.minimize(smbo)</td><td>75%</td><td>475</td><td>2</td><td>45.76</td></tr>
547-
<tr><td>nevergrad</td><td>75%</td><td>1785</td><td>5</td><td>11.25</td></tr>
548-
<tr><td>scikit-optimize</td><td>67%</td><td>195</td><td>7</td><td>46.97</td></tr>
544+
<tr class="significant"><td>sambo.minimize(smbo)</td><td>100%</td><td>240</td><td>0</td><td>167.45</td></tr>
545+
<tr class="significant"><td>sambo.minimize(sceua)</td><td>100%</td><td>558</td><td>0</td><td>0.25</td></tr>
546+
<tr><td>direct †</td><td>100%</td><td>1389</td><td>0</td><td>0.03</td></tr>
547+
<tr><td>dual_annealing †</td><td>100%</td><td>6461</td><td>0</td><td>0.83</td></tr>
548+
<tr class="significant"><td>sambo.minimize(shgo)</td><td>92%</td><td>219</td><td>1</td><td>0.09</td></tr>
549+
<tr><td>hyperopt</td><td>92%</td><td>1091</td><td>1</td><td>17.98</td></tr>
550+
<tr><td>differential_evolution</td><td>92%</td><td>13959</td><td>0</td><td>1.97</td></tr>
551+
<tr><td>Nelder-Mead †</td><td>75%</td><td>301</td><td>14</td><td>0.02</td></tr>
552+
<tr><td>nevergrad</td><td>75%</td><td>1732</td><td>6</td><td>10.98</td></tr>
553+
<tr><td>COBYQA</td><td>67%</td><td>134</td><td>7</td><td>0.51</td></tr>
554+
<tr><td>scikit-optimize</td><td>67%</td><td>195</td><td>6</td><td>54.21</td></tr>
549555
<tr><td>COBYLA</td><td>67%</td><td>215</td><td>15</td><td>0.06</td></tr>
550-
<tr><td>shgo</td><td>67%</td><td>241</td><td>11</td><td>0.12</td></tr>
551-
<tr><td>SLSQP</td><td>67%</td><td>266</td><td>11</td><td>0.11</td></tr>
552-
<tr><td>Nelder-Mead †</td><td>67%</td><td>301</td><td>15</td><td>0.02</td></tr>
556+
<tr><td>shgo</td><td>67%</td><td>241</td><td>12</td><td>0.11</td></tr>
557+
<tr><td>SLSQP</td><td>67%</td><td>266</td><td>12</td><td>0.11</td></tr>
553558
<tr><td>Powell †</td><td>67%</td><td>323</td><td>16</td><td>0.01</td></tr>
554-
<tr><td>hyperopt</td><td>67%</td><td>1196</td><td>2</td><td>30.10</td></tr>
555-
<tr><td>COBYQA</td><td>58%</td><td>134</td><td>8</td><td>0.53</td></tr>
559+
<tr><td>trust-constr</td><td>67%</td><td>1044</td><td>7</td><td>1.88</td></tr>
556560
<tr><td>TNC †</td><td>58%</td><td>233</td><td>16</td><td>0.04</td></tr>
557-
<tr><td>trust-constr</td><td>58%</td><td>1044</td><td>8</td><td>1.79</td></tr>
558-
<tr><td>basinhopping</td><td>58%</td><td>3424</td><td>21</td><td>0.91</td></tr>
559-
<tr><td>CG †</td><td>50%</td><td>413</td><td>20</td><td>0.02</td></tr>
561+
<tr><td>basinhopping</td><td>58%</td><td>3424</td><td>21</td><td>0.84</td></tr>
562+
<tr><td>CG †</td><td>50%</td><td>413</td><td>19</td><td>0.02</td></tr>
560563
</tbody>
561564
<tfoot style="font-size: small;">
562565
<tr><th colspan="5">† Non-constrained method; constrained by patching the objective function s.t.<br>
@@ -599,7 +602,7 @@ <h3>Benchmark</h3>
599602
for (let i of [2, 3, 4, 5]) {
600603
let nums = [...document.querySelectorAll(`.table td:nth-child(${i})`)].map(el => parseFloat(el.textContent));
601604
let [max, min] = [Math.max(...nums), Math.min(...nums)];
602-
let pow = [0, 0, 3, .3, .5, 1][i];
605+
let pow = [0, 0, 3, .5, .5, .5][i];
603606
document.querySelectorAll(`.table td:nth-child(${i})`).forEach((td, i) => {
604607
td.style.backgroundColor = `hsl(var(--hue), 100%, ${100 - ((nums[i] - min) / (max - min))**pow * 20}%)`;
605608
});

0 commit comments

Comments
 (0)