-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathResourcesClass.m
More file actions
84 lines (64 loc) · 2.83 KB
/
Copy pathResourcesClass.m
File metadata and controls
84 lines (64 loc) · 2.83 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
classdef ResourcesClass
%{
Congestion on each road:
c1(n1) = 40 + n1;
c2(n2) = 20 + n2^2;
c3(n3) = 1 + 5 n3^2
[c1 c2 c3]' = [40 20 1]' + [1 0 0]'.*[n1 n2 n3]' + [0 1 1]'.*[n1 n2 n3].^2;
%}
properties
totalResources = 3; % equal to totalRosources
totalIter = 10;
% measurements by platform
numAgentsOnEachResource = []; %zeros(1,numResources);
resourceCongestion = []; %zeros(1,numResources);
numAgentsOnResources_t = []; %zeros(totalIter, totalResources);
resourceCongestion_t = []; %zeros(totalIter, totalResources);
end
methods
% Constructor
function obj = ResourcesClass(numResources, totalIter)
if (nargin > 0)
if isnumeric(numResources)
obj.totalResources = numResources;
obj.totalIter = totalIter;
obj.numAgentsOnEachResource = zeros(1,numResources);
obj.resourceCongestion = zeros(1,numResources);
obj.numAgentsOnResources_t = zeros(totalIter, numResources);
obj.resourceCongestion_t = zeros(totalIter, numResources);
else
error('numResources should be numeric.')
end
end
end
% General Method
function [congestion, obj] = getResourceCosts(obj, numAgentsOnResources, time)
% present code is only for 3 resources
if (size(numAgentsOnResources,2) == 3)
congestion = getRoadCongestionCosts(numAgentsOnResources);
obj.numAgentsOnEachResource = numAgentsOnResources; %zeros(1,numResources);
obj.resourceCongestion = congestion; %zeros(1,numResources);
% archive in time-based manner
obj.numAgentsOnResources_t(time,:) = numAgentsOnResources;
obj.resourceCongestion_t(time,:) = congestion;
else
error('ResourceClass defined only for 3 resources.');
end
end % GET_RESOURCES_COST
function plotResourceCongestion(obj)
fig1 = figure()
subplot(2,1,1)
plot(obj.numAgentsOnResources_t)
xlabel('Time')
ylabel('number of agents on each road')
title('Road Occupancy over time')
legend('r1', 'r2','r3')
subplot(2,1,2)
plot(obj.resourceCongestion_t)
xlabel('Time')
ylabel('congestion costs on each road')
title('Congestion costs over time')
legend('r1', 'r2', 'r3')
end
end % METHODS
end % CLASSDEF