Advertisement
Guest User

Untitled

a guest
Nov 16th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. #define A 0
  5. #define B 1
  6. #define F 1
  7. #define O 0
  8.  
  9. double lamA,
  10. double lamB,
  11. double miuA,
  12. double miuB;
  13. double nmf[2][15];
  14.  
  15. double genExp(double lambda)
  16. {
  17.     double u, x;
  18.     u = (double)rand() / (RAND_MAX + 1);
  19.     x = -1 / lambda*log(1 - u);
  20.     return x;
  21. }
  22.  
  23. double genTr(int mr)
  24. {
  25.     double Tr;
  26.     if (mr == A)
  27.     {
  28.         Tr = genExp(miuA);
  29.     }
  30.     else
  31.     {
  32.         Tr = genExp(miuB);
  33.     }
  34.  
  35.     return Tr;
  36. }
  37.  
  38. int main()
  39. {
  40.     double DS, S, St[16], Tf[16], nf, Tpd, Tr;
  41.     double STf = 0;
  42.     double STr = 0;
  43.     double ceas=0;
  44.     int sd,Nd, nmd,sr,mr;
  45.  
  46.     for (int i = 1; i <= S; ++i)
  47.     {
  48.         nmf[A][i] = 1;
  49.         nmf[B][i] = 2;
  50.     }
  51.  
  52.     for (int i = 1; i <= S; ++i)
  53.     {
  54.         St[i] = F;
  55.     }
  56.  
  57.     nf = S;
  58.     nmd = 0;
  59.    
  60.     sd = -1;
  61.  
  62.     for (int i = 1; i <= S; ++i)
  63.     {
  64.         if ((St[i] == F) && sd == -1 || Tf[sd] > Tf[i])
  65.         {
  66.             sd = i;
  67.         }
  68.     }
  69.     do{
  70.         if (sd != -1)
  71.         {
  72.             ceas += Tr;
  73.             if (nmd > 0)
  74.                 Tr -= Tpd;
  75.             for (int i = 1; i <= S; i++)
  76.             {
  77.                 if (St[i] == F)
  78.                 {
  79.                     Tf[i] -= Tpd;
  80.                 }
  81.             }
  82.             STf += nf + Tpd;
  83.             Nd++;
  84.             nmf[nmd][sd]--;
  85.             nmd++;
  86.             if (nmf[nmd][sd]==0)
  87.             {
  88.                 St[sd] = 0;
  89.                 nf--;
  90.             }
  91.             else if (nmf[nmd][sd] < 0)
  92.             {
  93.                 Tf[Nd] = genExp(lamA + lamB);
  94.             }
  95.             if (nmd == 1){
  96.                 sr = sd;
  97.                 mr = nmd;
  98.                 Tr = genTr(mr);
  99.                 STr += Tr;
  100.             }
  101.         }
  102.  
  103.     } while (ceas<DS);
  104.    
  105.     return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement