Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.186.173] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Есть такая задача: автобусный маршрут (кольцевой) состоит из n остановок. На каждую остановку приходят пассажиры, которым с некоторой вероятностью надо ехать на какую-то другую остановку. По маршруту курсирует автобус (один). Автобус приезжает на остановку, высаживает пассажиров, которым надо выходить на этой остановке, запускает новых и едет дальше. Время стоянки автобуса (tпост + tпер*(nвых+nвх)). tпост, tпер - константы. nвых, nвх - количество выходящих/входящих пассажиров. Реализовать это дело надо на пользовательских списках. У меня пока что получается вот так (еще не реализована стоянка автобуса, затраты на перемещение между остановками и ограниченность размера автобуса). Чувство, что делаю что-то принципиально неправильное... Чувство усиливается при просмотре статистики - в блоки Assign Param1,FN$Func для каждой остановки входит больше транзакций, чем в соответствующий список (user chain). Подскажите, пожалуйста, что не так и как надо... SIMULATE ;определение следующей остановки Next FUNCTION X$II,D5 1,2/2,3/3,4/4,5/5,1 ;функции - определение, до какой остановки ехать Func1 FUNCTION RN100,D9 0,2/0.1,2/0.2,2/0.3,4/0.4,5/0.5,2/0.6,3/0.7,4/1,5 Func2 FUNCTION RN100,D9 0,1/0.1,1/0.2,3/0.3,4/0.4,5/0.5,3/0.6,4/0.7,3/1,5 Func3 FUNCTION RN100,D9 0,1/0.1,1/0.2,2/0.3,4/0.4,5/0.5,4/0.6,1/0.7,2/1,5 Func4 FUNCTION RN100,D9 0,1/0.1,1/0.2,2/0.3,3/0.4,5/0.5,5/0.6,1/0.7,2/1,3 Func5 FUNCTION RN100,D9 0,1/0.1,1/0.2,2/0.3,4/0.4,5/0.5,2/0.6,1/0.7,3/1,4 ;сначала автобус стоит на 1 остановке INITIAL X$II,1 GENERATE (EXPONENTIAL(100,0,3)) ;остановка, на которую пассажир придет SAVEVALUE A,(((RN10)@5)+1) ;определение остановки, на которую пассажир поедет в зависимости от той, на которую пришел Ost1 TEST E X$A,1,Ost2 ASSIGN Param1,FN$Func1 Ost2 TEST E X$A,2,Ost3 ASSIGN Param1,FN$Func2 Ost3 TEST E X$A,3,Ost4 ASSIGN Param1,FN$Func2 Ost4 TEST E X$A,4,Ost5 ASSIGN Param1,FN$Func2 Ost5 TEST E X$A,5,pass_arr ASSIGN Param1,FN$Func2 ;пассажир становится в очередь на остановке pass_arr LINK X$A,FIFO,bus_arr ;автобус приезжает на остановку и забирает с нее пассажиров bus_arr UNLINK X$II,bus_in,ALL ;пассажиры помещаются в автобус bus_in LINK BUS,FIFO,bus_out ;пассажиры, добравшиеся до места назначения, выходят из автобуса bus_out UNLINK E BUS,next_st,,Param1,X$II ;автобус едет на следующую остановку next_st SAVEVALUE II,FN$NEXT TERMINATE GENERATE 480 TERMINATE 1 |
Сообщ.
#2
,
|
|
|
Все так! Но надо вот так
SIMULATE ;определение следующей остановки Next FUNCTION X$II,D5 1,2/2,3/3,4/4,5/5,1 ;функции - определение, до какой остановки ехать Func1 FUNCTION RN100,D9 0,2/0.1,2/0.2,2/0.3,4/0.4,5/0.5,2/0.6,3/0.7,4/1,5 Func2 FUNCTION RN100,D9 0,1/0.1,1/0.2,3/0.3,4/0.4,5/0.5,3/0.6,4/0.7,3/1,5 Func3 FUNCTION RN100,D9 0,1/0.1,1/0.2,2/0.3,4/0.4,5/0.5,4/0.6,1/0.7,2/1,5 Func4 FUNCTION RN100,D9 0,1/0.1,1/0.2,2/0.3,3/0.4,5/0.5,5/0.6,1/0.7,2/1,3 Func5 FUNCTION RN100,D9 0,1/0.1,1/0.2,2/0.3,4/0.4,5/0.5,2/0.6,1/0.7,3/1,4 MFunc FUNCTION X$A,E5 1,FN$Func1/2,FN$Func2/3,FN$Func3/4,FN$Func4/5,FN$Func5 ;сначала автобус стоит на 1 остановке INITIAL X$II,1 GENERATE (EXPONENTIAL(100,0,3)) ;остановка, на которую пассажир придет SAVEVALUE A,(((RN10)@5)+1) ;определение остановки, на которую пассажир поедет в зависимости от той, на которую пришел ASSIGN Param1,FN$MFunc ;пассажир становится в очередь на остановке pass_arr LINK X$A,FIFO GENERATE ,,,1 bus_out UNLINK E BUS,st_out,,Param1,X$II UNLINK X$II,bus_in,(20-CH$BUS) next_st ADVANCE 10 SAVEVALUE II,FN$NEXT TRANSFER ,bus_out st_out TERMINATE bus_in LINK BUS,FIFO GENERATE 485 TERMINATE 1 start 1 другая модель остановки |
Сообщ.
#3
,
|
|
|
спасибо
|