-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlifeExpectancy.py
33 lines (26 loc) · 1.3 KB
/
lifeExpectancy.py
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
class LifeExpectancy:
"""modelisation de la duree de vie basee sur Weibull (la baignoire)
http://fr.wikipedia.org/wiki/Loi_de_Weibull#Application_particuli.C3.A8re
pour l'instant simplification par une courbe affine par morceaux :
- mortalite infantile (decroissante)
- constant pendant la vie "adulte"
- mort de vieillesse (croissante)
La courbe donne le %age de chance de mourir de mort naturelle
Definie par les valeurs suivantes :
- mortalite a la naissance (0-100)
- mortalite "adulte" (0-100 et <mortalite a la naissance)
- age de debut de "degenerescence"
- pente de "degenerescence"
TODO definir des quadruplets "valables" pour faire des tests"""
def __init__(self, infantMortality, adultMortality, adultStop, mortality):
self.infantMortality = infantMortality
self.adultMortality = adultMortality
self.adultStop = adultStop
self.mortality = mortality
def currentMortality(self, age):
if age < 3: # age arbitraire de fin de mortalite infantile
return (self.infantMortality+((self.adultMortality-self.infantMortality)/3)*age)
elif age <= self.adultStop:
return self.adultStop
else:
return (self.adultMortality+(self.mortality/(age-self.adultStop))*age)