You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.0 KiB

  1. // polling example [IT90]
  2. // gxn/dxp 26/01/00
  3. ctmc
  4. const int N=6;
  5. const double mu;
  6. const double gamma;
  7. //const double mu= 1;
  8. //const double gamma= 200;
  9. //const double lambda= mu/N;
  10. module server
  11. s : [1..6]; // station
  12. a : [0..1]; // action: 0=polling, 1=serving
  13. [loop1a] (s=1)&(a=0) -> gamma : (s'=s+1);
  14. [loop1b] (s=1)&(a=0) -> gamma : (a'=1);
  15. [serve1] (s=1)&(a=1) -> mu : (s'=s+1)&(a'=0);
  16. [loop2a] (s=2)&(a=0) -> gamma : (s'=s+1);
  17. [loop2b] (s=2)&(a=0) -> gamma : (a'=1);
  18. [serve2] (s=2)&(a=1) -> mu : (s'=s+1)&(a'=0);
  19. [loop3a] (s=3)&(a=0) -> gamma : (s'=s+1);
  20. [loop3b] (s=3)&(a=0) -> gamma : (a'=1);
  21. [serve3] (s=3)&(a=1) -> mu : (s'=s+1)&(a'=0);
  22. [loop4a] (s=4)&(a=0) -> gamma : (s'=s+1);
  23. [loop4b] (s=4)&(a=0) -> gamma : (a'=1);
  24. [serve4] (s=4)&(a=1) -> mu : (s'=s+1)&(a'=0);
  25. [loop5a] (s=5)&(a=0) -> gamma : (s'=s+1);
  26. [loop5b] (s=5)&(a=0) -> gamma : (a'=1);
  27. [serve5] (s=5)&(a=1) -> mu : (s'=s+1)&(a'=0);
  28. [loop6a] (s=6)&(a=0) -> gamma : (s'=1);
  29. [loop6b] (s=6)&(a=0) -> gamma : (a'=1);
  30. [serve6] (s=6)&(a=1) -> mu : (s'=1)&(a'=0);
  31. endmodule
  32. module station1
  33. s1 : [0..1];
  34. [loop1a] (s1=0) -> 1 : (s1'=0);
  35. [] (s1=0) -> mu/N : (s1'=1);
  36. [loop1b] (s1=1) -> 1 : (s1'=1);
  37. [serve1] (s1=1) -> 1 : (s1'=0);
  38. endmodule
  39. // construct further stations through renaming
  40. module station2 = station1 [s1=s2, loop1a=loop2a, loop1b=loop2b, serve1=serve2] endmodule
  41. module station3 = station1 [s1=s3, loop1a=loop3a, loop1b=loop3b, serve1=serve3] endmodule
  42. module station4 = station1 [s1=s4, loop1a=loop4a, loop1b=loop4b, serve1=serve4] endmodule
  43. module station5 = station1 [s1=s5, loop1a=loop5a, loop1b=loop5b, serve1=serve5] endmodule
  44. module station6 = station1 [s1=s6, loop1a=loop6a, loop1b=loop6b, serve1=serve6] endmodule
  45. // cumulative rewards
  46. //rewards "waiting" // expected time the station 1 is waiting to be served
  47. // s1=1 & !(s=1 & a=1) : 1;
  48. //endrewards
  49. //rewards "served" // expected number of times station1 is served
  50. // [serve1] true : 1;
  51. //endrewards
  52. init
  53. s = 1 &
  54. a = 0 &
  55. s1 = 0 &
  56. s2 = 0 &
  57. s3 = 0 &
  58. s4 = 0 &
  59. s5 = 0 &
  60. s6 = 0
  61. endinit