• Aucun résultat trouvé

3.3 Constru tion et Illustration

4.1.2 Implémentation des propriétés

An d'unierles diérentes formes de propriétés tout en gardant leur diéren es, toutes les propriétés sont dénies par un ouple symbole-fon tion.Le symbole représentele nomde lapropriété (son identiant) etlafon tion sert à déterminer à haque instant lavaleur de la propriété.

Les propriétés onstantes possèdent une fon tion onstante, les propriétés dynamiques possèdent une fon tion dénissant la règle d'évolution de la valeur de la propriété. Pour re- présenter es propriétés, nous avons déni des fon tions mathématiques dé rivant desrègles d'évolution, ommeles onstantes, lesfon tionslinéaires, lesfon tionslinéaires bornées (max ou min-et-max), les sigmoïdes, et , auxquellesnous avons rajoutéune lasse représentant les fon tionsévolutivesetune autrepour lesfon tions dépendantes.

Par exemple,dansle adre devaleursnumériquesnouspouvonsavoir:

 Le hamp de per eption,quiestunepropriéténumériquedontlafon tionest onstante représentant lenombre de ases (lerayon) au maximumquel'agent peutper evoir.  L'énergiedel'agent estune propriéténumérique dontlafon tionestlinéaireetdontle

paramètre

t

représenteuneétapedansl'évolution delavaleuret

t + 1

représentel'étape suivante.

 Lafatigue de l'agent est unepropriété numérique dont lafon tion estlinéaire etdont leparamètre

λ

représentelavaleurde lapropriété énergiede l'agent.

Fun tion st = new ConstantFun tion(4); // st(x) = 4 Property per eption = new Property("per eption", st); Fun tion f = new LinearFun tion(-1, 50); // f(x) = -x + 50

// évolution suivant la fon tion f ave 30 omme valeur de départ. Fun tion evo = new EvolutiveFun tion(30, f);

Property energie = new Property("energie", evo);

Fun tion g = new LowBoundedLinearFun tion(-1, 30, 0); // g(x) = min (0, -x + 30) Fun tion dep = new DependantFun tion(energie, g); // dep(x) = g(energie) = g(f(x)) Property fatigue = new Property("fatigue", dep);

Une fon tion linéaire LinearFun tion est onstruite à partir des valeurs a et b de son équation y=ax+b. Une fon tion linéaire inférieure bornée LowBoundedLinearFun tion est onstruite à partir de la borne minimale bm et des valeurs a et b de son équation y= max(bm,ax+b). Une fon tion évolutive EvolutiveFun tion est onstruite à partir d'une valeur de départ et d'une fon tion mathématique xant sa règle d'évolution. Une fon tion dépendante DependantFun tion est onstruite à partir d'une propriété dont elle dépend et d'unefon tionmathématiquexant le al ulàee tuerenprenanten ompte ettepropriété. Pour déterminerlavaleur d'unepropriétédépendante, ilfaut al ulerl'image delavaleur de lapropriété dont elle dépend par lafon tion mathématique xant le al ulà ee tuer.

Pour déterminer lavaleurd'une propriété évolutive, il faut dansunpremier temps déter- minerl'étaped'évolution

e

delavaleur a tuelledelapropriété. Eneet,lavaleurdel'énergie peutêtre modiée par une intera tion subie ou ee tuée, modiant ainsi l'étape d'évolution delapropriété. Ainsi,lavaleurd'unepropriétéévolutivepourl'étape

t + 1

delasimulation,se al uleàpartirdelavaleura tuelledelapropriétéàl'instant

t

.Pour ela,àpartirdelavaleur a tuelle de lapropriété, il faut al uler sonanté édent

xe

(la valeur

x

à l'étape d'évolution

e

delapropriété)parrapportàlafon tiond'évolution

10

.Cet anté édentestunique(lafon tion d'évolutionestinje tive)etilreprésentel'étaped'évolution de lavaleurde lapropriété. Puis, il faut passer à l'étape suivante

xe+1

pour al uler la nouvelle valeur de la propriété. Cette nouvelle valeur orrespond à l'image de l'étape suivante

f (xe+1)

par la fon tion évolutive

f

de lapropriété.

Prenons l'exemple de l'énergie qui est une propriété dynamique évolutive. La valeur de l'énergie évolue à haque pasde temps et suivant ertaines intera tions subies ou ee tuées parl'agent.Lorsqu'unagentee tuel'intera tionmanger,lavaleurdesapropriétéénergieest immédiatement modiée:

manger

ondition : a tor.own(target) garde : -

a tion : a tor.energie = a tor.energie + target.energie destroy(target)

Prenons le as pré is de la gure 4.1 où l'axe des abs isses représentent les étapes de la simulation. Dans ette gure nous pouvons voir qu'à l'étape

t = 0

de la simulation, la

10

Fig. 4.1  Évolution des valeurs des propriétés énergie, fatigue et per eption pendant la simulation. À l'instant 40, l'agent ee tue l'intera tion manger sur une pomme, e qui a pour eet d'augmenter l'énergie de l'agent de 15. La valeur de lapropriété fatigue, qui est dépendante del'énergie, aété hangéeen onséquen e.

valeur de l'énergie vaut

50

. Jusqu'à l'étape

t = 40

de simulation, nous pouvons onfondre l'étapedesimulationetl'étaped'évolution delapropriétéénergie,puisqueau uneintera tion n'a modié la valeur de la propriété énergie(

e = t

). En eet, si la valeur de l'énergie est dénie par la fon tion

evo(x) = −x + 50

, dans e as

evo(0) = 50

. À l'étape suivante de la simulation, la valeur de l'énergie est al ulée par rapport à l'évolution de son anté édent (

x + 1 = 0 + 1 = 1

et

evo(1) = −1 + 50 = 49

).Pour l'étape

t = 39

de lasimulation,l'énergie vaut

11

(

evo(39) = −39 + 50 = 11

).Àl'étape

t = 40

l'agent ee tuel'intera tionmanger,qui augmente son énergie de

15

, la portant à

25

. Pour déterminer la valeur à l'étape

t = 41

de lasimulation, il faut al uler la valeur de l'anté édent à l'étape de la simulation pré édente. À l'étape

t = 40

de la simulation, la propriété énergie est à l'étape

e = 25

d'évolution (

evo(x) = 25 → x = 25

). Don , à l'étape l'étape

t = 41

de la simulation,la propriété énergie està l'étape

e = 26

etsavaleurvaut

24

(

evo(26) = −26 + 50 = 24

).