-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.html
540 lines (420 loc) · 57.5 KB
/
README.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-38514290-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SMPyBandits — SMPyBandits 0.9.6 documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true, "ignoreClass": "document", "processClass": "math|output_area"}})</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="SMPyBandits modules" href="docs/modules.html" />
<link rel="prev" title="Welcome to SMPyBandits documentation!" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> SMPyBandits
<img src="_static/logo.png" class="logo" alt="Logo"/>
</a>
<div class="version">
0.9
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#"><em>SMPyBandits</em></a><ul>
<li class="toctree-l2"><a class="reference internal" href="#quick-presentation">Quick presentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="#how-to-cite-this-work">How to cite this work?</a></li>
<li class="toctree-l2"><a class="reference internal" href="#list-of-research-publications-using-smpybandits">List of research publications using SMPyBandits</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#st-article-about-policy-aggregation-algorithm-aka-model-selection">1st article, about <strong>policy aggregation algorithm (aka model selection)</strong></a></li>
<li class="toctree-l3"><a class="reference internal" href="#nd-article-about-multi-players-multi-armed-bandits">2nd article, about <strong>Multi-players Multi-Armed Bandits</strong></a></li>
<li class="toctree-l3"><a class="reference internal" href="#rd-article-using-doubling-trick-for-multi-armed-bandits">3rd article, using <strong>Doubling Trick for Multi-Armed Bandits</strong></a></li>
<li class="toctree-l3"><a class="reference internal" href="#th-article-about-piece-wise-stationary-multi-armed-bandits">4th article, about <strong>Piece-Wise Stationary Multi-Armed Bandits</strong></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#other-interesting-things">Other interesting things</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#single-player-policies">Single-player Policies</a></li>
<li class="toctree-l3"><a class="reference internal" href="#arms-and-problems">Arms and problems</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#other-remarks">Other remarks</a></li>
<li class="toctree-l2"><a class="reference internal" href="#how-to-run-the-experiments">How to run the experiments ?</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#nix">Nix</a></li>
<li class="toctree-l3"><a class="reference internal" href="#boom-warning">💥 Warning</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#contributing">Contributing?</a></li>
<li class="toctree-l2"><a class="reference internal" href="#boom-todo">💥 TODO</a></li>
<li class="toctree-l2"><a class="reference internal" href="#scroll-license-github-license">📜 License ? </a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="docs/modules.html">SMPyBandits modules</a></li>
<li class="toctree-l1"><a class="reference internal" href="How_to_run_the_code.html">How to run the code ?</a></li>
<li class="toctree-l1"><a class="reference internal" href="PublicationsWithSMPyBandits.html">List of research publications using Lilian Besson’s SMPyBandits project</a></li>
<li class="toctree-l1"><a class="reference internal" href="Aggregation.html"><strong>Policy aggregation algorithms</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="MultiPlayers.html"><strong>Multi-players simulation environment</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="DoublingTrick.html"><strong>Doubling Trick for Multi-Armed Bandits</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="SparseBandits.html"><strong>Structure and Sparsity of Stochastic Multi-Armed Bandits</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="NonStationaryBandits.html"><strong>Non-Stationary Stochastic Multi-Armed Bandits</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="API.html">Short documentation of the API</a></li>
<li class="toctree-l1"><a class="reference internal" href="About_parallel_computations.html">About parallel computations</a></li>
<li class="toctree-l1"><a class="reference internal" href="TODO.html">💥 TODO</a></li>
<li class="toctree-l1"><a class="reference internal" href="plots/README.html">Some illustrations for this project</a></li>
<li class="toctree-l1"><a class="reference internal" href="notebooks/README.html">Jupyter Notebooks 📓 by Naereen @ GitHub</a></li>
<li class="toctree-l1"><a class="reference internal" href="notebooks/list.html">List of notebooks for SMPyBandits</a></li>
<li class="toctree-l1"><a class="reference internal" href="Profiling.html">A note on execution times, speed and profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="uml_diagrams/README.html">UML diagrams</a></li>
<li class="toctree-l1"><a class="reference internal" href="logs/README.html"><code class="docutils literal notranslate"><span class="pre">logs</span></code> files</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">SMPyBandits</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li><em>SMPyBandits</em></li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/README.md.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
/* CSS overrides for sphinx_rtd_theme */
/* 24px margin */
.nbinput.nblast,
.nboutput.nblast {
margin-bottom: 19px; /* padding has already 5px */
}
/* ... except between code cells! */
.nblast + .nbinput {
margin-top: -19px;
}
.admonition > p:before {
margin-right: 4px; /* make room for the exclamation icon */
}
/* Fix math alignment, see https://github.com/rtfd/sphinx_rtd_theme/pull/686 */
.math {
text-align: unset;
}
</style>
<div class="section" id="smpybandits">
<h1><em>SMPyBandits</em><a class="headerlink" href="#smpybandits" title="Permalink to this headline">¶</a></h1>
<p><strong>Open-Source Python package for Single- and Multi-Players multi-armed Bandits algorithms</strong>.</p>
<img width="50%" src="logo_large.png" align="right" alt="Logo, logo_large.png"/><p>This repository contains the code of <a class="reference external" href="https://perso.crans.org/besson/">Lilian Besson’s</a> numerical environment, written in <a class="reference external" href="https://www.python.org/">Python (2 or 3)</a>, for numerical simulations on 🎰 <em>single</em>-player and <em>multi</em>-players <a class="reference external" href="https://en.wikipedia.org/wiki/Multi-armed_bandit">Multi-Armed Bandits (MAB)</a> algorithms.</p>
<ul class="simple">
<li><p>A complete Sphinx-generated documentation is on <a class="reference external" href="https://smpybandits.github.io/">SMPyBandits.GitHub.io</a>.</p></li>
<li><p>You can also browse online the results of extensive benchmarks, powered by <a class="reference external" href="https://asv.readthedocs.io/en/stable/using.html">Airspeed Velocity</a>, on <a class="reference external" href="https://perso.crans.org/besson/phd/SMPyBandits-benchmarks/">this page</a> (code on <a class="reference external" href="https://github.com/Naereen/SMPyBandits-benchmarks/">SMPyBandits-benchmarks</a>).</p></li>
</ul>
<div class="section" id="quick-presentation">
<h2>Quick presentation<a class="headerlink" href="#quick-presentation" title="Permalink to this headline">¶</a></h2>
<p>It contains the most complete collection of single-player (classical) bandit algorithms on the Internet (<a class="reference external" href="https://smpybandits.github.io/docs/Policies/">over 65!</a>), as well as implementation of all the state-of-the-art <a class="reference external" href="https://smpybandits.github.io/docs/PoliciesMultiPlayers/">multi-player algorithms</a>.</p>
<p>I follow very actively the latest publications related to Multi-Armed Bandits (MAB) research, and usually implement quite quickly the new algorithms (see for instance, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.Exp3PlusPlus.html">Exp3++</a>, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.CORRAL.html">CORRAL</a> and <a class="reference external" href="https://smpybandits.github.io/docs/Policies.SparseUCB.html">SparseUCB</a> were each introduced by articles (<a class="reference external" href="https://arxiv.org/pdf/1702.06103">for Exp3++</a>, <a class="reference external" href="https://arxiv.org/abs/1612.06246v2">for CORRAL</a>, <a class="reference external" href="https://arxiv.org/abs/1706.01383">for SparseUCB</a>) presented at COLT in July 2017, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.LearnExp.html">LearnExp</a> comes from a <a class="reference external" href="https://arxiv.org/abs/1702.04825">NIPS 2017 paper</a>, and <a class="reference external" href="https://smpybandits.github.io/docs/Policies.klUCBPlusPlus.html">kl-UCB++</a> from an <a class="reference external" href="https://hal.inria.fr/hal-01475078">ALT 2017 paper</a>.).
More recent examples are <a class="reference external" href="https://smpybandits.github.io/docs/Policies.klUCBswitch.html">klUCBswitch</a> from <a class="reference external" href="https://arxiv.org/abs/1805.05071">a paper from May 2018</a>, and also <a class="reference external" href="https://smpybandits.github.io/docs/Policies.MusicalChairNoSensing.html">MusicalChairNoSensing</a> from <a class="reference external" href="https://arxiv.org/abs/1808.08416">a paper from August 2018</a>.</p>
<p><a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/"><img alt="Open Source? Yes!" src="https://badgen.net/badge/Open%20Source%20%3F/Yes%21/blue?icon=github" /></a>
<a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/graphs/commit-activity"><img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" /></a>
<a class="reference external" href="https://GitHub.com/Naereen/ama"><img alt="Ask Me Anything !" src="https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg" /></a>
<a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/"><img alt="Analytics" src="https://ga-beacon.appspot.com/UA-38514290-17/github.com/SMPyBandits/SMPyBandits/README.md?pixel" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI version" src="https://img.shields.io/pypi/v/smpybandits.svg" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI implementation" src="https://img.shields.io/pypi/implementation/smpybandits.svg" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI pyversions" src="https://img.shields.io/pypi/pyversions/smpybandits.svg?logo=python" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI download" src="https://img.shields.io/pypi/dm/smpybandits.svg" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI status" src="https://img.shields.io/pypi/status/smpybandits.svg" /></a>
<a class="reference external" href="https://SMPyBandits.ReadTheDocs.io/en/latest/?badge=latest"><img alt="Documentation Status" src="https://readthedocs.org/projects/smpybandits/badge/?version=latest" /></a>
<a class="reference external" href="https://travis-ci.org/SMPyBandits/SMPyBandits"><img alt="Build Status" src="https://travis-ci.org/SMPyBandits/SMPyBandits.svg?branch=master" /></a>
<a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/stargazers"><img alt="Stars of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/stars/SMPyBandits/SMPyBandits" /></a>
<a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/releases"><img alt="Releases of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/release/SMPyBandits/SMPyBandits" /></a></p>
<ul class="simple">
<li><p>Classical MAB have a lot of applications, from clinical trials, A/B testing, game tree exploration, and online content recommendation (my framework does <em>not</em> implement contextual bandit - yet).</p></li>
<li><p><a class="reference internal" href="MultiPlayers.html"><span class="doc">Multi-player MAB</span></a> have applications in Cognitive Radio, and my framework implements <a class="reference external" href="https://smpybandits.github.io/docs/Environment.CollisionModels.html">all the collision models</a> found in the literature, as well as all the algorithms from the last 10 years or so (<a class="reference external" href="https://smpybandits.github.io/docs/PoliciesMultiPlayers.rhoRand.html"><code class="docutils literal notranslate"><span class="pre">rhoRand</span></code></a> from 2009, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.MEGA.html"><code class="docutils literal notranslate"><span class="pre">MEGA</span></code></a> from 2015, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.MusicalChair.html"><code class="docutils literal notranslate"><span class="pre">MusicalChair</span></code></a>, and our state-of-the-art algorithms <a class="reference external" href="https://smpybandits.github.io/docs/PoliciesMultiPlayers.RandTopM.html"><code class="docutils literal notranslate"><span class="pre">RandTopM</span></code></a> and <a class="reference external" href="https://smpybandits.github.io/docs/PoliciesMultiPlayers.MCTopM.html"><code class="docutils literal notranslate"><span class="pre">MCTopM</span></code></a>, along with very recent algorithms <a class="reference external" href="https://smpybandits.github.io/docs/Policies.SIC_MMAB.html"><code class="docutils literal notranslate"><span class="pre">SIC-MMAB</span></code></a> from <a class="reference external" href="https://arxiv.org/abs/1809.08151">arXiv:1809.08151</a> and <a class="reference external" href="https://smpybandits.github.io/docs/Policies.MusicalChairNoSensing.html"><code class="docutils literal notranslate"><span class="pre">MusicalChairNoSensing</span></code></a> from <a class="reference external" href="https://arxiv.org/abs/1808.08416">arXiv:1808.08416</a>).</p></li>
<li><p>I’m working on adding a clean support for non-stationary MAB problem, and I will soon implement all state-of-the-art algorithms for these problems.</p></li>
</ul>
<p>With this numerical framework, simulations can run on a single CPU or a multi-core machine, and summary plots are automatically saved as high-quality PNG, PDF and EPS (ready for being used in research article).
Making new simulations is very easy, one only needs to write a configuration script and basically no code! See <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/search?l=Python&q=configuration&type=&utf8=%E2%9C%93">these examples</a> (files named <code class="docutils literal notranslate"><span class="pre">configuration_*.py</span></code>).</p>
<p>A complete <a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> documentation for each algorithms and every piece of code (included constants in the configurations!) is available here: <a class="reference external" href="https://smpybandits.github.io/">SMPyBandits.GitHub.io</a>. (I will use <a class="reference external" href="https://readthedocs.org/">ReadTheDocs</a> for this project, but I won’t use any <em>continuous integration</em>, don’t even think of it!)</p>
<blockquote>
<div><p><a class="reference external" href="https://perso.crans.org/besson/">I (Lilian Besson)</a> have <a class="reference external" href="https://perso.crans.org/besson/phd/">started my PhD</a> in October 2016, and this is a part of my <strong>on going</strong> research since December 2016.</p>
<p>I launched the <a class="reference external" href="https://smpybandits.github.io/">documentation</a> on March 2017, I wrote my first research articles using this framework in 2017 and decided to (finally) open-source my project in February 2018.
<a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/commits/master"><img alt="Commits of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/commits/SMPyBandits/SMPyBandits" /></a> / <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/commits/master"><img alt="Date of last commit of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/last-commit/SMPyBandits/SMPyBandits" /></a>
<a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/issues"><img alt="Issues of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/issues/SMPyBandits/SMPyBandits" /></a> : <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/issues?q=is%3Aopen+is%3Aissue"><img alt="Open issues of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/open-issues/SMPyBandits/SMPyBandits" /></a> / <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/issues?q=is%3Aclosed+is%3Aissue"><img alt="Closed issues of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/closed-issues/SMPyBandits/SMPyBandits" /></a></p>
</div></blockquote>
</div>
<hr class="docutils" />
<div class="section" id="how-to-cite-this-work">
<h2>How to cite this work?<a class="headerlink" href="#how-to-cite-this-work" title="Permalink to this headline">¶</a></h2>
<p>If you use this package for your own work, please consider citing it with <a class="reference external" href="SMPyBandits.bib">this piece of BibTeX</a>:</p>
<div class="highlight-bibtex notranslate"><div class="highlight"><pre><span></span><span class="nc">@misc</span><span class="p">{</span><span class="nl">SMPyBandits</span><span class="p">,</span>
<span class="na">title</span> <span class="p">=</span> <span class="s">{{SMPyBandits: an Open-Source Research Framework for Single and Multi-Players Multi-Arms Bandits (MAB) Algorithms in Python}}</span><span class="p">,</span>
<span class="na">author</span> <span class="p">=</span> <span class="s">{Lilian Besson}</span><span class="p">,</span>
<span class="na">year</span> <span class="p">=</span> <span class="s">{2018}</span><span class="p">,</span>
<span class="na">url</span> <span class="p">=</span> <span class="s">{https://github.com/SMPyBandits/SMPyBandits/}</span><span class="p">,</span>
<span class="na">howpublished</span> <span class="p">=</span> <span class="s">{Online at: \url{github.com/SMPyBandits/SMPyBandits}}</span><span class="p">,</span>
<span class="na">note</span> <span class="p">=</span> <span class="s">{Code at https://github.com/SMPyBandits/SMPyBandits/, documentation at https://smpybandits.github.io/}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>I also wrote a small paper to present <em>SMPyBandits</em>, and I will send it to <a class="reference external" href="http://jmlr.org/mloss/">JMLR MLOSS</a>.
The paper can be consulted <a class="reference external" href="https://perso.crans.org/besson/articles/SMPyBandits.pdf">here on my website</a>.</p>
<blockquote>
<div><p>A DOI will arrive as soon as possible! I tried to publish <a class="reference external" href="docs/paper/paper">a paper</a> on both <a class="reference external" href="http://joss.theoj.org/">JOSS</a> and <a class="reference external" href="http://mloss.org/software/">MLOSS</a>.</p>
</div></blockquote>
</div>
<div class="section" id="list-of-research-publications-using-smpybandits">
<h2><a class="reference internal" href="PublicationsWithSMPyBandits.html"><span class="doc">List of research publications using SMPyBandits</span></a><a class="headerlink" href="#list-of-research-publications-using-smpybandits" title="Permalink to this headline">¶</a></h2>
<div class="section" id="st-article-about-policy-aggregation-algorithm-aka-model-selection">
<h3>1st article, about <a class="reference internal" href="Aggregation.html"><span class="doc">policy aggregation algorithm (aka model selection)</span></a><a class="headerlink" href="#st-article-about-policy-aggregation-algorithm-aka-model-selection" title="Permalink to this headline">¶</a></h3>
<p>I designed and added the <a class="reference external" href="https://smpybandits.github.io/docs/Policies.Aggregator.html"><code class="docutils literal notranslate"><span class="pre">Aggregator</span></code></a> policy, in order to test its validity and performance.</p>
<p>It is a “simple” <strong>voting algorithm to combine multiple bandit algorithms into one</strong>.
Basically, it behaves like a simple MAB bandit just based on empirical means (even simpler than UCB), where <em>arms</em> are the child algorithms <code class="docutils literal notranslate"><span class="pre">A_1</span> <span class="pre">..</span> <span class="pre">A_N</span></code>, each running in “parallel”.</p>
<blockquote>
<div><p><strong>For more details</strong>, refer to this file: <a class="reference internal" href="Aggregation.html"><span class="doc">Aggregation.md</span></a> and <a class="reference external" href="https://hal.inria.fr/hal-01705292">this research article</a>.</p>
</div></blockquote>
<blockquote>
<div><p>PDF : <a class="reference external" href="https://hal.inria.fr/hal-01705292/document">BKM_IEEEWCNC_2018.pdf</a> | HAL notice : <a class="reference external" href="https://hal.inria.fr/hal-01705292/">BKM_IEEEWCNC_2018</a> | BibTeX : <a class="reference external" href="https://hal.inria.fr/hal-01705292/bibtex">BKM_IEEEWCNC_2018.bib</a> | <a class="reference internal" href="Aggregation.html"><span class="doc">Source code and documentation</span></a>
<a class="reference external" href="https://hal.inria.fr/hal-01705292"><img alt="Published" src="https://img.shields.io/badge/Published%3F-accepted-green.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/aggregation-of-multi-armed-bandits-learning-algorithms-for/commits/"><img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-finished-green.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/ama"><img alt="Ask Me Anything !" src="https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg" /></a></p>
</div></blockquote>
</div>
<div class="section" id="nd-article-about-multi-players-multi-armed-bandits">
<h3>2nd article, about <a class="reference internal" href="MultiPlayers.html"><span class="doc">Multi-players Multi-Armed Bandits</span></a><a class="headerlink" href="#nd-article-about-multi-players-multi-armed-bandits" title="Permalink to this headline">¶</a></h3>
<p>There is another point of view: instead of comparing different single-player policies on the same problem, we can make them play against each other, in a multi-player setting.
The basic difference is about <strong>collisions</strong> : at each time <code class="docutils literal notranslate"><span class="pre">t</span></code>, if two or more user chose to sense the same channel, there is a <em>collision</em>. Collisions can be handled in different way from the base station point of view, and from each player point of view.</p>
<blockquote>
<div><p><strong>For more details</strong>, refer to this file: <a class="reference internal" href="MultiPlayers.html"><span class="doc">MultiPlayers.md</span></a> and <a class="reference external" href="https://hal.inria.fr/hal-01629733">this research article</a>.</p>
</div></blockquote>
<blockquote>
<div><p>PDF : <a class="reference external" href="https://hal.inria.fr/hal-01629733/document">BK__ALT_2018.pdf</a> | HAL notice : <a class="reference external" href="https://hal.inria.fr/hal-01629733/">BK__ALT_2018</a> | BibTeX : <a class="reference external" href="https://hal.inria.fr/hal-01629733/bibtex">BK__ALT_2018.bib</a> | <a class="reference internal" href="MultiPlayers.html"><span class="doc">Source code and documentation</span></a>
<a class="reference external" href="http://www.cs.cornell.edu/conferences/alt2018/index.html#accepted"><img alt="Published" src="https://img.shields.io/badge/Published%3F-accepted-green.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/multi-player-bandits-revisited/commits/"><img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/ama"><img alt="Ask Me Anything !" src="https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg" /></a></p>
</div></blockquote>
</div>
<div class="section" id="rd-article-using-doubling-trick-for-multi-armed-bandits">
<h3>3rd article, using <a class="reference internal" href="DoublingTrick.html"><span class="doc">Doubling Trick for Multi-Armed Bandits</span></a><a class="headerlink" href="#rd-article-using-doubling-trick-for-multi-armed-bandits" title="Permalink to this headline">¶</a></h3>
<p>I studied what Doubling Trick can and can’t do to obtain efficient anytime version of non-anytime optimal Multi-Armed Bandits algorithms.</p>
<blockquote>
<div><p><strong>For more details</strong>, refer to this file: <a class="reference internal" href="DoublingTrick.html"><span class="doc">DoublingTrick.md</span></a> and <a class="reference external" href="https://hal.inria.fr/hal-01736357">this research article</a>.</p>
</div></blockquote>
<blockquote>
<div><p>PDF : <a class="reference external" href="https://hal.inria.fr/hal-01736357/document">BK__DoublingTricks_2018.pdf</a> | HAL notice : <a class="reference external" href="https://hal.inria.fr/hal-01736357/">BK__DoublingTricks_2018</a> | BibTeX : <a class="reference external" href="https://hal.inria.fr/hal-01736357/bibtex">BK__DoublingTricks_2018.bib</a> | <a class="reference internal" href="DoublingTrick.html"><span class="doc">Source code and documentation</span></a>
<a class="reference external" href="https://hal.inria.fr/hal-01736357"><img alt="Published" src="https://img.shields.io/badge/Published%3F-waiting-orange.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/what-doubling-tricks-can-and-cant-do-for-multi-armed-bandits/commits/"><img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-almost%20finished-orange.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/ama"><img alt="Ask Me Anything !" src="https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg" /></a></p>
</div></blockquote>
</div>
<div class="section" id="th-article-about-piece-wise-stationary-multi-armed-bandits">
<h3>4th article, about <a class="reference internal" href="NonStationaryBandits.html"><span class="doc">Piece-Wise Stationary Multi-Armed Bandits</span></a><a class="headerlink" href="#th-article-about-piece-wise-stationary-multi-armed-bandits" title="Permalink to this headline">¶</a></h3>
<p>With Emilie Kaufmann, we studied the Generalized Likelihood Ratio Test (GLRT) for sub-Bernoulli distributions, and proposed the B-GLRT algorithm for change-point detection for piece-wise stationary one-armed bandit problems. We combined the B-GLRT with the kl-UCB multi-armed bandit algorithm and proposed the GLR-klUCB algorithm for piece-wise stationary multi-armed bandit problems. We prove finite-time guarantees for the B-GLRT and the GLR-klUCB algorithm, and we illustrate its performance with extensive numerical experiments.</p>
<blockquote>
<div><p><strong>For more details</strong>, refer to this file: <a class="reference internal" href="NonStationaryBandits.html"><span class="doc">NonStationaryBandits.md</span></a> and <a class="reference external" href="https://hal.inria.fr/hal-02006471">this research article</a>.</p>
</div></blockquote>
<blockquote>
<div><p>PDF : <a class="reference external" href="https://hal.inria.fr/hal-02006471/document">BK__COLT_2019.pdf</a> | HAL notice : <a class="reference external" href="https://hal.inria.fr/hal-02006471/">BK__COLT_2019</a> | BibTeX : <a class="reference external" href="https://hal.inria.fr/hal-02006471/bibtex">BK__COLT_2019.bib</a> | <a class="reference external" href="NonStationaryBandits.html">Source code and documentation</a>
<a class="reference external" href="https://hal.inria.fr/hal-02006471"><img alt="Published" src="https://img.shields.io/badge/Published%3F-waiting-orange.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/combining-the-generalized-likelihood-ratio-test-and-kl-ucb-for/commits/"><img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-almost%20finished-orange.svg" /></a> <a class="reference external" href="https://bitbucket.org/lbesson/ama"><img alt="Ask Me Anything !" src="https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg" /></a></p>
</div></blockquote>
</div>
</div>
<hr class="docutils" />
<div class="section" id="other-interesting-things">
<h2>Other interesting things<a class="headerlink" href="#other-interesting-things" title="Permalink to this headline">¶</a></h2>
<div class="section" id="single-player-policies">
<h3><a class="reference external" href="https://smpybandits.github.io/docs/Policies.html">Single-player Policies</a><a class="headerlink" href="#single-player-policies" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p>More than 65 algorithms, including all known variants of the <a class="reference external" href="https://smpybandits.github.io/docs/Policies.UCB.html"><code class="docutils literal notranslate"><span class="pre">UCB</span></code></a>, <a class="reference external" href="https://smpybandits.github.io/docs//Policies.klUCB.html">kl-UCB</a>, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.MOSS.html"><code class="docutils literal notranslate"><span class="pre">MOSS</span></code></a> and <a class="reference external" href="https://smpybandits.github.io/docs/Policies.Thompson.html">Thompson Sampling</a> algorithms, as well as other less known algorithms (<a class="reference external" href="https://smpybandits.github.io/docs/Policies.OCUCB.html"><code class="docutils literal notranslate"><span class="pre">OCUCB</span></code></a>, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.OCUCB.html"><code class="docutils literal notranslate"><span class="pre">BESA</span></code></a>, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.OSSB.html"><code class="docutils literal notranslate"><span class="pre">OSSB</span></code></a> etc).</p></li>
<li><p>For instance, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.SparseWrapper.html#module-Policies.SparseWrapper"><code class="docutils literal notranslate"><span class="pre">SparseWrapper</span></code></a> is a generalization of <a class="reference external" href="https://arxiv.org/pdf/1706.01383/">the SparseUCB from this article</a>.</p></li>
<li><p>Implementation of very recent Multi-Armed Bandits algorithms, e.g., <a class="reference external" href="https://smpybandits.github.io/docs/Policies.klUCBPlusPlus.html"><code class="docutils literal notranslate"><span class="pre">kl-UCB++</span></code></a> (from <a class="reference external" href="https://hal.inria.fr/hal-01475078">this article</a>), <a class="reference external" href="https://smpybandits.github.io/docs/Policies.UCBdagger.html"><code class="docutils literal notranslate"><span class="pre">UCB-dagger</span></code></a> (from <a class="reference external" href="https://arxiv.org/pdf/1507.07880">this article</a>), or <a class="reference external" href="https://smpybandits.github.io/docs/Policies.MOSSAnytime.html"><code class="docutils literal notranslate"><span class="pre">MOSS-anytime</span></code></a> (from <a class="reference external" href="http://proceedings.mlr.press/v48/degenne16.pdf">this article</a>).</p></li>
<li><p>Experimental policies: <a class="reference external" href="https://smpybandits.github.io/docs/Policies.BlackBoxOpt.html"><code class="docutils literal notranslate"><span class="pre">BlackBoxOpt</span></code></a> or <a class="reference external" href="https://smpybandits.github.io/docs/Policies.UnsupervisedLearning.html"><code class="docutils literal notranslate"><span class="pre">UnsupervisedLearning</span></code></a> (using Gaussian processes to learn the arms distributions).</p></li>
</ul>
</div>
<div class="section" id="arms-and-problems">
<h3>Arms and problems<a class="headerlink" href="#arms-and-problems" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p>My framework mainly targets stochastic bandits, with arms following <a class="reference external" href="https://smpybandits.github.io/docs/Arms.Bernoulli.html"><code class="docutils literal notranslate"><span class="pre">Bernoulli</span></code></a>, bounded (truncated) or unbounded <a class="reference external" href="https://smpybandits.github.io/docs/Arms.Gaussian.html"><code class="docutils literal notranslate"><span class="pre">Gaussian</span></code></a>, <a class="reference external" href="https://smpybandits.github.io/docs/Arms.Exponential.html"><code class="docutils literal notranslate"><span class="pre">Exponential</span></code></a>, <a class="reference external" href="https://smpybandits.github.io/docs/Arms.Gamma.html"><code class="docutils literal notranslate"><span class="pre">Gamma</span></code></a> or <a class="reference external" href="https://smpybandits.github.io/docs/Arms.Poisson.html"><code class="docutils literal notranslate"><span class="pre">Poisson</span></code></a> distributions, and more.</p></li>
<li><p>The default configuration is to use a fixed problem for N repetitions (e.g. 1000 repetitions, use <a class="reference external" href="https://smpybandits.github.io/docs/Environment.MAB.html#Environment.MAB.MAB"><code class="docutils literal notranslate"><span class="pre">MAB.MAB</span></code></a>), but there is also a perfect support for “Bayesian” problems where the mean vector µ1,…,µK change <em>at every repetition</em> (see <a class="reference external" href="https://smpybandits.github.io/docs/Environment.MAB.html#Environment.MAB.DynamicMAB"><code class="docutils literal notranslate"><span class="pre">MAB.DynamicMAB</span></code></a>).</p></li>
<li><p>There is also a good support for Markovian problems, see <a class="reference external" href="https://smpybandits.github.io/docs/Environment.MAB.html#Environment.MAB.MarkovianMAB"><code class="docutils literal notranslate"><span class="pre">MAB.MarkovianMAB</span></code></a>, even though I didn’t implement any policies tailored for Markovian problems.</p></li>
<li><p>I’m actively working on adding a very clean support for non-stationary MAB problems, and <a class="reference external" href="https://smpybandits.github.io/docs/Environment.MAB.html#Environment.MAB.PieceWiseStationaryMAB"><code class="docutils literal notranslate"><span class="pre">MAB.PieceWiseStationaryMAB</span></code></a> is already working well. Use it with policies designed for piece-wise stationary problems, like <a class="reference external" href="https://smpybandits.github.io/docs/Policies.DiscountedThompson.html">Discounted-Thompson</a>, one of the <a class="reference external" href="https://smpybandits.github.io/docs/Policies.CD_UCB.html">CD-UCB</a> algorithms, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.Monitored_UCB.html">M-UCB</a>, <a class="reference external" href="https://smpybandits.github.io/docs/Policies.SlidingWindowUCB.html">SlidingWindowUCB</a> or <a class="reference external" href="https://smpybandits.github.io/docs/Policies.DiscountedUCB.html">Discounted-UCB</a>, or <a class="reference external" href="https://smpybandits.github.io/docs/Policies.SWHash_UCB.html">SW-UCB#</a>.</p></li>
</ul>
</div>
</div>
<hr class="docutils" />
<div class="section" id="other-remarks">
<h2>Other remarks<a class="headerlink" href="#other-remarks" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><p>Everything here is done in an imperative, object oriented style. The API of the Arms, Policy and MultiPlayersPolicy classes is documented <a class="reference internal" href="API.html"><span class="doc">in this file (API.md)</span></a>.</p></li>
<li><p>The code is <a class="reference external" href="logs/main_pylint_log.txt">clean</a>, valid for both <a class="reference external" href="logs/main_pylint_log.txt">Python 2</a> and <a class="reference external" href="logs/main_pylint3_log.txt">Python 3</a>.</p></li>
<li><p>Some piece of code come from the <a class="reference external" href="http://mloss.org/software/view/415/">pymaBandits</a> project, but most of them were refactored. Thanks to the initial project!</p></li>
<li><p><a class="reference external" href="http://gael-varoquaux.info/">G.Varoquaux</a>’s <a class="reference external" href="https://joblib.readthedocs.io/">joblib</a> is used for the <a class="reference external" href="https://smpybandits.github.io/docs/Environment.Evaluator.html"><code class="docutils literal notranslate"><span class="pre">Evaluator</span></code></a> and <a class="reference external" href="https://smpybandits.github.io/docs/Environment.EvaluatorMultiPlayers.html"><code class="docutils literal notranslate"><span class="pre">EvaluatorMultiPlayers</span></code></a> classes, so the simulations are easily parallelized on multi-core machines. (Put <code class="docutils literal notranslate"><span class="pre">n_jobs</span> <span class="pre">=</span> <span class="pre">-1</span></code> or <code class="docutils literal notranslate"><span class="pre">PARALLEL</span> <span class="pre">=</span> <span class="pre">True</span></code> in the config file to use all your CPU cores, as it is by default).</p></li>
</ul>
</div>
<div class="section" id="how-to-run-the-experiments">
<h2><a class="reference internal" href="How_to_run_the_code.html"><span class="doc">How to run the experiments ?</span></a><a class="headerlink" href="#how-to-run-the-experiments" title="Permalink to this headline">¶</a></h2>
<blockquote>
<div><p>See this document: <a class="reference internal" href="How_to_run_the_code.html"><span class="doc">How_to_run_the_code.md</span></a> for more details (or <a class="reference external" href="How_to_run_the_code.html">this documentation page</a>).</p>
</div></blockquote>
<p>TL;DR: this short bash snippet shows how to clone the code, install the requirements for Python 3 (in a <a class="reference external" href="https://virtualenv.pypa.io/en/stable/">virtualenv</a>, and starts some simulation for N=100 repetitions of the default non-Bayesian Bernoulli-distributed problem, for K=9 arms, an horizon of T=10000 and on 4 CPUs (it should take about 20 minutes for each simulations):</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> /tmp/ <span class="c1"># or wherever you want</span>
git clone -c core.symlinks<span class="o">=</span><span class="nb">true</span> https://GitHub.com/SMPyBandits/SMPyBandits.git
<span class="nb">cd</span> SMPyBandits
<span class="c1"># just be sure you have the latest virtualenv from Python 3</span>
sudo pip3 install --upgrade --force-reinstall virtualenv
<span class="c1"># create and active the virtualenv</span>
virtualenv venv
. venv/bin/activate
<span class="nb">type</span> pip <span class="c1"># check it is /tmp/SMPyBandits/venv/bin/pip</span>
<span class="nb">type</span> python <span class="c1"># check it is /tmp/SMPyBandits/venv/bin/python</span>
<span class="c1"># install the requirements in the virtualenv</span>
pip install -r requirements_full.txt
<span class="c1"># run a single-player simulation!</span>
<span class="nv">N</span><span class="o">=</span><span class="m">100</span> <span class="nv">T</span><span class="o">=</span><span class="m">10000</span> <span class="nv">K</span><span class="o">=</span><span class="m">9</span> <span class="nv">N_JOBS</span><span class="o">=</span><span class="m">4</span> make single
<span class="c1"># run a multi-player simulation!</span>
<span class="nv">N</span><span class="o">=</span><span class="m">100</span> <span class="nv">T</span><span class="o">=</span><span class="m">10000</span> <span class="nv">M</span><span class="o">=</span><span class="m">3</span> <span class="nv">K</span><span class="o">=</span><span class="m">9</span> <span class="nv">N_JOBS</span><span class="o">=</span><span class="m">4</span> make moremulti
</pre></div>
</div>
<p>You can also install it directly with <a class="reference external" href="https://pip.pypa.io/"><code class="docutils literal notranslate"><span class="pre">pip</span></code></a> and from GitHub:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> /tmp/ <span class="p">;</span> mkdir SMPyBandits <span class="p">;</span> <span class="nb">cd</span> SMPyBandits/
virtualenv venv
. venv/bin/activate
<span class="nb">type</span> pip <span class="c1"># check it is /tmp/SMPyBandits/venv/bin/pip</span>
<span class="nb">type</span> python <span class="c1"># check it is /tmp/SMPyBandits/venv/bin/python</span>
pip install git+https://github.com/SMPyBandits/SMPyBandits.git#egg<span class="o">=</span>SMPyBandits<span class="o">[</span>full<span class="o">]</span>
</pre></div>
</div>
<blockquote>
<div><ul class="simple">
<li><p>If speed matters to you and you want to use algorithms based on <a class="reference external" href="https://smpybandits.github.io/docs/Policies.klUCB.html">kl-UCB</a>, you should take the time to build and install the fast C implementation of the utilities KL functions. Default is to use <a class="reference external" href="https://smpybandits.github.io/docs/Policies.kullback.html">kullback.py</a>, but using <a class="reference external" href="Policies/C/">the C version from Policies/C/</a> really speeds up the computations. Just follow the instructions, it should work well (you need <code class="docutils literal notranslate"><span class="pre">gcc</span></code> to be installed).</p></li>
<li><p>And if speed matters, be sure that you have a working version of <a class="reference external" href="https://numba.pydata.org/">Numba</a>, it is used by many small functions to (try to automatically) speed up the computations.</p></li>
</ul>
</div></blockquote>
<div class="section" id="nix">
<h3>Nix<a class="headerlink" href="#nix" title="Permalink to this headline">¶</a></h3>
<p>A pinned <a class="reference external" href="https://nixos.org">Nix</a> environment is available for this experimental setup in the <a class="reference external" href="nix/pkgs"><code class="docutils literal notranslate"><span class="pre">nix/pkgs/</span></code></a> directory.
From the root of the project:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ nix-shell
nix-shell$ jupyter_notebook
nix-shell$ <span class="nv">N</span><span class="o">=</span><span class="m">100</span> <span class="nv">T</span><span class="o">=</span><span class="m">10000</span> <span class="nv">K</span><span class="o">=</span><span class="m">9</span> <span class="nv">N_JOBS</span><span class="o">=</span><span class="m">4</span> make single
</pre></div>
</div>
<p>The following one-liner lets you explore one of the example notebooks from any Nix-enabled machine, without cloning the repository:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ nix-shell https://github.com/SMPYBandits/SMPyBandits/archive/master.tar.gz --run <span class="s1">'jupyter-notebook $EXAMPLE_NOTEBOOKS/Example_of_a_small_Multi-Player_Simulation__with_Centralized_Algorithms.ipynb'</span>
</pre></div>
</div>
</div>
<hr class="docutils" />
<div class="section" id="boom-warning">
<h3>💥 Warning<a class="headerlink" href="#boom-warning" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p>This work is still <strong>experimental</strong> even if <a class="reference external" href="https://travis-ci.org/SMPyBandits/SMPyBandits">it is well tested and stable</a>! It’s <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/graphs/contributors">active research</a>. It should be completely bug free and every single module/file should work perfectly (as <a class="reference external" href="main_pylint_log.txt">this pylint log</a> and <a class="reference external" href="main_pylint3_log.txt">this other one</a> says), but bugs are sometimes hard to spot so if you encounter any issue, <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/issues/new">please fill a bug ticket</a>.</p></li>
<li><p>Whenever I add a new feature, I run experiments <a class="reference external" href="https://travis-ci.org/SMPyBandits/SMPyBandits">to check that nothing is broken</a> (and <a class="reference external" href="https://travis-ci.org/SMPyBandits/SMPyBandits">Travis CI</a> helps too). But <em>there is no unittest</em> (I don’t have time). You would have to trust me 😎!</p></li>
<li><p>This project is NOT meant to be a library that you can use elsewhere, but a research tool.</p></li>
</ul>
</div>
</div>
<div class="section" id="contributing">
<h2>Contributing?<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h2>
<blockquote>
<div><p>I don’t except issues or pull requests on this project, but you are welcome to.</p>
</div></blockquote>
<p>Contributions (issues, questions, pull requests) are of course welcome, but this project is and will stay a personal environment designed for quick research experiments, and will never try to be an industry-ready module for applications of Multi-Armed Bandits algorithms.
If you want to contribute, please have a look to the <a class="reference internal" href=".github/CONTRIBUTING.html"><span class="doc">CONTRIBUTING.md</span></a> file, and if you want to be more seriously involved, read the <a class="reference internal" href=".github/CODE_OF_CONDUCT.html"><span class="doc">CODE_OF_CONDUCT.md</span></a> file.</p>
<ul class="simple">
<li><p>You are welcome to <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/issues/new">submit an issue</a>, if it was not previously answered,</p></li>
<li><p>If you have interesting example of use of SMPyBandits, please share it! (<a class="reference external" href="https://www.jupyter.org/">Jupyter Notebooks</a> are preferred). And fill a pull request to <a class="reference external" href="notebooks/">add it to the notebooks examples</a>.</p></li>
</ul>
</div>
<div class="section" id="boom-todo">
<h2>💥 <a class="reference internal" href="TODO.html"><span class="doc">TODO</span></a><a class="headerlink" href="#boom-todo" title="Permalink to this headline">¶</a></h2>
<blockquote>
<div><p>See this file <a class="reference internal" href="TODO.html"><span class="doc">TODO.md</span></a>, and <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/issues">the issues on GitHub</a>.</p>
</div></blockquote>
</div>
<hr class="docutils" />
<div class="section" id="scroll-license-github-license">
<h2>📜 License ? <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/blob/master/LICENSE"><img alt="GitHub license" src="https://img.shields.io/github/license/SMPyBandits/SMPyBandits.svg" /></a><a class="headerlink" href="#scroll-license-github-license" title="Permalink to this headline">¶</a></h2>
<p><a class="reference external" href="https://lbesson.mit-license.org/">MIT Licensed</a> (file <a class="reference external" href="LICENSE">LICENSE</a>).</p>
<p>© 2016-2018 <a class="reference external" href="https://GitHub.com/Naereen">Lilian Besson</a>, with help <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/graphs/contributors">from contributors</a>.</p>
<p><a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/graphs/commit-activity"><img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" /></a>
<a class="reference external" href="https://GitHub.com/Naereen/ama"><img alt="Ask Me Anything !" src="https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg" /></a>
<a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/"><img alt="Analytics" src="https://ga-beacon.appspot.com/UA-38514290-17/github.com/SMPyBandits/SMPyBandits/README.md?pixel" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI version" src="https://img.shields.io/pypi/v/smpybandits.svg" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI implementation" src="https://img.shields.io/pypi/implementation/smpybandits.svg" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI pyversions" src="https://img.shields.io/pypi/pyversions/smpybandits.svg?logo=python" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI download" src="https://img.shields.io/pypi/dm/smpybandits.svg" /></a>
<a class="reference external" href="https://pypi.org/project/SMPyBandits"><img alt="PyPI status" src="https://img.shields.io/pypi/status/smpybandits.svg" /></a>
<a class="reference external" href="https://SMPyBandits.ReadTheDocs.io/en/latest/?badge=latest"><img alt="Documentation Status" src="https://readthedocs.org/projects/smpybandits/badge/?version=latest" /></a>
<a class="reference external" href="https://travis-ci.org/SMPyBandits/SMPyBandits"><img alt="Build Status" src="https://travis-ci.org/SMPyBandits/SMPyBandits.svg?branch=master" /></a></p>
<p><a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/stargazers"><img alt="Stars of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/stars/SMPyBandits/SMPyBandits" /></a> <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/graphs/contributors"><img alt="Contributors of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/contributors/SMPyBandits/SMPyBandits" /></a> <a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/watchers"><img alt="Watchers of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/watchers/SMPyBandits/SMPyBandits" /></a> <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/network/members"><img alt="Forks of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/forks/SMPyBandits/SMPyBandits" /></a></p>
<p><a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/releases"><img alt="Releases of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/release/SMPyBandits/SMPyBandits" /></a>
<a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/commits/master"><img alt="Commits of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/commits/SMPyBandits/SMPyBandits" /></a> / <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/commits/master"><img alt="Date of last commit of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/last-commit/SMPyBandits/SMPyBandits" /></a></p>
<p><a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/issues"><img alt="Issues of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/issues/SMPyBandits/SMPyBandits" /></a> : <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/issues?q=is%3Aopen+is%3Aissue"><img alt="Open issues of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/open-issues/SMPyBandits/SMPyBandits" /></a> / <a class="reference external" href="https://github.com/SMPyBandits/SMPyBandits/issues?q=is%3Aclosed+is%3Aissue"><img alt="Closed issues of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/closed-issues/SMPyBandits/SMPyBandits" /></a></p>
<p><a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/pulls"><img alt="Pull requests of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/prs/SMPyBandits/SMPyBandits" /></a> : <a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/issues?q=is%3Aopen+is%3Apr"><img alt="Open pull requests of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/open-prs/SMPyBandits/SMPyBandits" /></a> / <a class="reference external" href="https://GitHub.com/SMPyBandits/SMPyBandits/issues?q=is%3Aclose+is%3Apr"><img alt="Closed pull requests of https://github.com/SMPyBandits/SMPyBandits/" src="https://badgen.net/github/closed-prs/SMPyBandits/SMPyBandits" /></a></p>
<p><a class="reference external" href="http://ForTheBadge.com"><img alt="ForTheBadge uses-badges" src="http://ForTheBadge.com/images/badges/uses-badges.svg" /></a>
<a class="reference external" href="https://GitHub.com/"><img alt="ForTheBadge uses-git" src="http://ForTheBadge.com/images/badges/uses-git.svg" /></a>
<a class="reference external" href="https://www.python.org/"><img alt="forthebadge made-with-python" src="http://ForTheBadge.com/images/badges/made-with-python.svg" /></a>
<a class="reference external" href="https://GitHub.com/Naereen/"><img alt="ForTheBadge built-with-science" src="http://ForTheBadge.com/images/badges/built-with-science.svg" /></a></p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="docs/modules.html" class="btn btn-neutral float-right" title="SMPyBandits modules" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="index.html" class="btn btn-neutral float-left" title="Welcome to SMPyBandits documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
© Copyright 2016-2018, Lilian Besson (Naereen)
<span class="lastupdated">
Last updated on 25 Feb 2020, 14h.
</span>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>