Skip to content

Commit 8128b29

Browse files
committed
Update models to reflect new param and graph division.
1 parent 4867402 commit 8128b29

13 files changed

Lines changed: 108 additions & 108 deletions

src/models/model_fixed.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function model_fixed(optimizer, auxdata)
1010
Apos = auxdata.edges.Apos
1111
Aneg = auxdata.edges.Aneg
1212
psigma = (param.sigma - 1) / param.sigma
13-
Lj = param.Lj
13+
Lj = graph.Lj
1414

1515
# Model
1616
model = Model(optimizer)
@@ -27,13 +27,13 @@ function model_fixed(optimizer, auxdata)
2727

2828
# Defining Utility Funcion: from Cjn + parameters (by operator overloading)
2929
@expression(model, Cj, sum(Cjn .^ psigma, dims=2) .^ (1 / psigma))
30-
@expression(model, cj, ifelse.(param.Lj .== 0, 0.0, Cj ./ param.Lj))
31-
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (param.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
32-
@expression(model, U, sum(param.omegaj .* param.Lj .* uj))
30+
@expression(model, cj, ifelse.(graph.Lj .== 0, 0.0, Cj ./ graph.Lj))
31+
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (graph.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
32+
@expression(model, U, sum(graph.omegaj .* graph.Lj .* uj))
3333
@objective(model, Max, U)
3434

3535
# Define Yjn (production) as expression
36-
@expression(model, Yjn[j=1:graph.J, n=1:param.N], param.Zjn[j, n] * Ljn[j, n]^param.a)
36+
@expression(model, Yjn[j=1:graph.J, n=1:param.N], graph.Zjn[j, n] * Ljn[j, n]^param.a)
3737
# Balanced flow constraints
3838
@constraint(model, Pjn[j in 1:param.J, n in 1:param.N],
3939
Cjn[j, n] + sum(A[j, i] * Qin[i, n] for i in 1:graph.ndeg) -
@@ -62,9 +62,9 @@ function recover_allocation_fixed(model, auxdata)
6262
results[:Cjn] = value.(model_dict[:Cjn])
6363
results[:Cj] = dropdims(value.(model_dict[:Cj]), dims = 2)
6464
results[:Ljn] = value.(model_dict[:Ljn])
65-
results[:Lj] = param.Lj
65+
results[:Lj] = graph.Lj
6666
results[:cj] = dropdims(value.(model_dict[:cj]), dims = 2)
67-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
67+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
6868
results[:uj] = dropdims(value.(model_dict[:uj]), dims = 2)
6969
# Prices
7070
results[:Pjn] = shadow_price.(model_dict[:Pjn])

src/models/model_fixed_armington.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ function model_fixed_armington(optimizer, auxdata)
1010
Apos = auxdata.edges.Apos
1111
Aneg = auxdata.edges.Aneg
1212
psigma = (param.sigma - 1) / param.sigma
13-
Lj = param.Lj
13+
Lj = graph.Lj
1414
# Production: Fixed because just one good is produced by each location
15-
Yjn = param.Zjn .* Lj .^ param.a
15+
Yjn = graph.Zjn .* Lj .^ param.a
1616

1717
# Model
1818
model = Model(optimizer)
@@ -29,8 +29,8 @@ function model_fixed_armington(optimizer, auxdata)
2929
# Defining Utility Funcion: from Cjn + parameters (by operator overloading)
3030
@expression(model, Cj, sum(Cjn .^ psigma, dims=2) .^ (1 / psigma))
3131
@expression(model, cj, ifelse.(Lj .== 0, 0.0, Cj ./ Lj))
32-
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (param.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
33-
@expression(model, U, sum(param.omegaj .* Lj .* uj))
32+
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (graph.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
33+
@expression(model, U, sum(graph.omegaj .* Lj .* uj))
3434
@objective(model, Max, U)
3535

3636
# Balanced flow constraints
@@ -51,18 +51,18 @@ function recover_allocation_fixed_armington(model, auxdata)
5151
model_dict = model.obj_dict
5252
results = Dict()
5353
# Production: Fixed because just one good is produced by each location
54-
Yj = dropdims(sum(param.Zjn, dims = 2) .* param.Lj .^ param.a, dims = 2)
55-
WY = param.Zjn .> 0
54+
Yj = dropdims(sum(graph.Zjn, dims = 2) .* graph.Lj .^ param.a, dims = 2)
55+
WY = graph.Zjn .> 0
5656

5757
results[:welfare] = value(model_dict[:U])
5858
results[:Yjn] = WY .* Yj
5959
results[:Yj] = Yj
6060
results[:Cjn] = value.(model_dict[:Cjn])
6161
results[:Cj] = dropdims(value.(model_dict[:Cj]), dims = 2)
62-
results[:Ljn] = WY .* param.Lj
63-
results[:Lj] = param.Lj
62+
results[:Ljn] = WY .* graph.Lj
63+
results[:Lj] = graph.Lj
6464
results[:cj] = dropdims(value.(model_dict[:cj]), dims = 2)
65-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
65+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
6666
results[:uj] = dropdims(value.(model_dict[:uj]), dims = 2)
6767
# Prices
6868
results[:Pjn] = shadow_price.(model_dict[:Pjn])

src/models/model_fixed_cgc.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function model_fixed_cgc(optimizer, auxdata)
99
A = auxdata.edges.A
1010
Apos = auxdata.edges.Apos
1111
Aneg = auxdata.edges.Aneg
12-
Lj = param.Lj
12+
Lj = graph.Lj
1313
m = param.m # 1:param.N: Vector of weights on each goods flow for aggregate congestion term
1414
psigma = (param.sigma - 1) / param.sigma
1515
beta_nu = (param.beta + 1) / param.nu
@@ -30,19 +30,19 @@ function model_fixed_cgc(optimizer, auxdata)
3030
set_parameter_value.(kappa_ex, kappa_ex_init)
3131

3232
# Defining Utility Funcion: from cj + parameters (by operator overloading)
33-
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (param.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
34-
@expression(model, U, sum(param.omegaj .* param.Lj .* uj)) # Overall Utility
33+
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (graph.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
34+
@expression(model, U, sum(graph.omegaj .* graph.Lj .* uj)) # Overall Utility
3535
@objective(model, Max, U)
3636

3737
# Create the matrix B_direct (resp. B_indirect) of transport cost along the direction of the edge (resp. in edge opposite direction)
3838
B_direct = @expression(model, ((Qin_direct .^ param.nu) * m) .^ beta_nu ./ kappa_ex)
3939
B_indirect = @expression(model, ((Qin_indirect .^ param.nu) * m) .^ beta_nu ./ kappa_ex)
4040
# Final good constraints
4141
@expression(model, Dj, sum(Djn .^ psigma, dims=2) .^ (1 / psigma))
42-
@constraint(model, cj .* param.Lj + Apos * B_direct + Aneg * B_indirect - Dj .<= -1e-8)
42+
@constraint(model, cj .* graph.Lj + Apos * B_direct + Aneg * B_indirect - Dj .<= -1e-8)
4343

4444
# Balanced flow constraints
45-
@expression(model, Yjn, param.Zjn .* (Ljn .^ param.a))
45+
@expression(model, Yjn, graph.Zjn .* (Ljn .^ param.a))
4646
@constraint(model, Pjn, Djn + A * Qin_direct - A * Qin_indirect - Yjn .<= -1e-8)
4747

4848
# Local labor availability constraints ( sum Ljn <= Lj )
@@ -61,12 +61,12 @@ function recover_allocation_fixed_cgc(model, auxdata)
6161
results[:Yjn] = value.(model_dict[:Yjn])
6262
results[:Yj] = dropdims(sum(results[:Yjn], dims=2), dims = 2)
6363
results[:Ljn] = value.(model_dict[:Ljn])
64-
results[:Lj] = param.Lj
64+
results[:Lj] = graph.Lj
6565
results[:Djn] = value.(model_dict[:Djn]) # Consumption per good pre-transport cost
6666
results[:Dj] = dropdims(value.(model_dict[:Dj]), dims = 2)
6767
results[:cj] = value.(model_dict[:cj])
68-
results[:Cj] = results[:cj] .* param.Lj
69-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
68+
results[:Cj] = results[:cj] .* graph.Lj
69+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
7070
results[:uj] = value.(model_dict[:uj])
7171
# Prices
7272
results[:Pjn] = shadow_price.(model_dict[:Pjn])

src/models/model_fixed_cgc_armington.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function model_fixed_cgc_armington(optimizer, auxdata)
99
A = auxdata.edges.A
1010
Apos = auxdata.edges.Apos
1111
Aneg = auxdata.edges.Aneg
12-
Lj = param.Lj
12+
Lj = graph.Lj
1313
m = param.m # 1:param.N: Vector of weights on each goods flow for aggregate congestion term
1414
psigma = (param.sigma - 1) / param.sigma
1515
beta_nu = (param.beta + 1) / param.nu
@@ -29,8 +29,8 @@ function model_fixed_cgc_armington(optimizer, auxdata)
2929
set_parameter_value.(kappa_ex, kappa_ex_init)
3030

3131
# Defining Utility Funcion: from cj + parameters (by operator overloading)
32-
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (param.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
33-
@expression(model, U, sum(param.omegaj .* Lj .* uj)) # Overall Utility
32+
@expression(model, uj, ((cj / param.alpha) .^ param.alpha .* (graph.hj / (1-param.alpha)) .^ (1-param.alpha)) .^ (1-param.rho) / (1-param.rho))
33+
@expression(model, U, sum(graph.omegaj .* Lj .* uj)) # Overall Utility
3434
@objective(model, Max, U)
3535

3636
# Create the matrix B_direct (resp. B_indirect) of transport cost along the direction of the edge (resp. in edge opposite direction)
@@ -41,7 +41,7 @@ function model_fixed_cgc_armington(optimizer, auxdata)
4141
@constraint(model, cj .* Lj + Apos * B_direct + Aneg * B_indirect - Dj .<= -1e-8)
4242

4343
# Balanced flow constraints
44-
Yjn = param.Zjn .* Lj .^ param.a
44+
Yjn = graph.Zjn .* Lj .^ param.a
4545
@constraint(model, Pjn, Djn + A * Qin_direct - A * Qin_indirect - Yjn .<= -1e-8)
4646

4747
return model
@@ -53,19 +53,19 @@ function recover_allocation_fixed_cgc_armington(model, auxdata)
5353
model_dict = model.obj_dict
5454
results = Dict()
5555
# Production: Fixed because just one good is produced by each location
56-
Yj = dropdims(sum(param.Zjn, dims = 2) .* param.Lj .^ param.a, dims = 2)
57-
WY = param.Zjn .> 0
56+
Yj = dropdims(sum(graph.Zjn, dims = 2) .* graph.Lj .^ param.a, dims = 2)
57+
WY = graph.Zjn .> 0
5858

5959
results[:welfare] = value(model_dict[:U])
6060
results[:Yjn] = WY .* Yj
6161
results[:Yj] = Yj
62-
results[:Ljn] = WY .* param.Lj
63-
results[:Lj] = param.Lj
62+
results[:Ljn] = WY .* graph.Lj
63+
results[:Lj] = graph.Lj
6464
results[:Djn] = value.(model_dict[:Djn]) # Consumption per good pre-transport cost
6565
results[:Dj] = dropdims(value.(model_dict[:Dj]), dims = 2)
6666
results[:cj] = value.(model_dict[:cj])
67-
results[:Cj] = results[:cj] .* param.Lj
68-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
67+
results[:Cj] = results[:cj] .* graph.Lj
68+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
6969
results[:uj] = value.(model_dict[:uj])
7070
# Prices
7171
results[:Pjn] = shadow_price.(model_dict[:Pjn])

src/models/model_fixed_duality.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ function model_fixed_duality(optimizer, auxdata)
1010
Aneg = auxdata.edges.Aneg
1111
es = auxdata.edges.edge_start
1212
ee = auxdata.edges.edge_end
13-
omegaj = param.omegaj
14-
Lj = param.Lj
13+
omegaj = graph.omegaj
14+
Lj = graph.Lj
1515
alpha = param.alpha
1616
sigma = param.sigma
1717
rho = param.rho
18-
hj = param.hj
18+
hj = graph.hj
1919
hj1malpha = (hj / (1-alpha)) .^ (1-alpha)
20-
Zjn = param.Zjn
20+
Zjn = graph.Zjn
2121
beta = param.beta
2222
a = param.a
2323

@@ -92,12 +92,12 @@ function recover_allocation_fixed_duality(model, auxdata)
9292
results[:welfare] = value(model_dict[:U])
9393
results[:Yjn] = value.(model_dict[:Yjn])
9494
results[:Yj] = dropdims(sum(results[:Yjn], dims=2), dims = 2)
95-
results[:Cjn] = value.(model_dict[:cjn]) .* repeat(param.Lj, 1, param.N)
95+
results[:Cjn] = value.(model_dict[:cjn]) .* repeat(graph.Lj, 1, param.N)
9696
results[:cj] = value.(model_dict[:cj])
97-
results[:Cj] = results[:cj] .* param.Lj
97+
results[:Cj] = results[:cj] .* graph.Lj
9898
results[:Ljn] = value.(model_dict[:Ljn])
99-
results[:Lj] = param.Lj
100-
results[:hj] = param.hj
99+
results[:Lj] = graph.Lj
100+
results[:hj] = graph.hj
101101
results[:uj] = value.(model_dict[:uj]) # param.u.(results[:cj], results[:hj])
102102
# Prices
103103
results[:Pjn] = value.(model_dict[:Pjn])

src/models/model_mobility.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function model_mobility(optimizer, auxdata)
1010
Apos = auxdata.edges.Apos
1111
Aneg = auxdata.edges.Aneg
1212
psigma = (param.sigma - 1) / param.sigma
13-
Hj = param.Hj
13+
Hj = graph.Hj
1414

1515
# Model
1616
model = Model(optimizer)
@@ -37,8 +37,8 @@ function model_mobility(optimizer, auxdata)
3737
end
3838

3939
# balanced flow constraints
40-
# Yjn = @expression(model, param.Zjn .* Ljn .^ param.a) # Same thing
41-
@expression(model, Yjn[j=1:graph.J, n=1:param.N], param.Zjn[j, n] * Ljn[j, n]^param.a)
40+
# Yjn = @expression(model, graph.Zjn .* Ljn .^ param.a) # Same thing
41+
@expression(model, Yjn[j=1:graph.J, n=1:param.N], graph.Zjn[j, n] * Ljn[j, n]^param.a)
4242
@constraint(model, Pjn[j in 1:param.J, n in 1:param.N],
4343
Cjn[j, n] + sum(A[j, i] * Qin[i, n] for i in 1:graph.ndeg) -
4444
Yjn[j, n] + sum(
@@ -71,7 +71,7 @@ function recover_allocation_mobility(model, auxdata)
7171
results[:Ljn] = value.(model_dict[:Ljn])
7272
results[:Lj] = value.(model_dict[:Lj])
7373
results[:cj] = ifelse.(results[:Lj] .== 0, 0.0, results[:Cj] ./ results[:Lj])
74-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
74+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
7575
results[:uj] = param.u.(results[:cj], results[:hj])
7676
# Prices
7777
results[:Pjn] = shadow_price.(model_dict[:Pjn])

src/models/model_mobility_armington.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function model_mobility_armington(optimizer, auxdata)
1010
Apos = auxdata.edges.Apos
1111
Aneg = auxdata.edges.Aneg
1212
psigma = (param.sigma - 1) / param.sigma
13-
Hj = param.Hj
13+
Hj = graph.Hj
1414

1515
# Model
1616
model = Model(optimizer)
@@ -36,7 +36,7 @@ function model_mobility_armington(optimizer, auxdata)
3636
end
3737

3838
# balanced flow constraints
39-
@expression(model, Yjn[j=1:graph.J, n=1:param.N], param.Zjn[j, n] * Lj[j]^param.a)
39+
@expression(model, Yjn[j=1:graph.J, n=1:param.N], graph.Zjn[j, n] * Lj[j]^param.a)
4040
@constraint(model, Pjn[j in 1:param.J, n in 1:param.N],
4141
Cjn[j, n] + sum(A[j, i] * Qin[i, n] for i in 1:graph.ndeg) -
4242
Yjn[j, n] + sum(
@@ -64,9 +64,9 @@ function recover_allocation_mobility_armington(model, auxdata)
6464
results[:Cjn] = value.(model_dict[:Cjn])
6565
results[:Cj] = dropdims(sum(results[:Cjn] .^ ((param.sigma-1)/param.sigma), dims=2), dims = 2) .^ (param.sigma/(param.sigma-1))
6666
results[:Lj] = value.(model_dict[:Lj])
67-
results[:Ljn] = (param.Zjn .> 0) .* results[:Lj]
67+
results[:Ljn] = (graph.Zjn .> 0) .* results[:Lj]
6868
results[:cj] = ifelse.(results[:Lj] .== 0, 0.0, results[:Cj] ./ results[:Lj])
69-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
69+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
7070
results[:uj] = param.u.(results[:cj], results[:hj])
7171
# Prices
7272
results[:Pjn] = shadow_price.(model_dict[:Pjn])

src/models/model_mobility_cgc.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function model_mobility_cgc(optimizer, auxdata)
3434
@objective(model, Max, u)
3535

3636
# Utility constraint (Lj*u <= ... )
37-
@constraint(model, Lj .* u - (cj .* Lj / param.alpha) .^ param.alpha .* (param.Hj / (1 - param.alpha)) .^ (1 - param.alpha) .<= -1e-8)
37+
@constraint(model, Lj .* u - (cj .* Lj / param.alpha) .^ param.alpha .* (graph.Hj / (1 - param.alpha)) .^ (1 - param.alpha) .<= -1e-8)
3838

3939
# Create the matrix B_direct (resp. B_indirect) of transport cost along the direction of the edge (resp. in edge opposite direction)
4040
B_direct = @expression(model, ((Qin_direct .^ param.nu) * m) .^ beta_nu ./ kappa_ex)
@@ -44,7 +44,7 @@ function model_mobility_cgc(optimizer, auxdata)
4444
@constraint(model, cj .* Lj + Apos * B_direct + Aneg * B_indirect - Dj .<= -1e-8)
4545

4646
# Balanced flow constraints
47-
@expression(model, Yjn, param.Zjn .* (Ljn .^ param.a))
47+
@expression(model, Yjn, graph.Zjn .* (Ljn .^ param.a))
4848
@constraint(model, Pjn, Djn + A * Qin_direct - A * Qin_indirect - Yjn .<= -1e-8)
4949

5050
# Labor resource constraint
@@ -71,7 +71,7 @@ function recover_allocation_mobility_cgc(model, auxdata)
7171
results[:Dj] = dropdims(value.(model_dict[:Dj]), dims = 2)
7272
results[:cj] = value.(model_dict[:cj])
7373
results[:Cj] = results[:cj] .* results[:Lj]
74-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
74+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
7575
results[:uj] = param.u.(results[:cj], results[:hj])
7676
# Prices
7777
results[:Pjn] = shadow_price.(model_dict[:Pjn])

src/models/model_mobility_cgc_armington.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function model_mobility_cgc_armington(optimizer, auxdata)
3333
@objective(model, Max, u)
3434

3535
# Utility constraint (Lj*u <= ... )
36-
@constraint(model, Lj .* u - (cj .* Lj / param.alpha) .^ param.alpha .* (param.Hj / (1 - param.alpha)) .^ (1 - param.alpha) .<= -1e-8)
36+
@constraint(model, Lj .* u - (cj .* Lj / param.alpha) .^ param.alpha .* (graph.Hj / (1 - param.alpha)) .^ (1 - param.alpha) .<= -1e-8)
3737

3838
# Create the matrix B_direct (resp. B_indirect) of transport cost along the direction of the edge (resp. in edge opposite direction)
3939
B_direct = @expression(model, ((Qin_direct .^ param.nu) * m) .^ beta_nu ./ kappa_ex)
@@ -43,7 +43,7 @@ function model_mobility_cgc_armington(optimizer, auxdata)
4343
@constraint(model, cj .* Lj + Apos * B_direct + Aneg * B_indirect - Dj .<= -1e-8)
4444

4545
# Balanced flow constraints
46-
@expression(model, Yjn, param.Zjn .* (Lj .^ param.a))
46+
@expression(model, Yjn, graph.Zjn .* (Lj .^ param.a))
4747
@constraint(model, Pjn, Djn + A * Qin_direct - A * Qin_indirect - Yjn .<= -1e-8)
4848

4949
# Labor resource constraint
@@ -62,12 +62,12 @@ function recover_allocation_mobility_cgc_armington(model, auxdata)
6262
results[:Yjn] = value.(model_dict[:Yjn])
6363
results[:Yj] = dropdims(sum(results[:Yjn], dims=2), dims = 2)
6464
results[:Lj] = value.(model_dict[:Lj])
65-
results[:Ljn] = (param.Zjn .> 0) .* results[:Lj]
65+
results[:Ljn] = (graph.Zjn .> 0) .* results[:Lj]
6666
results[:Djn] = value.(model_dict[:Djn]) # Consumption per good pre-transport cost
6767
results[:Dj] = dropdims(value.(model_dict[:Dj]), dims = 2)
6868
results[:cj] = value.(model_dict[:cj])
6969
results[:Cj] = results[:cj] .* results[:Lj]
70-
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, param.Hj ./ results[:Lj])
70+
results[:hj] = ifelse.(results[:Lj] .== 0, 0.0, graph.Hj ./ results[:Lj])
7171
results[:uj] = param.u.(results[:cj], results[:hj])
7272
# Prices
7373
results[:Pjn] = shadow_price.(model_dict[:Pjn])

0 commit comments

Comments
 (0)