Codice di simulazione del raggruppamento del bus [chiuso]

2

Sto avendo un problema particolare da risolvere. Quello che dovrei implementare è una simulazione di transito in autobus in cui ci sono passeggeri che arrivano ad intervalli di tempo generati casualmente e vengono aggiunti in una coda e aspettano che l'autobus arrivi alle fermate dell'autobus e le fermate degli autobus lì e salgono sull'autobus fino a quando la coda è vuota. Si presume che ogni passeggero prende esattamente lo stesso tempo per salire sull'autobus. Poiché la coda è vuota, l'autobus si sposta verso la fermata dell'autobus successiva per la stessa cosa. Ci sono diversi autobus e diverse fermate degli autobus. Diciamo che se una persona che fa la coda ad una fermata dell'autobus è più grande della coda della persona ad un'altra fermata dell'autobus, il bus impiegherà più tempo per riempire a quella fermata e, a causa di ciò, la fermata dell'autobus successiva avrà una coda più grande e ancora una volta il bus ho dovuto aspettare lì per un tempo più lungo. Questo problema continuerà fino a quando gli autobus si raggruppano come un tutt'uno e si spostano uno dietro l'altro. I bus non possono incrociarsi tra loro.

Devo implementarlo in qualsiasi lingua. Penso che Python andrebbe bene per questo lavoro. Positivamente pensando di andare con Python.

Ho provato a suddividere questo problema in parti. Quindi, prima di iniziare le soste sono equidistanti l'una dall'altra e la coda delle persone è vuota. Quindi gli autobus iniziano a muoversi e la coda delle persone inizia ad aumentare e non appena un autobus raggiunge una coda di persone a una particolare fermata dell'autobus, la coda delle persone diminuirà fino a zero e il bus si sposterà alla fermata dell'autobus successiva. Una cosa da notare qui è che la coda delle persone viene troncata in modo che ciascuna operazione di rimozione della coda venga eseguita in un determinato intervallo di tempo. Quindi se 5 persone devono essere rimosse dalla coda, impiegheranno 3 secondi * 5 = 15 secondi per l'intera dequeue o il troncamento di una coda di persone. Il bus al raggiungimento della fermata dell'autobus successivo controllerà se la coda della persona è vuota o no e in caso contrario, si disconnetterà fino a quando non verrà troncata e proseguirà. Questa implementazione, quando estesa per 5 autobus e 15 fermate di autobus, porterà ad accumulare bus in un dato momento, poiché gli autobus non possono incrociarsi tra loro.

Gentilmente dammi alcune idee per renderlo il più semplice possibile perché è qualcosa che devo dimostrare ma non usare da nessuna parte come un'implementazione reale.

    
posta Avineshwar 03.10.2015 - 03:26
fonte

1 risposta

0

Non penso che sia necessario rappresentare i singoli corridori, se non come aggregati numerici. Non lasciare che il fatto che, in inglese (inglese), le persone si allineino in coda per il bus ti fuorvieni su quale struttura dati usare!

Quello che vorrei suggerire è:

Un percorso parametrizzato che rappresenta il percorso del bus, con l'autobus che si ferma come punti lungo il percorso. (Se la tua dimostrazione è grafica, questi possono essere nodi, e avrai una traduzione molto semplice in una b-spline.)

La posizione di ogni bus lungo il percorso, rappresentata come un valore t periodico lungo il percorso.

Un numero di persone su ciascun bus. Potresti rappresentare una percentuale fissa che scende ad ogni fermata, quindi il numero di riders decadono esponenzialmente.

Un numero di persone che aspetta ad ogni fermata. Se le fermate hanno una certa popolazione di potenziali cavalieri e una certa possibilità che qualcuno di loro si presenti al minuto, questo potrebbe essere modellato da una variabile casuale ipergeometrica. Ciò che è importante per la dimostrazione, tuttavia, è che il numero di persone ad ogni fermata aumenta man mano che arriva il prossimo bus (preferibilmente a un tasso asintotico). Potresti semplicemente tirare i dadi ogni minuto, aggiungere i successi e ottenere lo stesso risultato.

    
risposta data 03.10.2015 - 06:30
fonte

Leggi altre domande sui tag