Skip to content

Commit 71739ea

Browse files
committed
[DEV] Add support of local constraints
1 parent d8ed01d commit 71739ea

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

src/SDDPoptimize.jl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,13 @@ function build_models(model::SPModel, param::SDDPparameters)
256256
m.ext[:cons] = @constraint(m, state_constraint, x .== 0)
257257

258258
@constraint(m, xf .== model.dynamics(t, x, u, w))
259-
@constraints(m, model.equalityConstraints(t, x, u, w) .== 0)
260-
@constraints(m, model.inequalityConstraints(t, x, u, w) .<= 0)
259+
260+
if model.equalityConstraints != nothing
261+
@constraint(m, model.equalityConstraints(t, x, u, w) .== 0)
262+
end
263+
if model.inequalityConstraints != nothing
264+
@constraint(m, model.inequalityConstraints(t, x, u, w) .<= 0)
265+
end
261266

262267
if typeof(model) == LinearDynamicLinearCostSPmodel
263268
@objective(m, Min, model.costFunctions(t, x, u, w) + alpha)

src/objects.jl

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,14 @@ type LinearDynamicLinearCostSPmodel <: SPModel
3737
dynamics::Function
3838
noises::Vector{NoiseLaw}
3939

40-
finalCost::Function
40+
finalCost
4141

42-
equalityConstraints::Function
43-
inequalityConstraints::Function
42+
equalityConstraints
43+
inequalityConstraints
4444

45-
46-
function LinearDynamicLinearCostSPmodel(nstage, ubounds, x0, cost, dynamic, aleas, Vfinal=nothing, eq_constr=nothing, ineq_constr=nothing)
45+
function LinearDynamicLinearCostSPmodel(nstage, ubounds, x0,
46+
cost, dynamic, aleas, Vfinal=nothing,
47+
eqconstr=nothing, ineqconstr=nothing)
4748

4849
dimStates = length(x0)
4950
dimControls = length(ubounds)
@@ -62,7 +63,8 @@ type LinearDynamicLinearCostSPmodel <: SPModel
6263
push!(xbounds, (-Inf, Inf))
6364
end
6465

65-
return new(nstage, dimControls, dimStates, dimNoises, xbounds, ubounds, x0, cost, dynamic, aleas, Vf, eq_constr, ineq_constr)
66+
return new(nstage, dimControls, dimStates, dimNoises, xbounds, ubounds,
67+
x0, cost, dynamic, aleas, Vf, eqconstr, ineqconstr)
6668
end
6769
end
6870

@@ -83,12 +85,14 @@ type PiecewiseLinearCostSPmodel <: SPModel
8385
costFunctions::Vector{Function}
8486
dynamics::Function
8587
noises::Vector{NoiseLaw}
86-
finalCost::Function
88+
finalCost
8789

88-
equalityConstraints::Function
89-
inequalityConstraints::Function
90+
equalityConstraints
91+
inequalityConstraints
9092

91-
function PiecewiseLinearCostSPmodel(nstage, ubounds, x0, costs, dynamic, aleas, Vfinal=nothing, eq_constr=nothing, ineq_constr=nothing)
93+
function PiecewiseLinearCostSPmodel(nstage, ubounds, x0, costs, dynamic,
94+
aleas, Vfinal=nothing, eqconstr=nothing,
95+
ineqconstr=nothing)
9296
dimStates = length(x0)
9397
dimControls = length(ubounds)
9498
dimNoises = length(aleas[1].support[:, 1])
@@ -103,7 +107,8 @@ type PiecewiseLinearCostSPmodel <: SPModel
103107
for i = 1:dimStates
104108
push!(xbounds, (-Inf, Inf))
105109
end
106-
return new(nstage, dimControls, dimStates, dimNoises, xbounds, ubounds, x0, costs, dynamic, aleas, Vf, eq_constr, ineq_constr)
110+
return new(nstage, dimControls, dimStates, dimNoises, xbounds, ubounds,
111+
x0, costs, dynamic, aleas, Vf, eqconstr, ineqconstr)
107112
end
108113
end
109114

0 commit comments

Comments
 (0)