Skip to content

Commit f5fd7a5

Browse files
Accept constant offset to objective (#63)
1 parent 0fefa7d commit f5fd7a5

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

src/declarations.jl

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,10 @@ function setupAs!(As::Vector{ConstraintMatrix}, C::BlockMatrix)
6666
byblocks
6767
end
6868

69-
sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, params::Dict{Symbol}) = sdp(C, b, As, X, y, Z, options(params)...)
70-
function sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, printlevel, params)
69+
sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, params::Dict{Symbol}) = sdp(C, b, As, 0.0, X, y, Z, options(params)...)
70+
sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, printlevel, params) = sdp(C, b, As, 0.0, X, y, Z, printlevel, params)
71+
sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, co::Cdouble, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, params::Dict{Symbol}) = sdp(C, b, As, co, X, y, Z, options(params)...)
72+
function sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, co::Cdouble, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, printlevel, params)
7173
# I pass pointers pX, py and pZ to X, y and Z but only *pX, *py and *pZ are use in the code
7274
# so no need to worry, they won't change :)
7375
Xcsdp = X.csdp
@@ -89,7 +91,7 @@ function sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X
8991
k, # k::CSDP_INT
9092
C.csdp, # C::blockmatrix
9193
fptr(b), # a::Ptr{Cdouble}
92-
0.0, # constant_offset::Cdouble
94+
co, # constant_offset::Cdouble
9395
fptr(Ascsdp), # constraints::Ptr{constraintmatrix}
9496
fptr(byblocks),
9597
Xcsdp, # X::blockmatrix
@@ -119,17 +121,17 @@ function sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X
119121
return status, pobj, dobj
120122
end
121123

122-
function loaded_sdp(problem::LoadingProblem, X::Ref{blockmatrix}, y::Vector{Cdouble}, Z::Ref{blockmatrix}, params::Dict{Symbol})
123-
return loaded_sdp(problem, X, y, Z, options(params)...)
124-
end
125-
function loaded_sdp(problem::LoadingProblem, X::Ref{blockmatrix}, y::Vector{Cdouble}, Z::Ref{blockmatrix}, printlevel, params)
124+
loaded_sdp(problem::LoadingProblem, X::Ref{blockmatrix}, y::Vector{Cdouble}, Z::Ref{blockmatrix}, params::Dict{Symbol}) = loaded_sdp(problem, 0.0, X, y, Z, options(params)...)
125+
loaded_sdp(problem::LoadingProblem, X::Ref{blockmatrix}, y::Vector{Cdouble}, Z::Ref{blockmatrix}, printlevel, params) = loaded_sdp(problem, 0.0, X, y, Z, printlevel, params)
126+
loaded_sdp(problem::LoadingProblem, co::Cdouble, X::Ref{blockmatrix}, y::Vector{Cdouble}, Z::Ref{blockmatrix}, params::Dict{Symbol}) = loaded_sdp(problem, co, X, y, Z, options(params)...)
127+
function loaded_sdp(problem::LoadingProblem, co::Cdouble, X::Ref{blockmatrix}, y::Vector{Cdouble}, Z::Ref{blockmatrix}, printlevel, params)
126128
# I pass pointers py to X, y and Z but only *pX, *py and *pZ are
127129
# used in the code so no need to worry, they won't change :)
128130
ycsdp = Ref{Ptr{Cdouble}}(fptr(y))
129131

130132
status, pobj, dobj = loaded_sdp(
131133
problem.ptr, # problem::Ptr{Cvoid}
132-
0.0, # constant_offset::Cdouble
134+
co, # constant_offset::Cdouble
133135
X, # pX::Ptr{blockmatrix}
134136
ycsdp, # py::Ptr{Cdouble}
135137
Z, # pZ::Ptr{blockmatrix}
@@ -139,10 +141,11 @@ function loaded_sdp(problem::LoadingProblem, X::Ref{blockmatrix}, y::Vector{Cdou
139141
@assert ycsdp[] == fptr(y)
140142
return status, pobj, dobj
141143
end
142-
function parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, params::Dict{Symbol})
143-
return parametrized_sdp(C, b, As, X, y, Z, options(params)...)
144-
end
145-
function parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, printlevel, params)
144+
145+
parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, params::Dict{Symbol}) = parametrized_sdp(C, b, As, 0.0, X, y, Z, options(params)...)
146+
parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, printlevel, params) = parametrized_sdp(C, b, As, 0.0, X, y, Z, printlevel, params)
147+
parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, co::Cdouble, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, params::Dict{Symbol}) = parametrized_sdp(C, b, As, co, X, y, Z, options(params)...)
148+
function parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{ConstraintMatrix}, co::Cdouble, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix, printlevel, params)
146149
# I pass pointers pX, py and pZ to X, y and Z but only *pX, *py and *pZ are
147150
# used in the code so no need to worry, they won't change :)
148151
Xcsdp = X.csdp
@@ -156,7 +159,7 @@ function parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{Constra
156159
C.csdp, # C::blockmatrix
157160
fptr(b), # a::Ptr{Cdouble}
158161
fptr(Ascsdp), # constraints::Ptr{constraintmatrix}
159-
0.0, # constant_offset::Cdouble
162+
co, # constant_offset::Cdouble
160163
ptr(Xcsdp), # pX::Ptr{blockmatrix}
161164
ycsdp, # py::Ptr{Cdouble}
162165
ptr(Zcsdp), # pZ::Ptr{blockmatrix}
@@ -169,7 +172,8 @@ function parametrized_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{Constra
169172
return status, pobj, dobj
170173
end
171174

172-
function easy_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{constraintmatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix)
175+
easy_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{constraintmatrix}, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix) = easy_sdp(C, b, As, 0.0, X, y, Z)
176+
function easy_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{constraintmatrix}, co::Cdouble, X::BlockMatrix, y::Vector{Cdouble}, Z::BlockMatrix)
173177
# I pass pointers pX, py and pZ to X, y and Z but only *pX, *py and *pZ are
174178
# used in the code so no need to worry, they won't change :)
175179
Xcsdp = X.csdp
@@ -181,7 +185,7 @@ function easy_sdp(C::BlockMatrix, b::Vector{Cdouble}, As::Vector{constraintmatri
181185
C.csdp, # C::blockmatrix
182186
fptr(b), # a::Ptr{Cdouble}
183187
fptr(As), # constraints::Ptr{constraintmatrix}
184-
0.0, # constant_offset::Cdouble
188+
co, # constant_offset::Cdouble
185189
ptr(Xcsdp), # pX::Ptr{blockmatrix}
186190
ycsdp, # py::Ptr{Cdouble}
187191
ptr(Zcsdp)) # pZ::Ptr{blockmatrix}

0 commit comments

Comments
 (0)