-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathqueueing.h
More file actions
84 lines (72 loc) · 2.95 KB
/
Copy pathqueueing.h
File metadata and controls
84 lines (72 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#pragma once
#ifndef SYDEVS_EXAMPLES_QUEUEING_H_
#define SYDEVS_EXAMPLES_QUEUEING_H_
#include <examples/demo/queueing/queueing_closed_system.h>
#include <examples/demo/queueing/two_stage_queueing_closed_system.h>
#include <examples/demo/queueing/parallel_queueing_closed_system.h>
#include <sydevs/systems/simulation.h>
#include <iostream>
namespace sydevs_examples {
using namespace sydevs;
using namespace sydevs::systems;
void queueing()
{
// Perform a simulation using the "queueing" atomic node.
try {
std::cout << "Testing queueing_node" << std::endl;
simulation<queueing_closed_system> sim(2_min, 0, std::cout);
sim.top.job_gen_dt.set_value(5_s);
sim.top.serv_dt.set_value(14_s);
sim.top.queue.job_id_input.print_on_use();
sim.top.queue.job_id_output.print_on_use();
sim.process_remaining_events();
std::cout << "Idle time: " << sim.top.idle_dt.value().rescaled(unit) << std::endl;
}
catch (const system_node::error& e) {
std::cout << "SYSTEM NODE ERROR: " << e.what() << std::endl;
}
catch (const std::exception& e) {
std::cout << "OTHER ERROR: " << e.what() << std::endl;
}
std::cout << std::endl;
// Perform a simulation using the "two-stage queueing" composite node.
try {
std::cout << "Testing two_stage_queueing_node" << std::endl;
simulation<two_stage_queueing_closed_system> sim(2_min, 0, std::cout);
sim.top.job_gen_dt.set_value(5_s);
sim.top.serv_dt.set_value(14_s);
sim.top.queue.job_id_input.print_on_use();
sim.top.queue.queue_A.job_id_output.print_on_use();
sim.top.queue.queue_B.job_id_output.print_on_use();
sim.process_remaining_events();
std::cout << "Idle time: " << sim.top.idle_dt.value().rescaled(unit) << std::endl;
}
catch (const system_node::error& e) {
std::cout << "SYSTEM NODE ERROR: " << e.what() << std::endl;
}
catch (const std::exception& e) {
std::cout << "OTHER ERROR: " << e.what() << std::endl;
}
std::cout << std::endl;
// Perform a simulation using the "parallel queueing" collection node.
try {
std::cout << "Testing parallel_queueing_node" << std::endl;
simulation<parallel_queueing_closed_system> sim(2_min, 0, std::cout);
sim.top.job_gen_dt.set_value(5_s);
sim.top.serv_dt.set_value(14_s);
sim.top.max_n.set_value(3);
sim.top.queue.prototype.print_on_event();
sim.top.queue.prototype.job_id_input.print_on_use();
sim.top.queue.prototype.job_id_output.print_on_use();
sim.process_remaining_events();
std::cout << "Idle time: " << sim.top.idle_dt.value().rescaled(unit) << std::endl;
}
catch (const system_node::error& e) {
std::cout << "SYSTEM NODE ERROR: " << e.what() << std::endl;
}
catch (const std::exception& e) {
std::cout << "OTHER ERROR: " << e.what() << std::endl;
}
}
} // namespace
#endif