Différences
Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
tutoriel:proprietes_logiques [2013/10/25 13:01] 127.0.0.1 modification externe |
tutoriel:proprietes_logiques [2014/09/17 17:21] (Version actuelle) admin |
||
---|---|---|---|
Ligne 685: | Ligne 685: | ||
La logique temporelle nécessite une mémoire événementielle pouvant mémoriser plus d'un fait par type d'évènement (//**maximum_of_internal_event**// > 1) et un seuil d'oubli supérieur à la période de l'horloge ici à 500ms (//**time_span_limit**// > 500). | La logique temporelle nécessite une mémoire événementielle pouvant mémoriser plus d'un fait par type d'évènement (//**maximum_of_internal_event**// > 1) et un seuil d'oubli supérieur à la période de l'horloge ici à 500ms (//**time_span_limit**// > 500). | ||
- | Pour les exemples qui suivent, une mémorisation de cinq faits est souhaitée sur une durée strictement inférieure à 3500ms ; toutefois, cinq événements consécutifs donnent une profondeur strictement inférieure à 2500 ms. | + | Pour les exemples qui suivent, une mémorisation de cinq faits est souhaitée sur une durée strictement inférieure à 3500ms ; toutefois, cinq événements consécutifs donnent une profondeur strictement inférieure à 2500ms. |
Il faut donc modifier la [[doc:langage_nomo?&#la_base_de_connaissances|configuration par défaut]], soit le fichier //tutorial_1.base// : | Il faut donc modifier la [[doc:langage_nomo?&#la_base_de_connaissances|configuration par défaut]], soit le fichier //tutorial_1.base// : | ||
Ligne 695: | Ligne 695: | ||
<header xmlns="http://www.nomoseed.org/project"> ... </header> | <header xmlns="http://www.nomoseed.org/project"> ... </header> | ||
- | <time_span_limit value="3500"/> | + | <time_span_limit value="3500ms"/> |
<maximum_of_maximizations value="1"/> | <maximum_of_maximizations value="1"/> | ||
<maximum_of_internal_events value="5"/> | <maximum_of_internal_events value="5"/> | ||
Ligne 752: | Ligne 752: | ||
Si //**timespan**// multiple de 500ms (puisque //**tolerance** = 0//) est strictement inférieur à 2500ms alors la règle se déclenchera dès qu'un premier évènement acquerra la durée désignée. Elle demeurera sélectionnée à chaque pas puisque le flot d'évènement ne cessera pas de fournir de nouveaux évènements. | Si //**timespan**// multiple de 500ms (puisque //**tolerance** = 0//) est strictement inférieur à 2500ms alors la règle se déclenchera dès qu'un premier évènement acquerra la durée désignée. Elle demeurera sélectionnée à chaque pas puisque le flot d'évènement ne cessera pas de fournir de nouveaux évènements. | ||
- | Si le délai de la conclusion devient supérieur à zéro, dans ce cas la profondeur de la mémoire dépend de la capacité à résorber les délais. Par exemple si le //**delay** = 500//, la profondeur est simplement décalée d'autant. | + | Si le délai de la conclusion devient supérieur à zéro, dans ce cas la profondeur de la mémoire dépend de la capacité à résorber les délais. Par exemple si le //**delay** = 500ms//, la profondeur est simplement décalée d'autant. |
Pour tester l'oubli non par l'écrasement d'évènements mais par leur dépassement du seuil, une solution consiste ici à diviser par deux la fréquence de sélection de //"C1"// en introduisant une prémisse inhibitrice. | Pour tester l'oubli non par l'écrasement d'évènements mais par leur dépassement du seuil, une solution consiste ici à diviser par deux la fréquence de sélection de //"C1"// en introduisant une prémisse inhibitrice. | ||
Ligne 780: | Ligne 780: | ||
<information value="go" tolerance="0"/> | <information value="go" tolerance="0"/> | ||
<credibility value="1" tolerance="0"/> | <credibility value="1" tolerance="0"/> | ||
- | <timespan value="2000" tolerance="0"/> | + | <timespan value="2000 ms" tolerance="0"/> |
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="command" type="motor"> | <conclusion model="tutorial_1" category="command" type="motor"> | ||
Ligne 826: | Ligne 826: | ||
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="conception" type="control"> | <conclusion model="tutorial_1" category="conception" type="control"> | ||
- | <information value="stop" delay="1000"/> | + | <information value="stop" delay="1000 ms"/> |
</conclusion> | </conclusion> | ||
</rule> | </rule> | ||
Ligne 836: | Ligne 836: | ||
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="conception" type="control"> | <conclusion model="tutorial_1" category="conception" type="control"> | ||
- | <information value="go" delay="INF"/> | + | <information value="go" delay="MAX"/> |
</conclusion> | </conclusion> | ||
</rule> | </rule> | ||
Ligne 863: | Ligne 863: | ||
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="conception" type="control"> | <conclusion model="tutorial_1" category="conception" type="control"> | ||
- | <information value="go" delay="500"/> | + | <information value="go" delay="500 ms"/> |
</conclusion> | </conclusion> | ||
</rule> | </rule> | ||
Ligne 869: | Ligne 869: | ||
</code> | </code> | ||
- | A noter que l'ajout de prémisses peut transformer une horloge en "boucle tant que". | + | À noter que l'ajout de prémisses peut transformer une horloge en "boucle tant que". |
==== Les séries temporelles ==== | ==== Les séries temporelles ==== | ||
Ligne 976: | Ligne 976: | ||
<information value="red" tolerance="0" /> | <information value="red" tolerance="0" /> | ||
<credibility value="1" tolerance="INF"/> | <credibility value="1" tolerance="INF"/> | ||
- | <timespan value="500" tolerance="0"/> | + | <timespan value="500 ms" tolerance="0"/> |
</premise> | </premise> | ||
<premise model="tutorial_1" category="perception" type="hue"> | <premise model="tutorial_1" category="perception" type="hue"> | ||
Ligne 999: | Ligne 999: | ||
<information value="red" tolerance="0" /> | <information value="red" tolerance="0" /> | ||
<credibility value="1" tolerance="INF"/> | <credibility value="1" tolerance="INF"/> | ||
- | <timespan value="500" tolerance="50"/> | + | <timespan value="500 ms" tolerance="50"/> |
</premise> | </premise> | ||
<premise model="tutorial_1" category="perception" type="hue"> | <premise model="tutorial_1" category="perception" type="hue"> | ||
Ligne 1080: | Ligne 1080: | ||
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="prediction" type="hue"> | <conclusion model="tutorial_1" category="prediction" type="hue"> | ||
- | <information value="red_prediction" delay="1500"/> | + | <information value="red_prediction" delay="1500 ms"/> |
</conclusion> | </conclusion> | ||
</rule> | </rule> | ||
Ligne 1097: | Ligne 1097: | ||
<information value="red_prediction" tolerance="0"/> | <information value="red_prediction" tolerance="0"/> | ||
<credibility value="1" tolerance="INF"/> | <credibility value="1" tolerance="INF"/> | ||
- | <timespan value="1500" tolerance="50"/> | + | <timespan value="1500 ms" tolerance="50"/> |
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="check" type="hue"> | <conclusion model="tutorial_1" category="check" type="hue"> | ||
Ligne 1153: | Ligne 1153: | ||
</code> | </code> | ||
- | Le schème "management_remember" qui permet de mettre en place ou défaire un état //red// ou //bleu//. Lorsque l'agent est activé, aucune intention //remember// n'est présente. Dès que l'agent perçoit une teinte de la dalle, la règle sélectionnée correspond soit //"RR1"// soit //"RB1"//. Ces règles produisent un évènement sans délai de sorte que toutes les précédentes intentions sont éliminées. Elles autorisent ensuite la production d'évènements intentionnels avec un délai infini via respectivement //"RR2"// et //"RB2"//. | + | Le schème "management_remember" qui permet de mettre en place ou défaire un état //red// ou //bleu//. Lorsque l'agent est activé, aucune intention //remember// n'est présente. Dès que l'agent perçoit une teinte de la dalle, la règle sélectionnée correspond soit //"RR1"// soit //"RB1"//. Ces règles produisent un évènement sans délai de sorte que toutes les précédentes intentions sont éliminées. Elles autorisent ensuite la production d'évènements intentionnels avec un délai maximal via respectivement //"RR2"// et //"RB2"//. |
L'état //bleu// ou //red// est représenté à la fois par un événement avec un indice temporel nul et par un évènement intentionnel. | L'état //bleu// ou //red// est représenté à la fois par un événement avec un indice temporel nul et par un évènement intentionnel. | ||
Ligne 1176: | Ligne 1176: | ||
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="conception" type="remember"> | <conclusion model="tutorial_1" category="conception" type="remember"> | ||
- | <information value="red" delay="INF"/> | + | <information value="red" delay="MAX"/> |
</conclusion> | </conclusion> | ||
</rule> | </rule> | ||
Ligne 1196: | Ligne 1196: | ||
</premise> | </premise> | ||
<conclusion model="tutorial_1" category="conception" type="remember"> | <conclusion model="tutorial_1" category="conception" type="remember"> | ||
- | <information value="bleu" delay="INF"/> | + | <information value="bleu" delay="MAX"/> |
</conclusion> | </conclusion> | ||
</rule> | </rule> | ||
</scheme> | </scheme> | ||
</code> | </code> |