hello,
assez kikoolol comme approche mais a au moins le mérite d'être simpl(ist)e
on est en 2016, donc prévision pour 2017
chaque jour représente une variable:
a_1,...a_31
1) mon TO de JANVIER est de 44%,
2) mon TO du lundi est de 36%,
3) mon TO lorsque la météo est "favorable" de 56%,
4) mon TO hors vacances scolaires est de 44%,
calcul pour eq1)
(a_1+...+a_31) / 31 = 44%
calcul pour eq2) (regarder un calendrier...)
( a_2+a_9+a_16+a_23+a_30 ) / 5 = 36%
calcul pour eq3)
d'apres
http://www.accuweather.com/fr/fr/lyon/1 ... view=table pour 2016
qu'on suppose identique pour 2017 (...)
on conserve les jours ou pas de précipitation: (0mm/1mm)
(a_1+a_5+a_11+a_13+a_17+a_18+a_19+a_20+a_21+a_24+a_25+a_26+a_27+a_28+a_29+a_30 ) /16 = 56%
calcul pour eq4)
http://www.calendrier-2017.net/vacances-scolaires.phpsamedi 21 décembre 2016 lundi 5 janvier 2017
idem:(a_6+...+a_31)/26 = 44%
on considère le vecteur (a_1,...,a_31)
pour chaque vecteur généré qui satisfait eq1,..,eq4, on prélève les jours correspondant aux conditions eq1,...eq4 idem les jours
Intersection ({a_1,a_31},{a_2,a_9,...},{a_1,a_5,...},{a_6,...}) = a_30
sous réserve a_1,...,a_31 compris dans [0;1]
comme on (je) voit pas de manière analytique pour générer les vecteurs qui nous satisfont, on y va de manière probabilistique:
on génère un vecteur random, et s'il satisfife les 4 eq, on prélève le jour 30.
ce qui nous donne
- Code: Tout sélectionner
eps=0.01;
lb1=0.44-eps;
ub1=0.44+eps;
lb2=0.36-eps;
ub2=0.36+eps;
lb3=0.56-eps;
ub3=0.56+eps;
lb4=0.44-eps;
ub4=0.44+eps;
N=1000000;
vals = [];
for i=1:N
d=rand(1,31);
%eq1
s=sum(d)/31;
if lb1>s || s>ub1
continue
end
%eq2
s=(d(2)+d(9)+d(16)+d(23)+d(30))/5;
if lb2>s || s>ub2
continue
end
%eq3
s=(d(1)+d(5)+d(11)+d(13)+d(17)+d(18)+d(19)+d(20)+d(21)+d(24)+d(25)+d(26)+d(27)+d(28)+d(29)+d(30))/16;
if lb3>s || s>ub3
continue
end
%eq4
s=(d(6)+d(7)+d(8)+d(9)+d(10)+d(11)+d(12)+d(13)+d(14)+d(15)+d(16)+d(17)+d(18)+d(19)+d(20)+d(21)+d(22)+d(23)+d(24)+d(25)+d(26)+d(27)+d(28)+d(29)+d(30)+d(31))/26;
if lb4>s || s>ub4
continue
end
vals(1+length(vals)) = d(30);
end
nbFound=length(vals)
avg=mean(vals)
- Code: Tout sélectionner
octave:18> simu
nbFound = 22
avg = 0.60955
octave:19> simu
nbFound = 19
avg = 0.61738
octave:20> simu
nbFound = 9
avg = 0.56893
octave:21> simu
nbFound = 27
avg = 0.61858
octave:22> simu
nbFound = 9
avg = 0.48822
un TO d'environ 0.58054 pour lundi de janvier avec meteo ok et hors vacance scolaire