-
Notifications
You must be signed in to change notification settings - Fork 2
/
assignCostsMultiunitExtra.m
63 lines (51 loc) · 2.44 KB
/
assignCostsMultiunitExtra.m
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
%%% Determines additional costs due to multipliers lambda_P and lambda_H
function [decided_costs_extra] = assignCostsMultiunitExtra(...
total_nodes, sol_select, time_from, n_tsteps, from_state_map, to_state_map, ...
power_map, heat_map, power_demand, heat_demand, lambda)
Weight1 = 1; Weight2 = 1; % FIXME: why are these not inputs?
av_P_demand = (...
... first and last 46 transitions have zero cost -> transitions from start and to end
Weight1*[zeros(total_nodes,1);
power_demand(time_from(total_nodes+1:end-total_nodes));
zeros(total_nodes,1)] + ...
Weight2*[zeros(total_nodes,1);
power_demand((time_from(total_nodes+1:end-total_nodes) + n_tsteps(total_nodes+1:end-total_nodes))); ...
zeros(total_nodes,1)] ...
)/(Weight1+Weight2);
av_H_demand = (...
Weight1*[zeros(total_nodes,1);
heat_demand(time_from(total_nodes+1:end-total_nodes));
zeros(total_nodes,1)] + ...
Weight2*[zeros(total_nodes,1);
heat_demand((time_from(total_nodes+1:end-total_nodes) + n_tsteps(total_nodes+1:end-total_nodes)));
zeros(total_nodes,1)]...
)/(Weight1+Weight2); % FIXME: why is this unused?
av_lambda = (...
Weight1*[zeros(total_nodes,2);
lambda(time_from(total_nodes+1:end-total_nodes),:);
zeros(total_nodes,2)] + ...
Weight2*[zeros(total_nodes,2);
lambda((time_from(total_nodes+1:end-total_nodes) + n_tsteps(total_nodes+1:end-total_nodes)),:);
zeros(total_nodes,2)]...
)/(Weight1+Weight2);
% Compute average power and heat produced
av_H_produced = [zeros(numel(n_tsteps),3), (...
Weight1*[zeros(total_nodes,1);
heat_map(from_state_map(total_nodes+1:end-total_nodes));
zeros(total_nodes,1)] + ...
Weight2*[zeros(total_nodes,1);
heat_map(to_state_map(total_nodes+1:end-total_nodes));
zeros(total_nodes,1)]...
)/(Weight1+Weight2)];
av_P_produced = [zeros(numel(n_tsteps),3), (...
Weight1*[zeros(total_nodes,1);
power_map(from_state_map(total_nodes+1:end-total_nodes));
zeros(total_nodes,1)] + ...
Weight2*[zeros(total_nodes,1);
power_map(to_state_map(total_nodes+1:end-total_nodes));
zeros(total_nodes,1)]...
)/(Weight1+Weight2)];
decided_costs_extra_aux = -av_lambda(:,1).*av_P_produced - av_lambda(:,2).*av_H_produced;
decided_costs_extra = decided_costs_extra_aux(sub2ind(size(decided_costs_extra_aux),...
1:size(av_P_demand),...
sol_select.'))';