FDDevs/fr

Introduction
FD-DEVS est une restriction de DEVS à un état défini par un ensemble fini d'états discrets. Il peut être défini comme suit : FD-DEVS =  où
 * incomingMessageSet, outgoingMessageSet, StateSet sont des ensembles finis
 * TimeAdvanceTable: StateSet &#8594; R0,&#8734;+
 * InternalTransitionTable: StateSet &#8594; StateSet
 * ExternalTransitionTable: StateSet × incomingMessageSet &#8594; StateSet
 * OutputTable: StateSet &#8594; 2outgoingMsgSet ( = un sous-ensemble de outgoingMsgSet)

Pour préciser les choses :
 * incomingMessageSet
 * X = {(inMsg, Msg) : Msg &isin; incomingMessageSet}
 * pour chaque événement d'entrée Msg, il y a un port d'entrée inMsg et Msg est déposé dessus
 * outgoingMsgSet
 * Y = {(outMsg, Msg): Msg &isin; outgoingMessageSet}b
 * pour chaque événement de sortie Msg, il y a un port de sortie outMsg et admet Msg comme la seule valeur. Les bags d'événements de sortie sont autorisés.
 * StateSet
 * S = {(phase, sigma) : phase &isin; StateSet et sigma &isin; R0,&#8734;+ }
 * les états deviennent les phases en DEVS et une durée sigma est associée
 * TimeAdvanceTable : StateSet &#8594; R0,&#8734;+
 * ta: S&#8594; R0,&#8734;+ où ta(phase, sigma) = sigma.
 * TimeAdvanceTable est utilisée pour assigner la valeur initiale à sigma (la durée totale de l'état).
 * InternalTransitionTable : StateSet &#8594; StateSet
 * &#948;int: S&#8594; S où &#948;int (phase,sigma) = (phase’, TimeAdvanceTable(phase’)) et où phase’ = InternalTransitionTable(phase)
 * InternalTransitionTable détermine la prochaine phase à partir d'une phase donnée
 * ExternalTransitionTable : StateSet × incomingMessageSet &#8594; StateSet
 * &#948;ext: Q × X &#8594; S où &#948;ext (phase, sigma, e, (inMsg, Msg)) = (phase’, TimeAdvanceTable(phase’)) où phase’ = ExternalTransitionTable(phase, Msg) si ExternalTransitionTable(phase, Msg) est défini sinon &#948;ext (phase, sigma, (inMsg, Msg)) = (phase, sigma – e)
 * quand il est défini, ExternalTransitionTable détermine la phase du prochain état en DEVS
 * OutputTable : StateSet &#8594; 2outgoingMsgSet
 * &lambda; : S &#8594; Yb où &lambda;(phase, sigma) = {(outMsg,Msg): Msg &isin; OutputTable(phase)}
 * la sortie du modèle DEVS est obtenue en utilisant OutputTable vis à vis de la phase courante. La sortie peut être vide dans ce cas, aucun événement n'est généré, ou une simple valeur ou un ensemble de valeurs.

La structure
L'extension FSA::FDDevs n'impose rien sur la structure du modèle. Dans la définition du modèle, il faut juste relier les transitions et les sorties aux noms de ports définis.

Les initialisations
L'extension FSA::FDDevs ne nécessite aucun paramètre hormis les paramètres spécifiques au modèle utilisés lors des actions ou des sorties (voir Modèle avec des conditions).