Author: Not specified Language: c
Description: Not specified Timestamp: 2013-05-27 17:37:21 +0000
View raw paste Reply
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. #define R 3
  8. #define M 7
  9.  
  10. // xronos skepsis, diktio, cpuApp, diskApp, diskData2, diskData1, cpuData
  11.  double d[M][R]={{2500,4000,7500},{2,4,7},{20,48,75},{33,57,90},{31,50,95},{14,25,44},{36,57,91}};    
  12.  
  13. // double d[M][R]={{2500,4000,7500},{2,4,7},{16.7,40,62.5},{23.6,40.7,64.3},{31,50,95},{14,25,44},{36,57,91}}; 1h lush
  14.  
  15.  
  16. // double d[M][R]={{2500,4000,7500},{2,4,7},{20,48,75},{33,57,90},{23.8,38.5,73.1},{14,25,44},{36,57,91}}; 2h lush
  17.  
  18.  
  19. double n[M][R],r[M][R],l[R],ro[M][R],T[R];
  20. int N[R]={38,67,20};
  21. double approx=0.0001;
  22.  
  23. double apoliti(double a,double b) {
  24.     if(a>b) return a-b;
  25.     else return b-a;
  26. }
  27.  
  28.  
  29. //pollaplasiastis a(k)
  30. double a(int k){
  31.      return (k <= 4) ? (0.45+0.55*k) : 2.65;   //gia cpu me 4cores
  32.     // return (k <= 8) ? (0.56+0.44*k) : 4.08;  gia cpu me 8cores
  33. }
  34.  
  35.  
  36.  
  37. //ypologismoi katanomhs synolikou arithmou pelatwn stathmou 1
  38. double p(int k,int cat1){
  39.     if (k==0) {
  40.         double result=0,sum=0;
  41.         double g=1;
  42.         for (int j=0;j<R;j++) result+=l[j]*d[6][j];
  43.         for (int kk=1;kk<=cat1;kk++){
  44.             g=1;
  45.             for (int ll=1;ll<=kk;ll++){
  46.                 g=g*(result/a(ll));
  47.             }
  48.             sum+=g;
  49.         }
  50.         return (1/(1+sum));
  51.     }
  52.     else {
  53.         double result=0;
  54.         for (int j=0;j<R;j++) result+=l[j]*d[6][j];
  55.         result=result/a(k);
  56.         return result*p(k-1,cat1);
  57.     }
  58. }
  59.  
  60. int main() {
  61.     double temp;
  62.     double sum1[R],sum2[M];
  63.     int cont=1;
  64.    
  65.    
  66.    
  67.  
  68.     for(int i=0;i<M;i++) for(int j=0;j<R;j++) n[i][j]=(double)N[j]/M;
  69.     while(cont){
  70.         cont=0;
  71.         //r gia 0,1 (kathisterisis)
  72.         for(int k=0;k<R;k++) {
  73.             r[0][k]=d[0][k];
  74.             sum1[k]=r[0][k];
  75.             T[k]=r[0][k];
  76.                         r[1][k]=d[1][k];
  77.             sum1[k]+=r[1][k];
  78.             T[k]+=r[1][k];
  79.         }
  80.         // r gia  2,3,4,5 (anamonis)
  81.         for(int k=0;k<M;k++) sum2[k]=0;
  82.         for(int i=0;i<M;i++)
  83.             for(int j=0;j<R;j++)
  84.                 sum2[i]+=n[i][j];
  85.         for(int i=2;i<(M-1);i++)
  86.             for(int j=0;j<R;j++){
  87.                 r[i][j]=d[i][j]*(1+((N[j]-1)/N[j])*n[i][j]+sum2[i]-n[i][j]);
  88.                 T[j]+=r[i][j];
  89.                 sum1[j]+=r[i][j];
  90.             }
  91.         //r gia stathmo 6
  92.         for (int j=0;j<R;j++){
  93.             double s=0;
  94.             for (int k=1;k<=N[j];k++){
  95.                 s+=(double)k*p(k-1,N[j])/a(k);
  96.             }
  97.             r[6][j]=d[6][j]*s;
  98.             T[j]+=r[6][j];
  99.             sum1[j]+=r[6][j];
  100.         }
  101.  
  102.         //ypologismos tou lamda
  103.         for(int j=0;j<R;j++)
  104.             l[j]=N[j]/sum1[j];
  105.                        
  106.         //elegxos syglisis
  107.         for(int i=0;i<M;i++)
  108.             for(int j=0;j<R;j++){
  109.                 ro[i][j]=l[j]*d[i][j];
  110.                 temp=l[j]*r[i][j];
  111.                
  112.                 if((apoliti(temp,n[i][j]))>approx){
  113.                     cont=1;
  114.                 }
  115.                 n[i][j]=temp;
  116.  
  117.             }
  118.     }
  119.     for(int k=0;k<R;k++) cout << l[k] <<","<<T[k]<< "\n";
  120.     cout<<"ro\n";
  121.     for(int i=0;i<M;i++) for(int j=0;j<R;j++) cout<< "i,j="<< i<<","<<j<<","<<ro[i][j]<<"\n";
  122.     return 0;
  123. }
  124.  
View raw paste Reply