Advertisement
575

Untitled

575
May 26th, 2024
507
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. void print_params(const vector<pair<string, double>>& params) {
  8.     for (const auto& param : params) {
  9.         cout << param.first << " = " << param.second << endl;
  10.     }
  11. }
  12.  
  13. vector<pair<string, double>> get_params_rejections(int n, double mu, double lmbd, double rho, double income_unit, double expenses_unit) {
  14.     vector<pair<string, double>> params;
  15.     vector<double> p = {1};
  16.     for (int i = 1; i <= n; ++i) {
  17.         p[0] += pow(rho, i) / tgamma(i + 1);
  18.     }
  19.     p[0] = pow(p[0], -1);
  20.     for (int i = 1; i <= n; ++i) {
  21.         p.push_back(pow(rho, i) / tgamma(i + 1) * p[0]);
  22.     }
  23.     params.push_back({"P_otk", p.back()});
  24.     params.push_back({"Q", 1 - p.back()});
  25.     double A = lmbd * (1 - p.back());
  26.     params.push_back({"A", A});
  27.     params.push_back({"L_ob", A / mu});
  28.     params.push_back({"k_zag", (A / mu) / n});
  29.     params.push_back({"economic_efficiency", income_unit * A - expenses_unit * n});
  30.  
  31.     return params;
  32. }
  33.  
  34. vector<pair<string, double>> get_params_endless_queue(int n, double mu, double lmbd, double rho, double income_unit, double expenses_unit) {
  35.     vector<pair<string, double>> params;
  36.     vector<double> p = {1};
  37.     for (int i = 1; i <= n; ++i) {
  38.         p[0] += pow(rho, i) / tgamma(i + 1);
  39.     }
  40.     p[0] += pow(rho, n + 1) / (tgamma(n + 1) * (n - rho));
  41.     p[0] = pow(p[0], -1);
  42.     for (int i = 1; i <= n; ++i) {
  43.         p.push_back(pow(rho, i) / tgamma(i + 1) * p[0]);
  44.     }
  45.     for (int i = 1; i < 150; ++i) {
  46.         p.push_back(pow(rho, n + i) / (tgamma(n + 1) * pow(n, i)) * p[0]);
  47.     }
  48.     double P_och = pow(rho, n + 1) * p[0] / (tgamma(n + 1) * (n - rho));
  49.     params.push_back({"P_och", P_och});
  50.     params.push_back({"P_otk", 0});
  51.     params.push_back({"Q", 1});
  52.     double A = lmbd;
  53.     params.push_back({"A", A});
  54.     double L_ob = A / mu;
  55.     params.push_back({"L_ob", L_ob});
  56.     double L_och = n * P_och / (n - rho);
  57.     params.push_back({"L_och", L_och});
  58.     params.push_back({"L_syst", L_ob + L_och});
  59.     params.push_back({"T_ob", L_ob / lmbd});
  60.     params.push_back({"T_och", L_och / lmbd});
  61.     params.push_back({"T_syst", (L_ob + L_och) / lmbd});
  62.     params.push_back({"economic_efficiency", income_unit * A - expenses_unit * n});
  63.  
  64.     return params;
  65. }
  66.  
  67. vector<pair<string, double>> get_params_limited_queue(int n, int m, double mu, double lmbd, double rho, double income_unit, double expenses_unit) {
  68.     vector<pair<string, double>> params;
  69.     vector<double> p = {1};
  70.     for (int i = 1; i <= n; ++i) {
  71.         p[0] += pow(rho, i) / tgamma(i + 1);
  72.     }
  73.     p[0] += pow(rho, n + 1) * (1 - pow(rho / n, m)) / (tgamma(n + 1) * n * (1 - rho / n));
  74.     p[0] = pow(p[0], -1);
  75.     for (int i = 1; i <= n; ++i) {
  76.         p.push_back(pow(rho, i) / tgamma(i + 1) * p[0]);
  77.     }
  78.     for (int i = 1; i <= m; ++i) {
  79.         p.push_back(pow(rho, n + i) / (tgamma(n + 1) * pow(n, i)) * p[0]);
  80.     }
  81.     double P_och = pow(rho, n + 1) * (1 - pow(rho / n, m)) / (tgamma(n + 1) * n * (1 - rho / n)) * p[0];
  82.     params.push_back({"P_och", P_och});
  83.     double P_otk = pow(rho, n + m) / (pow(n, m) * tgamma(n + 1)) * p[0];
  84.     params.push_back({"P_otk", P_otk});
  85.     params.push_back({"Q", 1 - P_otk});
  86.     double A = lmbd * (1 - P_otk);
  87.     params.push_back({"A", A});
  88.     double L_ob = A / mu;
  89.     params.push_back({"L_ob", L_ob});
  90.     double L_och = pow(rho, n + 1) / (n * tgamma(n + 1)) * (1 - pow(rho / n, m) * (m + 1 - m * rho / n)) / pow(1 - rho / n, 2) * p[0];
  91.     params.push_back({"L_och", L_och});
  92.     params.push_back({"L_syst", L_ob + L_och});
  93.     params.push_back({"T_ob", L_ob / lmbd});
  94.     params.push_back({"T_och", L_och / lmbd});
  95.     params.push_back({"T_syst", (L_ob + L_och) / lmbd});
  96.     params.push_back({"economic_efficiency", income_unit * A - expenses_unit * n});
  97.  
  98.     return params;
  99. }
  100.  
  101. int main() {
  102.     double t_oj = 7;
  103.     double t_obs = 6.5;
  104.     double mu = 1 / t_obs;
  105.     double lmbd = 1 / t_oj;
  106.     double rho = lmbd / mu;
  107.     double income_unit = 9000;
  108.     double expenses_unit = 300;
  109.  
  110.     cout << "mu = " << mu << endl;
  111.     cout << "lmbd = " << lmbd << endl;
  112.     cout << "t_obs = " << t_obs << endl;
  113.     cout << "t_oj = " << t_oj << endl;
  114.     cout << "rho = " << rho << endl;
  115.     cout << "income_unit = " << income_unit << endl;
  116.     cout << "expenses_unit = " << expenses_unit << endl;
  117.  
  118.     int n = 1;
  119.  
  120.     cout << "n = " << n << endl;
  121.  
  122.     n = 3;
  123.     cout << "n = " << n << endl;
  124.  
  125.     auto params_rejections = get_params_rejections(n, mu, lmbd, rho, income_unit, expenses_unit);
  126.     print_params(params_rejections);
  127.  
  128.     n = 1;
  129.     cout << "n = " << n << endl;
  130.     cout << "rho/n = " << rho / n << endl;
  131.  
  132.     auto params_endless_queue_1 = get_params_endless_queue(n, mu, lmbd, rho, income_unit, expenses_unit);
  133.     print_params(params_endless_queue_1);
  134.  
  135.     n = 4;
  136.     cout << "n = " << n << endl;
  137.     cout << "rho/n = " << rho / n << endl;
  138.  
  139.     auto params_endless_queue_4 = get_params_endless_queue(n, mu, lmbd, rho, income_unit, expenses_unit);
  140.     print_params(params_endless_queue_4);
  141.  
  142.     n = 1;
  143.     int m = 3;
  144.     cout << "n = " << n << endl;
  145.     cout << "m = " << m << endl;
  146.     cout << "rho/n = " << rho / n << endl;
  147.  
  148.     auto params_limited_queue_1_3 = get_params_limited_queue(n, m, mu, lmbd, rho, income_unit, expenses_unit);
  149.     print_params(params_limited_queue_1_3);
  150.  
  151.     n = 2;
  152.     m = 4;
  153.     cout << "n = " << n << endl;
  154.     cout << "m = " << m << endl;
  155.     cout << "rho/n = " << rho / n << endl;
  156.  
  157.     auto params_limited_queue_2_4 = get_params_limited_queue(n, m, mu, lmbd, rho, income_unit, expenses_unit);
  158.     print_params(params_limited_queue_2_4);
  159.  
  160.     return 0;
  161. }
  162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement