10.05.2013 Views

Texto base de la asignatura - UNED

Texto base de la asignatura - UNED

Texto base de la asignatura - UNED

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MODELADO DE SISTEMAS MEDIANTE DEVS<br />

}<br />

recibe {tn_d, tl_d} <strong>de</strong> cada hijo d<br />

or<strong>de</strong>na <strong>la</strong> lista <strong>de</strong> eventos<br />

tl = max{ tl_d | d en D }<br />

tn = min{ tn_d | d en D }<br />

envía {tn,tl} a parent<br />

Como pue<strong>de</strong> verse en el código anterior, <strong>la</strong> acciones que realiza cuando recibe el<br />

mensaje-i son <strong>la</strong>s siguientes:<br />

1. Reenvía a sus simu<strong>la</strong>dores hijo el mensaje-i.<br />

2. Cada uno <strong>de</strong> los simu<strong>la</strong>dores hijo procesa el mensaje-i y, una vez hecho esto,<br />

cada uno <strong>de</strong> ellos <strong>de</strong>vuelve una pareja <strong>de</strong> valores {tnd, tld} al Devs-coordinator.<br />

Así pues, el Devs-coordinator recibe parejas <strong>de</strong> valores {tnd, tld} para todo<br />

d ∈ D, don<strong>de</strong> D es el conjunto <strong>de</strong> simu<strong>la</strong>dores hijo <strong>de</strong> este Devs-coordinator.<br />

3. Los instantes en que están p<strong>la</strong>nificados los eventos internos <strong>de</strong> los hijos se<br />

or<strong>de</strong>nan cronológicamente, <strong>de</strong> más próximo a más lejano en el tiempo, en una<br />

lista o el calendario <strong>de</strong> eventos. En caso <strong>de</strong> coinci<strong>de</strong>ncia en el instante <strong>de</strong><br />

disparo <strong>de</strong>l evento interno <strong>de</strong> varios hijos, se usa <strong>la</strong> función Select <strong>de</strong>l mo<strong>de</strong>lo<br />

DEVS acop<strong>la</strong>do para <strong>de</strong>cidir cómo <strong>de</strong>ben or<strong>de</strong>narse.<br />

4. Se escoge el mayor valor <strong>de</strong> tld y se asigna a tl.<br />

5. Se escoge el menor valor <strong>de</strong> tnd y se asigna a tn. Así pues, tn contiene el más<br />

reciente <strong>de</strong> los eventos internos p<strong>la</strong>nificados en los simu<strong>la</strong>dores hijo.<br />

6. Finalmente, el Devs-coordinator envía los valores <strong>de</strong> tn y tl obtenidos anteriormente<br />

a su simu<strong>la</strong>dor padre.<br />

Mensaje <strong>de</strong> evento interno<br />

La siguiente cláusu<strong>la</strong> when realiza <strong>la</strong>s acciones que se ejecutan cuando el Devscoordinator<br />

recibe un mensaje-* <strong>de</strong> su simu<strong>la</strong>dor padre. La cláusu<strong>la</strong> when es <strong>la</strong><br />

siguiente:<br />

164<br />

when ( recibe mensaje-* (*,t) en el instante t ) {<br />

if t != tn then error: ma<strong>la</strong> sincronización<br />

d* = primer elemento en <strong>la</strong> lista <strong>de</strong> eventos<br />

envia mensaje-* (*,t) a d*

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!