Skip to content

Commit 3e6621a

Browse files
committed
format
1 parent c70b7ef commit 3e6621a

File tree

5 files changed

+60
-31
lines changed

5 files changed

+60
-31
lines changed

src/jump.jl

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,9 @@ JuMP.object_dictionary(model::Model) = model.obj_dict
117117

118118
function JuMP.set_optimizer(model::Model, builder, evaluate_duals::Bool = true)
119119
# set diffopt optimizer for plan model
120-
new_diff_optimizer = DiffOpt.diff_optimizer(
121-
builder;
122-
with_parametric_opt_interface = true,
123-
)
124-
JuMP.set_optimizer(
125-
model.plan,
126-
() -> new_diff_optimizer,
127-
)
120+
new_diff_optimizer =
121+
DiffOpt.diff_optimizer(builder; with_parametric_opt_interface = true)
122+
JuMP.set_optimizer(model.plan, () -> new_diff_optimizer)
128123

129124
# basic setting for assess model
130125
return JuMP.set_optimizer(model.assess, builder)

src/simulation.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@ function compute_single_step_gradient(
3636
end
3737
DiffOpt.reverse_differentiate!(model.plan)
3838
for j = 1:size(model.forecast_vars, 1)
39-
dCdy[j] = MOI.get(
40-
model.plan,
41-
DiffOpt.ReverseConstraintSet(),
42-
ParameterRef(model.plan_forecast_params[j]),
43-
).value
39+
dCdy[j] =
40+
MOI.get(
41+
model.plan,
42+
DiffOpt.ReverseConstraintSet(),
43+
ParameterRef(model.plan_forecast_params[j]),
44+
).value
4445
end
4546

4647
return dCdy

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ Random.seed!(123)
1313

1414
include("utils.jl")
1515
include("test_predictive_model.jl")
16-
include("test_newsvendor.jl")
16+
include("test_newsvendor.jl")

test/test_newsvendor.jl

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,27 @@ end)
1919
con1, y <= d.plan
2020
con2, y + w <= x.plan
2121
end)
22-
@objective(ApplicationDrivenLearning.Plan(model), Min, c * x.plan - q * y - r * w)
22+
@objective(
23+
ApplicationDrivenLearning.Plan(model),
24+
Min,
25+
c * x.plan - q * y - r * w
26+
)
2327
@variables(ApplicationDrivenLearning.Assess(model), begin
2428
y >= 0
2529
w >= 0
2630
end)
27-
@constraints(ApplicationDrivenLearning.Assess(model), begin
28-
con1, y <= d.assess
29-
con2, y + w <= x.assess
30-
end)
31-
@objective(ApplicationDrivenLearning.Assess(model), Min, c * x.assess - q * y - r * w)
31+
@constraints(
32+
ApplicationDrivenLearning.Assess(model),
33+
begin
34+
con1, y <= d.assess
35+
con2, y + w <= x.assess
36+
end
37+
)
38+
@objective(
39+
ApplicationDrivenLearning.Assess(model),
40+
Min,
41+
c * x.assess - q * y - r * w
42+
)
3243
set_optimizer(model, HiGHS.Optimizer)
3344
set_silent(model)
3445
nn = Chain(Dense(1 => 1; bias = false, init = (size...) -> rand(size...)))
@@ -41,7 +52,10 @@ nn = Chain(Dense(1 => 1; bias = false, init = (size...) -> rand(size...)))
4152
opt = ApplicationDrivenLearning.Options(
4253
ApplicationDrivenLearning.BilevelMode,
4354
optimizer = HiGHS.Optimizer,
44-
mode = BilevelJuMP.FortunyAmatMcCarlMode(primal_big_M = 100, dual_big_M = 100),
55+
mode = BilevelJuMP.FortunyAmatMcCarlMode(
56+
primal_big_M = 100,
57+
dual_big_M = 100,
58+
),
4559
silent = true,
4660
)
4761
sol = ApplicationDrivenLearning.train!(model, X, Y, opt)

test/test_predictive_model.jl

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@ in_size = 3
33
out_size = 2
44

55
@testset "Single-Dense" begin
6-
forecaster =
7-
ApplicationDrivenLearning.PredictiveModel(Flux.Dense(in_size => out_size) |> f64)
6+
forecaster = ApplicationDrivenLearning.PredictiveModel(
7+
Flux.Dense(in_size => out_size) |> f64,
8+
)
89
x = ones((in_size, 1))
910
@test size(forecaster(x)) == (out_size, 1)
1011

1112
θ = ApplicationDrivenLearning.extract_params(forecaster)
1213
expected_params_size = in_size * out_size + out_size
1314
@test size(θ) == (expected_params_size,)
1415

15-
ApplicationDrivenLearning.apply_params(forecaster, ones(expected_params_size))
16+
ApplicationDrivenLearning.apply_params(
17+
forecaster,
18+
ones(expected_params_size),
19+
)
1620
x = ones(in_size)
1721
@test forecaster(x) == (in_size + 1) .* ones(out_size)
1822

@@ -22,7 +26,8 @@ out_size = 2
2226
ones((1, in_size)),
2327
Flux.Descent(0.1),
2428
)
25-
@test Flux.params(forecaster.networks[1])[1] == 0.9 * ones((out_size, in_size))
29+
@test Flux.params(forecaster.networks[1])[1] ==
30+
0.9 * ones((out_size, in_size))
2631
@test Flux.params(forecaster.networks[1])[2] == 0.9 * ones(out_size)
2732
end
2833

@@ -37,7 +42,10 @@ end
3742
expected_params_size = in_size * out_size + out_size
3843
@test size(θ) == (expected_params_size,)
3944

40-
ApplicationDrivenLearning.apply_params(forecaster, ones(expected_params_size))
45+
ApplicationDrivenLearning.apply_params(
46+
forecaster,
47+
ones(expected_params_size),
48+
)
4149
x = ones(in_size)
4250
@test forecaster(x) == (in_size + 1) .* ones(out_size)
4351

@@ -47,7 +55,8 @@ end
4755
ones((1, in_size)),
4856
Flux.Descent(0.1),
4957
)
50-
@test Flux.params(forecaster.networks[1])[1] == 0.9 * ones((out_size, in_size))
58+
@test Flux.params(forecaster.networks[1])[1] ==
59+
0.9 * ones((out_size, in_size))
5160
@test Flux.params(forecaster.networks[1])[2] == 0.9 * ones(out_size)
5261
end
5362

@@ -64,7 +73,10 @@ end
6473
expected_params_size = model_in_size * model_out_size + model_out_size
6574
@test size(θ) == (expected_params_size,)
6675

67-
ApplicationDrivenLearning.apply_params(forecaster, ones(expected_params_size))
76+
ApplicationDrivenLearning.apply_params(
77+
forecaster,
78+
ones(expected_params_size),
79+
)
6880
x = ones(in_size)
6981
@test forecaster(x) == (model_in_size + 1) .* ones(out_size)
7082

@@ -85,8 +97,12 @@ end
8597
nn1 = Flux.Dense(model_in_size => model_out_size) |> f64
8698
nn2 = Flux.Dense(model_in_size => model_out_size) |> f64
8799
in_out_map = [Dict([1, 2] => [1]), Dict([1, 3] => [2])]
88-
forecaster =
89-
ApplicationDrivenLearning.PredictiveModel([nn1, nn2], in_out_map, in_size, out_size)
100+
forecaster = ApplicationDrivenLearning.PredictiveModel(
101+
[nn1, nn2],
102+
in_out_map,
103+
in_size,
104+
out_size,
105+
)
90106

91107
x = ones((in_size, 1))
92108
@test size(forecaster(x)) == (out_size, 1)
@@ -95,7 +111,10 @@ end
95111
expected_params_size = 2 * (model_in_size * model_out_size + model_out_size)
96112
@test size(θ) == (expected_params_size,)
97113

98-
ApplicationDrivenLearning.apply_params(forecaster, ones(expected_params_size))
114+
ApplicationDrivenLearning.apply_params(
115+
forecaster,
116+
ones(expected_params_size),
117+
)
99118
x = ones(in_size)
100119
@test forecaster(x) == (model_in_size + 1) .* ones(out_size)
101120

0 commit comments

Comments
 (0)