Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- using namespace std;
- void print_params(const vector<pair<string, double>>& params) {
- for (const auto& param : params) {
- cout << param.first << " = " << param.second << endl;
- }
- }
- vector<pair<string, double>> get_params_rejections(int n, double mu, double lmbd, double rho, double income_unit, double expenses_unit) {
- vector<pair<string, double>> params;
- vector<double> p = {1};
- for (int i = 1; i <= n; ++i) {
- p[0] += pow(rho, i) / tgamma(i + 1);
- }
- p[0] = pow(p[0], -1);
- for (int i = 1; i <= n; ++i) {
- p.push_back(pow(rho, i) / tgamma(i + 1) * p[0]);
- }
- params.push_back({"P_otk", p.back()});
- params.push_back({"Q", 1 - p.back()});
- double A = lmbd * (1 - p.back());
- params.push_back({"A", A});
- params.push_back({"L_ob", A / mu});
- params.push_back({"k_zag", (A / mu) / n});
- params.push_back({"economic_efficiency", income_unit * A - expenses_unit * n});
- return params;
- }
- vector<pair<string, double>> get_params_endless_queue(int n, double mu, double lmbd, double rho, double income_unit, double expenses_unit) {
- vector<pair<string, double>> params;
- vector<double> p = {1};
- for (int i = 1; i <= n; ++i) {
- p[0] += pow(rho, i) / tgamma(i + 1);
- }
- p[0] += pow(rho, n + 1) / (tgamma(n + 1) * (n - rho));
- p[0] = pow(p[0], -1);
- for (int i = 1; i <= n; ++i) {
- p.push_back(pow(rho, i) / tgamma(i + 1) * p[0]);
- }
- for (int i = 1; i < 150; ++i) {
- p.push_back(pow(rho, n + i) / (tgamma(n + 1) * pow(n, i)) * p[0]);
- }
- double P_och = pow(rho, n + 1) * p[0] / (tgamma(n + 1) * (n - rho));
- params.push_back({"P_och", P_och});
- params.push_back({"P_otk", 0});
- params.push_back({"Q", 1});
- double A = lmbd;
- params.push_back({"A", A});
- double L_ob = A / mu;
- params.push_back({"L_ob", L_ob});
- double L_och = n * P_och / (n - rho);
- params.push_back({"L_och", L_och});
- params.push_back({"L_syst", L_ob + L_och});
- params.push_back({"T_ob", L_ob / lmbd});
- params.push_back({"T_och", L_och / lmbd});
- params.push_back({"T_syst", (L_ob + L_och) / lmbd});
- params.push_back({"economic_efficiency", income_unit * A - expenses_unit * n});
- return params;
- }
- vector<pair<string, double>> get_params_limited_queue(int n, int m, double mu, double lmbd, double rho, double income_unit, double expenses_unit) {
- vector<pair<string, double>> params;
- vector<double> p = {1};
- for (int i = 1; i <= n; ++i) {
- p[0] += pow(rho, i) / tgamma(i + 1);
- }
- p[0] += pow(rho, n + 1) * (1 - pow(rho / n, m)) / (tgamma(n + 1) * n * (1 - rho / n));
- p[0] = pow(p[0], -1);
- for (int i = 1; i <= n; ++i) {
- p.push_back(pow(rho, i) / tgamma(i + 1) * p[0]);
- }
- for (int i = 1; i <= m; ++i) {
- p.push_back(pow(rho, n + i) / (tgamma(n + 1) * pow(n, i)) * p[0]);
- }
- double P_och = pow(rho, n + 1) * (1 - pow(rho / n, m)) / (tgamma(n + 1) * n * (1 - rho / n)) * p[0];
- params.push_back({"P_och", P_och});
- double P_otk = pow(rho, n + m) / (pow(n, m) * tgamma(n + 1)) * p[0];
- params.push_back({"P_otk", P_otk});
- params.push_back({"Q", 1 - P_otk});
- double A = lmbd * (1 - P_otk);
- params.push_back({"A", A});
- double L_ob = A / mu;
- params.push_back({"L_ob", L_ob});
- 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];
- params.push_back({"L_och", L_och});
- params.push_back({"L_syst", L_ob + L_och});
- params.push_back({"T_ob", L_ob / lmbd});
- params.push_back({"T_och", L_och / lmbd});
- params.push_back({"T_syst", (L_ob + L_och) / lmbd});
- params.push_back({"economic_efficiency", income_unit * A - expenses_unit * n});
- return params;
- }
- int main() {
- double t_oj = 7;
- double t_obs = 6.5;
- double mu = 1 / t_obs;
- double lmbd = 1 / t_oj;
- double rho = lmbd / mu;
- double income_unit = 9000;
- double expenses_unit = 300;
- cout << "mu = " << mu << endl;
- cout << "lmbd = " << lmbd << endl;
- cout << "t_obs = " << t_obs << endl;
- cout << "t_oj = " << t_oj << endl;
- cout << "rho = " << rho << endl;
- cout << "income_unit = " << income_unit << endl;
- cout << "expenses_unit = " << expenses_unit << endl;
- int n = 1;
- cout << "n = " << n << endl;
- n = 3;
- cout << "n = " << n << endl;
- auto params_rejections = get_params_rejections(n, mu, lmbd, rho, income_unit, expenses_unit);
- print_params(params_rejections);
- n = 1;
- cout << "n = " << n << endl;
- cout << "rho/n = " << rho / n << endl;
- auto params_endless_queue_1 = get_params_endless_queue(n, mu, lmbd, rho, income_unit, expenses_unit);
- print_params(params_endless_queue_1);
- n = 4;
- cout << "n = " << n << endl;
- cout << "rho/n = " << rho / n << endl;
- auto params_endless_queue_4 = get_params_endless_queue(n, mu, lmbd, rho, income_unit, expenses_unit);
- print_params(params_endless_queue_4);
- n = 1;
- int m = 3;
- cout << "n = " << n << endl;
- cout << "m = " << m << endl;
- cout << "rho/n = " << rho / n << endl;
- auto params_limited_queue_1_3 = get_params_limited_queue(n, m, mu, lmbd, rho, income_unit, expenses_unit);
- print_params(params_limited_queue_1_3);
- n = 2;
- m = 4;
- cout << "n = " << n << endl;
- cout << "m = " << m << endl;
- cout << "rho/n = " << rho / n << endl;
- auto params_limited_queue_2_4 = get_params_limited_queue(n, m, mu, lmbd, rho, income_unit, expenses_unit);
- print_params(params_limited_queue_2_4);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement