Bonjour à tous,
Dernièrement Galuel a lancé sur fb un petit défis que j’ai relevé concernant des prévisions sur le nombre de membres à partir de la courbe d’évolution. J’ai commencé il y a quelques semaines à construire ce modèle prédictif sur mon tableur (libre!:)) et pour la petite histoire j’ai commencé à l’imaginer le jour où j’avais vu une prédiction du nombre de membres de l’ordre de 50000 en 2045 ce qui m’avait paru assez tiré par les cheveux… bref… Afin d’être le plus précis possible j’aurais besoin d’avoir accès à la table du nombre de membre au jour le jour, celle qui sert par exemple à construire la courbe sur Cesium. Quelqu’un pourrait m’aider svp?
Bert
Tu pourrais te rapprocher des travaux de @gerard94 qui a déjà lui aussi avancé sur un modèle, en cherchant ses posts sur le forum associé au mots clés “modèle” “membres” “évolution” ou équivalent tu pourras trouver ce qu’il a déjà fait et voir avec lui comment il a fait.
De manière générale il est toujours intéressant de voir ce qui existe concernant un sujet, ce qui peut éviter de refaire un truc déjà fait, ou bien de s’inspirer du déjà fait pour tenter de faire mieux ou autrement.
Excellente idée
Bonjour,
Oui, j’ai écrit un petit programme, dérivé de WotWizard, qui permet de sortir le nombre de membres en fonction du nombre de jours depuis le démarrage de la june. Aujourd’hui, il donne ceci :
0 59
1 59
2 59
3 59
4 59
5 62
6 62
7 62
8 62
9 62
10 64
11 65
12 65
13 65
14 65
15 68
16 68
17 68
18 68
19 68
20 69
21 70
22 70
23 70
24 70
25 72
26 73
27 73
28 73
29 73
30 75
31 76
32 76
33 78
34 78
35 79
36 79
37 79
38 83
39 83
40 85
41 85
42 85
43 88
44 88
45 89
46 89
47 89
48 93
49 93
50 95
51 95
52 95
53 98
54 99
55 101
56 102
57 102
58 105
59 106
60 109
61 109
62 109
63 113
64 113
65 113
66 113
67 113
68 117
69 117
70 118
71 118
72 118
73 123
74 124
75 125
76 126
77 126
78 130
79 130
80 131
81 131
82 131
83 135
84 136
85 138
86 138
87 138
88 141
89 142
90 143
91 143
92 143
93 148
94 148
95 149
96 151
97 151
98 154
99 154
100 154
101 156
102 156
103 161
104 161
105 163
106 165
107 165
108 168
109 168
110 170
111 173
112 173
113 174
114 174
115 174
116 177
117 178
118 181
119 181
120 181
121 182
122 182
123 185
124 185
125 186
126 188
127 189
128 191
129 192
130 193
131 195
132 196
133 199
134 199
135 201
136 202
137 203
138 206
139 206
140 207
141 208
142 209
143 214
144 214
145 216
146 218
147 220
148 225
149 225
150 225
151 226
152 227
153 232
154 232
155 233
156 234
157 235
158 240
159 240
160 241
161 241
162 243
163 247
164 247
165 250
166 251
167 252
168 256
169 256
170 257
171 261
172 262
173 265
174 266
175 266
176 269
177 270
178 273
179 274
180 275
181 276
182 276
183 280
184 280
185 280
186 280
187 282
188 286
189 287
190 290
191 290
192 292
193 298
194 300
195 303
196 304
197 305
198 307
199 309
200 310
201 312
202 314
203 315
204 318
205 319
206 322
207 323
208 325
209 330
210 331
211 331
212 331
213 333
214 336
215 338
216 339
217 342
218 344
219 351
220 351
221 351
222 353
223 356
224 361
225 366
226 367
227 368
228 371
229 376
230 381
231 382
232 383
233 386
234 388
235 395
236 396
237 397
238 400
239 402
240 409
241 410
242 410
243 414
244 414
245 418
246 420
247 420
248 427
249 427
250 431
251 433
252 434
253 438
254 438
255 444
256 446
257 448
258 451
259 452
260 459
261 461
262 462
263 464
264 466
265 470
266 474
267 477
268 479
269 483
270 491
271 493
272 493
273 493
274 498
275 507
276 509
277 509
278 510
279 516
280 520
281 522
282 523
283 524
284 527
285 531
286 534
Ce programme, comme WotWizard, est écrit en Component Pascal (sous Windows, ou, sous Linux, avec Wine) et nécessite la présence d’un noeud Duniter sur le même poste pour fonctionner. Si tu es intéressé, je peux te fournir le source et t’expliquer comment l’installer.
Salut Gérard,
Tout d’abord merci pour ta réponse rapide et pour le tableau. Je suis bien sûr très intéressé pour avoir tes explications. Ensuite je peux te montrer ce que j’ai fait dans mon modèle prédictif mais je pense qu’il est moins complet que le tien.
À+
Bert
Resalut Gérard,
En analysant tes chiffres je me rends compte que pour le jour 286 qui est le 19 décembre (le jour de mes 40 ans = ev/2… bref…) nous étions 529 (cf: https://g1.duniter.fr/#/app/currency/stats/lg) et non 534 comme indiqué dans ta table… y a un bug dans le pâté…
@gerard94 tu pourrais poster ton modèle en mode prédictif ici ? Cela aidera sans doute nos Ğchatons à relativiser un peu la notion de modèle …
@bert31 cela dépend a quel heure de la journée tu fait le relevé, mon module monit indique 532 membres au 19 décembre et je sais qu’il n’y a aucun bug : https://g1-monit.elois.org/membersCount?lg=fr&begin=0&end=0&step=1&stepUnit=days&nbMaxPoints=400&adaptMaxPoints=begin&pow=yes
Dans mon cas je considère le nombre de membres a la fin de la journée, c’est à dire lors du 1er bloc du jours suivant. @kimamila dans Cesium fait différemment et @gerard94 probablement encore différemment d’où les écarts
Je confirme ce que dit @elois. Je fais partir mes mesures du début de la Ğ1 (08/03/2017 15:32:07), en regroupant par 24h. Je ne pense pas qu’il y ait d’erreur, vu que je retombe toujours sur le total affiché par Duniter.
@Galuel : Je n’ai pas de compte facebook, et n’en créerai pas pour l’occasion. Je compte publier bientôt un graphique, que tu pourras recopier si tu veux.
@bert31 : Je suis intéressé par ton modèle, bien sûr, je trouve que mettre des courbes sur des points est un jeu fascinant. Toutefois, je ne crois pas que l’on puisse tirer de vrais prédictions à long terme. Pour ce qui est du logiciel, je t’enverrai les sources et les explications bientôt.
Oui la mesure, pour être précise, doit spécifier le dernier n°de bloc auquel elle fait référence, lequel bloc étant généré toutes les 5 minutes, cela signifie qu’une telle mesure doit indiquer l’heure à 5 minutes près qui lui correspond.
Ex : 19/12/2017 15h:32:07 - bloc #79106 - nombre de membres de la TdC Ğ1: 532
Oui, bien sûr. Mais dans mon cas, je n’en avais pas besoin, c’était juste pour tracer la courbe. Si besoin était, je pourrais afficher ces informations.
J’adore lire ce genre de choses
Amis matheux, merci d’avance pour ce que vous pourriez produire à propos de la Ğ1, sachez que bien sûr les développeurs suivent tout cela avec un grand intérêt ! (même s’ils ne disent rien)
Oui, Cesium utilise le bloc journalier qui produit le DU. Ainsi, le graph a le même pas de temps et référence de temps que le graphique sur la masse monétaire.
Salut @gerard94 ! Je suis super intéressé par ton programme ! Est-ce que tu pourrais me transmettre le code source et les explications d’installation ?
J’ai commencé à travailler moi aussi sur mon propre modèle, j’espère pouvoir bosser beaucoup plus dessus une fois les fêtes passées et vous présenter ça dans les premières semaines de janvier. En attendant, @bert31, @gerard94, je suis vos développements avec passion.
Je fournirai code et explications dans la semaine. Ce sera mon cadeau de fin d’année
Merci Père Noël Gérard, j’ai posé mes petits soulier à côté de mon PC et j’attends avec impatience la marche à suivre! Joyeux Noël à tout le monde!
Pour ceux qui veullent avoir l’évolution du nombre de membre avec le temps :
- Obtenir un fichier
duniter.db
à jour (en suivant le lien ou via votre noeud local) - Utiliser sqliteBrowser (librement téléchargeable) ou autre programme pour extraire les info que vous souhaitez de la base de donnée
duniter.db
.
Exemple de requêtes permétant de créer des vues spécialisé pour obtenir l’évolution quotidienne du nombre de membre :
drop view if exists memberCountEvolutionFlavorDU;
create view memberCountEvolutionFlavorDU
as select distinct
cast (round((time - (select time from block where number=0)) /(24*3600.0)) as int) as daySinceLaunch,
number as blockNumber,
strftime('%d/%m/%Y', datetime(time, 'unixepoch')) as date,
strftime('%H:%M:%S', datetime(time, 'unixepoch')) as horaire,
membersCount
from block
where dividend is not null
order by blockNumber asc
;
drop view if exists memberCountEvolutionFlavorMidNight;
create view memberCountEvolutionFlavorMidNight
as select distinct
(time - strftime('%s',strftime('%Y-%m-%d 00:00:00', datetime((select time from block where number=0), 'unixepoch')))) /(24*3600) as daySinceLaunch,
number as blockNumber,
strftime('%d/%m/%Y', datetime(time, 'unixepoch')) as date,
strftime('%H:%M:%S', datetime(time, 'unixepoch')) as horaire,
membersCount
from block
group by date
HAVING MIN(ROWID)
order by blockNumber asc
;
Il ne vous reste plus qu’a demander select * from memberCountEvolutionFlavorDU
pour afficher le comptage façon Cesium, ou select * from memberCountEvolutionFlavorMidNight
pour l’afficher le nombre de membre au premier block passé minuit.
PS : depuis les vues crées il est possible d’exporter en csv pour s’en servir dans un tableur, et ces vue s’actualiserons toutes seule si le duniter.db
utilisé est celui d’un noeud actif, donc il suffit de refaire des exports csv ou de générer une vue en requêtant directement dessus.
Et pour les flémards via ces quelques lignes exécutées quotidiennement avec la CI de duniter-mycelia-view voici l’historique d’évolution du nombre de membres actualisé chaque jour :
Voila, j’ai publié plusieurs de mes outils sur Github (https://github.com/duniter/WotWizard), dont l’affichage du nombre de membres jour par jour. C’est la version 2.1 (https://github.com/duniter/WotWizard/releases). Il suffit de copier l’exécutable dans un répertoire vide, puis d’y ajouter le fichier sqlite3.dll (https://www.sqlite.org/2015/sqlite-dll-win32-x86-3081002.zip). Lancer WotWizard.exe directement dans Windows, ou avec Wine dans Linux.
Attention :
- un noeud Duniter doit tourner sur le même poste ;
- la base de données de Duniter doit être accessible ; vérifier avec la commande “Édition->Changer la base de données Duniter” ;
- Wotwizard crée sa propre base de données Duniter/DBase.data ; cette création peut prendre un temps assez long au démarrage ;
- ne pas réutiliser un fichier DBase.data d’une version précédente, le format a changé.