Skip to content

Commit 1f9fffe

Browse files
committed
Fix format
1 parent a4f4ff0 commit 1f9fffe

2 files changed

Lines changed: 43 additions & 39 deletions

File tree

ext/ExaModelsGenOpt.jl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ function ExaModels.copy_extra_constraints!(c, moim, var_to_idx, con_to_idx, T)
1919
con_types = MOI.get(moim, MOI.ListOfConstraintTypesPresent())
2020
for (F, S) in con_types
2121
F <: FunctionGenerator || continue
22-
cis = MOI.get(moim, MOI.ListOfConstraintIndices{F,S}())
22+
cis = MOI.get(moim, MOI.ListOfConstraintIndices{F, S}())
2323
c = _copy_generator_constraints!(c, moim, cis, var_to_idx, con_to_idx, T, S)
2424
end
2525
return c
@@ -53,7 +53,7 @@ function exagen(f::MOI.ScalarNonlinearFunction, offsets, var_to_idx)
5353
end
5454
cp = cumprod(v.size)
5555
for i in 3:length(f.args)
56-
idx += cp[i-2] * (exagen(f.args[i], offsets, var_to_idx) - 1)
56+
idx += cp[i - 2] * (exagen(f.args[i], offsets, var_to_idx) - 1)
5757
end
5858
return ExaModels.Var(idx)
5959
elseif v isa IteratorIndex
@@ -79,19 +79,21 @@ function _exagen(func::MOI.ScalarNonlinearFunction, iterators, var_to_idx)
7979
cs = nothing
8080
pars = only.(iterators[].values)
8181
else
82-
cs = [0; cumsum(lengths)[1:end-1]]
83-
pars = vec(map(Base.Iterators.ProductIterator(ntuple(i -> iterators[i].values, length(iterators)))) do I
84-
reduce((i, j) -> tuple(i..., j...), I)
85-
end)
82+
cs = [0; cumsum(lengths)[1:(end - 1)]]
83+
pars = vec(
84+
map(Base.Iterators.ProductIterator(ntuple(i -> iterators[i].values, length(iterators)))) do I
85+
reduce((i, j) -> tuple(i..., j...), I)
86+
end
87+
)
8688
end
8789
expr = exagen(func, cs, var_to_idx)
8890
return expr, pars
8991
end
9092

9193
# Bound helpers for vector sets used by FunctionGenerator constraints
92-
_lower_bounds(::Union{MOI.Zeros,MOI.Nonnegatives}, T) = zero(T)
94+
_lower_bounds(::Union{MOI.Zeros, MOI.Nonnegatives}, T) = zero(T)
9395
_lower_bounds(::MOI.Nonpositives, T) = typemin(T)
94-
_upper_bounds(::Union{MOI.Zeros,MOI.Nonpositives}, T) = zero(T)
96+
_upper_bounds(::Union{MOI.Zeros, MOI.Nonpositives}, T) = zero(T)
9597
_upper_bounds(::MOI.Nonnegatives, T) = typemax(T)
9698

9799
end # module

test/GenOptTest/GenOptTest.jl

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,26 @@ function quadrotor_test()
2424
itr2 = [(j, xf[j]) for j in 1:n]
2525

2626
model = Model()
27-
@variable(model, x[1:(N+1), 1:n])
27+
@variable(model, x[1:(N + 1), 1:n])
2828
@variable(model, u[1:N, 1:p])
2929

3030
@constraint(model, start[i in 1:n], x[1, i] == x0_val[i], container = container)
3131

32-
@constraint(model, [i in 1:N], x[i+1, 1] == x[i, 1] + x[i, 2] * dt, container = container)
33-
@constraint(model, [i in 1:N], x[i+1, 2] == x[i, 2] + (u[i, 1]) * dt, container = container)
34-
@constraint(model, [i in 1:N], x[i+1, 3] == x[i, 3] + x[i, 4] * dt, container = container)
35-
@constraint(model, [i in 1:N], x[i+1, 4] == x[i, 4] + (u[i, 2]) * dt, container = container)
36-
@constraint(model, [i in 1:N], x[i+1, 5] == x[i, 5] + x[i, 6] * dt, container = container)
37-
@constraint(model, [i in 1:N], x[i+1, 6] == x[i, 6] + (u[i, 3] - g) * dt, container = container)
38-
@constraint(model, [i in 1:N], x[i+1, 7] == x[i, 7] + u[i, 1] * dt, container = container)
39-
@constraint(model, [i in 1:N], x[i+1, 8] == x[i, 8] + u[i, 2] * dt, container = container)
40-
@constraint(model, [i in 1:N], x[i+1, 9] == x[i, 9] + u[i, 4] * dt, container = container)
41-
42-
@objective(model, Min,
32+
@constraint(model, [i in 1:N], x[i + 1, 1] == x[i, 1] + x[i, 2] * dt, container = container)
33+
@constraint(model, [i in 1:N], x[i + 1, 2] == x[i, 2] + (u[i, 1]) * dt, container = container)
34+
@constraint(model, [i in 1:N], x[i + 1, 3] == x[i, 3] + x[i, 4] * dt, container = container)
35+
@constraint(model, [i in 1:N], x[i + 1, 4] == x[i, 4] + (u[i, 2]) * dt, container = container)
36+
@constraint(model, [i in 1:N], x[i + 1, 5] == x[i, 5] + x[i, 6] * dt, container = container)
37+
@constraint(model, [i in 1:N], x[i + 1, 6] == x[i, 6] + (u[i, 3] - g) * dt, container = container)
38+
@constraint(model, [i in 1:N], x[i + 1, 7] == x[i, 7] + u[i, 1] * dt, container = container)
39+
@constraint(model, [i in 1:N], x[i + 1, 8] == x[i, 8] + u[i, 2] * dt, container = container)
40+
@constraint(model, [i in 1:N], x[i + 1, 9] == x[i, 9] + u[i, 4] * dt, container = container)
41+
42+
@objective(
43+
model, Min,
4344
lazy_sum(0.5 * R[j] * (u[i, j]^2) for i in 1:N, j in 1:p) +
44-
lazy_sum(0.5 * Q[it[2]] * (x[it[1], it[2]] - it[3])^2 for it in itr1) +
45-
lazy_sum(0.5 * Qf[it[1]] * (x[N+1, it[1]] - it[2])^2 for it in itr2),
45+
lazy_sum(0.5 * Q[it[2]] * (x[it[1], it[2]] - it[3])^2 for it in itr1) +
46+
lazy_sum(0.5 * Qf[it[1]] * (x[N + 1, it[1]] - it[2])^2 for it in itr2),
4647
)
4748

4849
return model
@@ -83,32 +84,33 @@ function parametric_genopt_test()
8384
@variable(model, par1 in MOI.Parameter(2.0))
8485
@variable(model, par2 in MOI.Parameter(3.0))
8586

86-
@variable(model, x[1:(N+1), 1:n])
87+
@variable(model, x[1:(N + 1), 1:n])
8788
@variable(model, u[1:N, 1:p])
8889

8990
@constraint(model, start[i in 1:n], x[1, i] == x0_val[i], container = container)
9091

91-
@constraint(model, [i in 1:N], x[i+1, 1] == x[i, 1] + x[i, 2] * dt, container = container)
92-
@constraint(model, [i in 1:N], x[i+1, 2] == x[i, 2] + (u[i, 1]) * dt, container = container)
93-
@constraint(model, [i in 1:N], x[i+1, 3] == x[i, 3] + x[i, 4] * dt, container = container)
94-
@constraint(model, [i in 1:N], x[i+1, 4] == x[i, 4] + (u[i, 2]) * dt, container = container)
95-
@constraint(model, [i in 1:N], x[i+1, 5] == x[i, 5] + x[i, 6] * dt, container = container)
96-
@constraint(model, [i in 1:N], x[i+1, 6] == x[i, 6] + (u[i, 3] - g) * dt, container = container)
97-
@constraint(model, [i in 1:N], x[i+1, 7] == x[i, 7] + u[i, 1] * dt, container = container)
98-
@constraint(model, [i in 1:N], x[i+1, 8] == x[i, 8] + u[i, 2] * dt, container = container)
99-
@constraint(model, [i in 1:N], x[i+1, 9] == x[i, 9] + u[i, 4] * dt, container = container)
100-
101-
@objective(model, Min,
92+
@constraint(model, [i in 1:N], x[i + 1, 1] == x[i, 1] + x[i, 2] * dt, container = container)
93+
@constraint(model, [i in 1:N], x[i + 1, 2] == x[i, 2] + (u[i, 1]) * dt, container = container)
94+
@constraint(model, [i in 1:N], x[i + 1, 3] == x[i, 3] + x[i, 4] * dt, container = container)
95+
@constraint(model, [i in 1:N], x[i + 1, 4] == x[i, 4] + (u[i, 2]) * dt, container = container)
96+
@constraint(model, [i in 1:N], x[i + 1, 5] == x[i, 5] + x[i, 6] * dt, container = container)
97+
@constraint(model, [i in 1:N], x[i + 1, 6] == x[i, 6] + (u[i, 3] - g) * dt, container = container)
98+
@constraint(model, [i in 1:N], x[i + 1, 7] == x[i, 7] + u[i, 1] * dt, container = container)
99+
@constraint(model, [i in 1:N], x[i + 1, 8] == x[i, 8] + u[i, 2] * dt, container = container)
100+
@constraint(model, [i in 1:N], x[i + 1, 9] == x[i, 9] + u[i, 4] * dt, container = container)
101+
102+
@objective(
103+
model, Min,
102104
lazy_sum(0.5 * R[j] * (u[i, j]^2) for i in 1:N, j in 1:p) +
103-
lazy_sum(0.5 * Q[it[2]] * (x[it[1], it[2]] - it[3])^2 for it in itr1) +
104-
lazy_sum(0.5 * Qf[it[1]] * (x[N+1, it[1]] - it[2])^2 for it in itr2),
105+
lazy_sum(0.5 * Q[it[2]] * (x[it[1], it[2]] - it[3])^2 for it in itr1) +
106+
lazy_sum(0.5 * Qf[it[1]] * (x[N + 1, it[1]] - it[2])^2 for it in itr2),
105107
)
106108

107109
return model
108110
end
109111

110112
function runtests()
111-
@testset "GenOpt extension test" begin
113+
return @testset "GenOpt extension test" begin
112114
@testset "Quadrotor with ExaModels.Optimizer" begin
113115
model = quadrotor_test()
114116

@@ -117,7 +119,7 @@ function runtests()
117119
optimize!(model)
118120

119121
obj = objective_value(model)
120-
@test isapprox(obj, 8.1797, atol = 1e-3)
122+
@test isapprox(obj, 8.1797, atol = 1.0e-3)
121123

122124
# Verify that FunctionGenerator structure is retained in ExaModels
123125
# (not dismantled into individual scalar constraints).
@@ -146,7 +148,7 @@ function runtests()
146148
optimize!(model)
147149

148150
# Same problem as quadrotor, should give same objective
149-
@test isapprox(objective_value(model), 8.1797, atol = 1e-3)
151+
@test isapprox(objective_value(model), 8.1797, atol = 1.0e-3)
150152
end
151153
end
152154
end

0 commit comments

Comments
 (0)