simtime : [nat]; time : nat;
sit: EdgeSit;
falling: bool;
operations
public TestEnvironment: Network * map World`TMSId to TMS * [nat] ==> TestEnvironment
TestEnvironment(net, tms, t) == ( let - = Environment(net, tms) inskip;
simtime := t; time := 0;
sit := mk_(0,120,0,false,false);
falling := true
);
public Run: () ==> ()
Run() == whilenot isFinished() do ( dcl trafsit: TrafficSituation := {|->}; dcl control: TMS`Control := {|->}; forall e inset network.GetEdgeIds() do trafsit := trafsit ++ {e |-> sit}; forall id insetdom tms_m do (tms_m(id).Step(trafsit)); forall id insetdom tms_m do (tms_m(id).MakeOffers()); forall id insetdom tms_m do (tms_m(id).EvaluateOffers()); forall id insetdom tms_m dolet c = tms_m(id).FinaliseOffers() in control := control ++ c;
IO`printf("%s\nEdge situation: %s\nControl measures: %s\n", [time, sit, control]); time := time+1;
UpdateSit()
);
private UpdateSit: () ==> ()
UpdateSit() == ( if falling then
sit := mk_(sit.#1, sit.#2 - 5, sit.#3, false, false) else
sit := mk_(sit.#1, sit.#2 + 5, sit.#3, false, false); if sit.#2 = 0 and falling then falling := false; if sit.#2 = 120 andnot falling then falling := true;
);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.