2015-05-21 41 views
6

Attualmente sto cercando di capire le frecce e il FRP e mi sono imbattuto in una domanda che non riesco a mappare a FRP, ovvero come modellare una rete stradale.Utilizzo di FRP per modellare la rete stradale con inceppamenti

Ho pensato di modellare una rete stradale come frecce, dove ogni freccia rappresenta un segmento stradale. Accetta flussi di auto in luoghi e tempi e produce lo stesso tipo, anche se con posizioni e tempi diversi.

Fin qui tutto bene. Ma questo modello non tiene conto, che i segmenti potrebbero rimanere bloccati. Mentre ogni segmento potrebbe rispondere al traffico pesante e ritardare sempre di più le auto, più congestionato diventa, non ci sarebbe alcun effetto di ristagno, cioè l'inceppamento non si propagherebbe all'indietro verso altri segmenti della strada.

Ho il sospetto che sto applicando troppo OO pensando qui, invece di concentrarsi su ciò che deve essere calcolato, ma non riesco a farlo bene nella mia testa.

  • Come è possibile modellare una rete stradale con frecce in modo da tenere conto degli effetti di retromarcia?
+0

che cosa è esattamente l'effetto * * ristagno - si tratta solo di ingorgo che si propagano a ritroso attraverso le strade? - come nota a margine: mentre interessante questa domanda sarà molto probabilmente estesa per questo tipo di sito FAQ - avere qualcosa da mostrare ancora e un problema concreto (ad esempio: come hai modellato le tue strade - nel codice;)) – Carsten

+0

Sì l'effetto backwater è come descrivi. No, non ho alcun codice da mostrare, perché credo di dover risolvere prima questo problema concettuale. –

+2

Quanti modelli di sistemi discreti hai fatto? Hai usato software come [Arena] (https://en.wikipedia.org/wiki/Arena_%28software%29) prima (è quello a cui sono stato esposto all'università, ma ce ne sono sicuramente altri)? Per codificare qualcosa di simile in frecce o FRP, dovrai dedicare molto tempo a pensare al modello che desideri utilizzare e a sperimentare come farlo modellare in uno di questi paradigmi.Si potrebbe anche prendere in considerazione qualcosa come 'Pipe's, in quanto ha una comunicazione bidirezionale per ogni canale. – bheklilr

risposta

2

Il problema è che nelle frecce e in FRP il flusso di informazioni è in generale unidirezionale. Pensa a una freccia FRP come a un pezzo di circuito digitale. L'output di un elemento del circuito non dipende da ciò che è collegato ad esso - semplicemente "offre" l'output a chiunque sia interessato. Questo è descritto anche visivamente funzioni primitive segnale nel Yampa overview:

Yampa - signal functions

sua situazione è diversa. Lo stato di un segmento di una strada dipende sia dal segmento successivo sia da quello precedente: le auto arrivano dalla precedente, ma se le auto non possono andare al prossimo, devono rimanere. È proprio come una pipa con acqua corrente. Se chiudi il tubo alla sua estremità, l'acqua si ferma e le informazioni a riguardo si propagano all'indietro attraverso il tubo alla velocità del suono nell'acqua.

Quindi ogni segmento di strada dovrà avere 2 ingressi: un detto diciamo quante macchine possono accettare il segmento successivo e quante macchine provengono dal segmento precedente (che dovrebbe sempre essere inferiore o uguale al numero di auto che il segmento può accettare al momento). Ciò significa che il flusso del segnale FRP sarà effettivamente circolare. Per questo avrete bisogno dei cicli , mostrati nell'ultima immagine nel diagramma sopra, che sono catturati dalla classe di tipo ArrowLoop. Molto probabilmente avrai una funzione di associazione personalizzata per i segmenti stradali che creeranno internamente i loop richiesti. Si noti che ci deve essere un ritardo di tempo in un ciclo, per evitare che diventi divergente, il che ha senso perché richiede un po 'di tempo prima che le auto passino da un segmento all'altro.

(io forse ampliare la risposta con un esempio, se avrò più tempo.)

+0

Petr, sembri capire completamente il mio problema. Ho avuto pensieri simili: un segmento ha bisogno di due input! Quello che mi sto chiedendo è il seguente: chi dice che il calcolo deve restituire le auto? Il calcolo non deve necessariamente seguire il flusso delle auto, ma potrebbe calcolare "qualcosa" dai lati a monte e a valle di un segmento. Ma non sono in grado di finire questo treno di pensieri. –