Skip to content

Commit ca66cfe

Browse files
committed
Better flows calculations (fixes).
1 parent 98a90af commit ca66cfe

9 files changed

+18
-67
lines changed

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# v1.0.5.9000
2+
- Further minor fixes in flows calculations.
3+
14
# v1.0.5
25
- Minor fixes to `apply_geography()` function, the cross-good congestion solutions (correctly recovering the largest directional trade flow), and initial conditions.
36

lib/solve_allocation_by_duality_ADiGator.m

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@
5757
% PARAMETRIZE IPOPT
5858
% =================
5959

60-
% Init functions (note: this step is crucial since auxdata has changed
61-
% since call to ADiGator!)
60+
% Init functions (note: this step is crucial since auxdata has changed since call to ADiGator!)
6261
funcs.objective = @(x) objective_duality(x,auxdata);
6362
funcs.gradient = @(x) objective_duality_Grd(x,auxdata);
6463
funcs.hessian = @(x,sigma_hess,lambda_hess) objective_duality_Hes(x,auxdata,sigma_hess,lambda_hess);

lib/solve_allocation_cgc.m

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -150,18 +150,8 @@
150150
% trade flows
151151
Qin_direct=reshape(x(graph.J+graph.J*param.N+1:graph.J+graph.J*param.N+graph.ndeg*param.N),[graph.ndeg param.N]);
152152
Qin_indirect=reshape(x(graph.J+graph.J*param.N+graph.ndeg*param.N+1:graph.J+graph.J*param.N+2*graph.ndeg*param.N),[graph.ndeg param.N]);
153-
154-
results.Qin=zeros(graph.ndeg*param.N,1);
155-
156-
for i=1:param.N*graph.ndeg
157-
if Qin_direct(i)>Qin_indirect(i)
158-
results.Qin(i)=Qin_direct(i)-Qin_indirect(i);
159-
else
160-
results.Qin(i)=Qin_indirect(i)-Qin_direct(i);
161-
end
162-
end
163-
results.Qin=reshape(results.Qin,[graph.ndeg param.N]);
164-
153+
% Flows: positive if along edge
154+
results.Qin=reshape(Qin_direct-Qin_indirect,[graph.ndeg param.N]);
165155

166156
% recover the Qjkn's
167157
results.Qjkn=zeros(graph.J,graph.J,param.N);

lib/solve_allocation_cgc_ADiGator.m

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,16 +140,8 @@
140140
% Trade flows
141141
Qin_direct=x(graph.J*param.N+1:graph.J*param.N+graph.ndeg*param.N);
142142
Qin_indirect=x(graph.J*param.N+graph.ndeg*param.N+1:graph.J*param.N+2*graph.ndeg*param.N);
143-
results.Qin=zeros(graph.ndeg*param.N,1);
144-
145-
for i=1:param.N*graph.ndeg
146-
if Qin_direct(i)>Qin_indirect(i)
147-
results.Qin(i)=Qin_direct(i)-Qin_indirect(i);
148-
else
149-
results.Qin(i)=Qin_indirect(i)-Qin_direct(i);
150-
end
151-
end
152-
results.Qin=reshape(results.Qin,[graph.ndeg param.N]);
143+
% Flows: positive if along edge
144+
results.Qin=reshape(Qin_direct-Qin_indirect,[graph.ndeg param.N]);
153145

154146
% recover the Qjkn's
155147
results.Qjkn=zeros(graph.J,graph.J,param.N);

lib/solve_allocation_mobility.m

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -154,17 +154,8 @@ a primal approach (quasiconcave).
154154
% Trade flows
155155
results.Qin_direct=reshape(x(1+graph.J*param.N+1:1+graph.J*param.N+graph.ndeg*param.N),[graph.ndeg param.N]);
156156
results.Qin_indirect=reshape(x(1+graph.J*param.N+graph.ndeg*param.N+1:1+graph.J*param.N+2*graph.ndeg*param.N),[graph.ndeg param.N]);
157-
158-
results.Qin=zeros(graph.ndeg*param.N,1);
159-
160-
for i=1:param.N*graph.ndeg
161-
if results.Qin_direct(i)>results.Qin_indirect(i)
162-
results.Qin(i)=results.Qin_direct(i)-results.Qin_indirect(i);
163-
else
164-
results.Qin(i)=results.Qin_direct(i)-results.Qin_indirect(i);
165-
end
166-
end
167-
results.Qin=reshape(results.Qin,[graph.ndeg param.N]);
157+
% Flows: positive if along edge
158+
results.Qin=reshape(Qin_direct-Qin_indirect,[graph.ndeg param.N]);
168159

169160
% recover the Qjkn's
170161
results.Qjkn=zeros(graph.J,graph.J,param.N);

lib/solve_allocation_mobility_cgc.m

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -162,17 +162,9 @@ a primal approach (quasiconcave) in the cross-good congestion case.
162162
% Trade flows
163163
results.Qin_direct=reshape(x(1+graph.J+graph.J*param.N+1:1+graph.J+graph.J*param.N+graph.ndeg*param.N),[graph.ndeg param.N]);
164164
results.Qin_indirect=reshape(x(1+graph.J+graph.J*param.N+graph.ndeg*param.N+1:1+graph.J+graph.J*param.N+2*graph.ndeg*param.N),[graph.ndeg param.N]);
165+
% Flows: positive if along edge
166+
results.Qin=reshape(Qin_direct-Qin_indirect,[graph.ndeg param.N]);
165167

166-
results.Qin=zeros(graph.ndeg*param.N,1);
167-
168-
for i=1:param.N*graph.ndeg
169-
if results.Qin_direct(i)>results.Qin_indirect(i)
170-
results.Qin(i)=results.Qin_direct(i)-results.Qin_indirect(i);
171-
else
172-
results.Qin(i)=results.Qin_direct(i)-results.Qin_indirect(i);
173-
end
174-
end
175-
results.Qin=reshape(results.Qin,[graph.ndeg param.N]);
176168

177169
% recover the Q's
178170
results.Qjkn=zeros(graph.J,graph.J,param.N);

lib/solve_allocation_mobility_cgc_ADiGator.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ a primal approach (quasiconcave) in the cross-good congestion case.
134134
% Trade flows
135135
Qin_direct=reshape(x(1+graph.J*param.N+1:1+graph.J*param.N+graph.ndeg*param.N),[graph.ndeg param.N]);
136136
Qin_indirect=reshape(x(1+graph.J*param.N+graph.ndeg*param.N+1:1+graph.J*param.N+2*graph.ndeg*param.N),[graph.ndeg param.N]);
137+
138+
% Flows: positive if along edge
137139
results.Qin=zeros(graph.ndeg*param.N,1);
138140

139141
for i=1:param.N*graph.ndeg

lib/solve_allocation_mobility_cgc_inefficiency.m

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -163,17 +163,8 @@ a primal approach (quasiconcave) in the cross-good congestion case.
163163
% Trade flows
164164
results.Qin_direct=reshape(x(1+graph.J+graph.J*param.N+1:1+graph.J+graph.J*param.N+graph.ndeg*param.N),[graph.ndeg param.N]);
165165
results.Qin_indirect=reshape(x(1+graph.J+graph.J*param.N+graph.ndeg*param.N+1:1+graph.J+graph.J*param.N+2*graph.ndeg*param.N),[graph.ndeg param.N]);
166-
167-
results.Qin=zeros(graph.ndeg*param.N,1);
168-
169-
for i=1:param.N*graph.ndeg
170-
if results.Qin_direct(i)>results.Qin_indirect(i)
171-
results.Qin(i)=results.Qin_direct(i)-results.Qin_indirect(i);
172-
else
173-
results.Qin(i)=results.Qin_direct(i)-results.Qin_indirect(i);
174-
end
175-
end
176-
results.Qin=reshape(results.Qin,[graph.ndeg param.N]);
166+
% Flows: positive if along edge
167+
results.Qin=reshape(Qin_direct-Qin_indirect,[graph.ndeg param.N]);
177168

178169
% recover the Q's
179170
results.Qjkn=zeros(graph.J,graph.J,param.N);

lib/solve_allocation_partial_mobility_cgc.m

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -162,17 +162,8 @@ with a primal approach (quasiconcave) in the cross-good congestion case.
162162
% Trade flows
163163
Qin_direct =reshape(x(param.nregions+graph.J+graph.J*param.N+1:param.nregions+graph.J+graph.J*param.N+graph.ndeg*param.N),[graph.ndeg param.N]);
164164
Qin_indirect =reshape(x(param.nregions+graph.J+graph.J*param.N+graph.ndeg*param.N+1:param.nregions+graph.J+graph.J*param.N+2*graph.ndeg*param.N),[graph.ndeg param.N]);
165-
166-
results.Qin=zeros(graph.ndeg*param.N,1);
167-
168-
for i=1:param.N*graph.ndeg
169-
if Qin_direct(i)>Qin_indirect(i)
170-
results.Qin(i)=Qin_direct(i)-Qin_indirect(i);
171-
else
172-
results.Qin(i)=Qin_indirect(i)-Qin_direct(i);
173-
end
174-
end
175-
results.Qin=reshape(results.Qin,[graph.ndeg param.N]);
165+
% Flows: positive if along edge
166+
results.Qin=reshape(Qin_direct-Qin_indirect,[graph.ndeg param.N]);
176167

177168
% recover the Q's
178169
results.Qjkn=zeros(graph.J,graph.J,param.N);

0 commit comments

Comments
 (0)