Skip to content

Commit 1491068

Browse files
authored
Merge pull request #47 from JuliaOpt/ml/07
deprecation fixes for 0.7
2 parents f556448 + 4e9bd0c commit 1491068

File tree

7 files changed

+140
-246
lines changed

7 files changed

+140
-246
lines changed

src/GLPKInterfaceBase.jl

Lines changed: 41 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,19 @@
11
module GLPKInterfaceBase
22

33
using Compat
4+
using Compat.SparseArrays
5+
using Compat.LinearAlgebra
46
import GLPK
57

6-
importall MathProgBase.SolverInterface
7-
8-
export
9-
GLPKMathProgModel,
10-
loadproblem!,
11-
writeproblem,
12-
getvarLB,
13-
setvarLB!,
14-
getvarUB,
15-
setvarUB!,
16-
getconstrLB,
17-
setconstrLB!,
18-
getconstrUB,
19-
setconstrUB!,
20-
getconstrmatrix,
21-
getobj,
22-
setobj!,
23-
addvar!,
24-
addconstr!,
25-
setsense!,
26-
getsense,
27-
numvar,
28-
numconstr,
29-
getrawsolver
30-
31-
32-
abstract type GLPKMathProgModel <: AbstractLinearQuadraticModel end
33-
34-
function loadproblem!(lpm::GLPKMathProgModel, filename::AbstractString)
8+
import MathProgBase
9+
const MPB = MathProgBase
10+
11+
export GLPKMathProgModel
12+
13+
14+
abstract type GLPKMathProgModel <: MPB.AbstractLinearQuadraticModel end
15+
16+
function MPB.loadproblem!(lpm::GLPKMathProgModel, filename::AbstractString)
3517
if endswith(filename, ".mps") || endswith(filename, ".mps.gz")
3618
GLPK.read_mps(lpm.inner, GLPK.MPS_FILE, filename)
3719
elseif endswith(filename, ".lp") || endswith(filename, ".lp.gz")
@@ -45,7 +27,7 @@ end
4527

4628
nonnull(x) = (x != nothing && !isempty(x))
4729

48-
function loadproblem!(lpm::GLPKMathProgModel, A::AbstractMatrix, collb, colub, obj, rowlb, rowub, sense)
30+
function MPB.loadproblem!(lpm::GLPKMathProgModel, A::AbstractMatrix, collb, colub, obj, rowlb, rowub, sense)
4931
lp = lpm.inner
5032

5133
m, n = size(A)
@@ -113,17 +95,17 @@ function loadproblem!(lpm::GLPKMathProgModel, A::AbstractMatrix, collb, colub, o
11395
end
11496

11597
m > 0 && n > 0 && GLPK.load_matrix(lp, ia, ja, ar)
116-
setsense!(lpm, sense)
98+
MPB.setsense!(lpm, sense)
11799

118100
return lpm
119101
end
120102

121103
#writeproblem(m, filename::AbstractString)
122104

123-
function getvarLB(lpm::GLPKMathProgModel)
105+
function MPB.getvarLB(lpm::GLPKMathProgModel)
124106
lp = lpm.inner
125107
n = GLPK.get_num_cols(lp)
126-
lb = Array{Float64}(n)
108+
lb = Array{Float64}(undef, n)
127109
for c = 1:n
128110
l = GLPK.get_col_lb(lp, c)
129111
if l <= -realmax(Float64)
@@ -134,7 +116,7 @@ function getvarLB(lpm::GLPKMathProgModel)
134116
return lb
135117
end
136118

137-
function setvarLB!(lpm::GLPKMathProgModel, collb)
119+
function MPB.setvarLB!(lpm::GLPKMathProgModel, collb)
138120
lp = lpm.inner
139121
n = GLPK.get_num_cols(lp)
140122
if nonnull(collb) && length(collb) != n
@@ -169,10 +151,10 @@ function setvarLB!(lpm::GLPKMathProgModel, collb)
169151
GLPK.jl_set_preemptive_check(prev_preemptive_check)
170152
end
171153

172-
function getvarUB(lpm::GLPKMathProgModel)
154+
function MPB.getvarUB(lpm::GLPKMathProgModel)
173155
lp = lpm.inner
174156
n = GLPK.get_num_cols(lp)
175-
ub = Array{Float64}(n)
157+
ub = Array{Float64}(undef, n)
176158
for c = 1:n
177159
u = GLPK.get_col_ub(lp, c)
178160
if u >= realmax(Float64)
@@ -183,7 +165,7 @@ function getvarUB(lpm::GLPKMathProgModel)
183165
return ub
184166
end
185167

186-
function setvarUB!(lpm::GLPKMathProgModel, colub)
168+
function MPB.setvarUB!(lpm::GLPKMathProgModel, colub)
187169
lp = lpm.inner
188170
n = GLPK.get_num_cols(lp)
189171
if nonnull(colub) && length(colub) != n
@@ -218,10 +200,10 @@ function setvarUB!(lpm::GLPKMathProgModel, colub)
218200
GLPK.jl_set_preemptive_check(prev_preemptive_check)
219201
end
220202

221-
function getconstrLB(lpm::GLPKMathProgModel)
203+
function MPB.getconstrLB(lpm::GLPKMathProgModel)
222204
lp = lpm.inner
223205
m = GLPK.get_num_rows(lp)
224-
lb = Array{Float64}(m)
206+
lb = Array{Float64}(undef, m)
225207
for r = 1:m
226208
l = GLPK.get_row_lb(lp, r)
227209
if l <= -realmax(Float64)
@@ -232,7 +214,7 @@ function getconstrLB(lpm::GLPKMathProgModel)
232214
return lb
233215
end
234216

235-
function setconstrLB!(lpm::GLPKMathProgModel, rowlb)
217+
function MPB.setconstrLB!(lpm::GLPKMathProgModel, rowlb)
236218
lp = lpm.inner
237219
m = GLPK.get_num_rows(lp)
238220
if nonnull(rowlb) && length(rowlb) != m
@@ -267,10 +249,10 @@ function setconstrLB!(lpm::GLPKMathProgModel, rowlb)
267249
GLPK.jl_set_preemptive_check(prev_preemptive_check)
268250
end
269251

270-
function getconstrUB(lpm::GLPKMathProgModel)
252+
function MPB.getconstrUB(lpm::GLPKMathProgModel)
271253
lp = lpm.inner
272254
m = GLPK.get_num_rows(lp)
273-
ub = Array{Float64}(m)
255+
ub = zeros(m)
274256
for r = 1:m
275257
u = GLPK.get_row_ub(lp, r)
276258
if u >= realmax(Float64)
@@ -281,7 +263,7 @@ function getconstrUB(lpm::GLPKMathProgModel)
281263
return ub
282264
end
283265

284-
function setconstrUB!(lpm::GLPKMathProgModel, rowub)
266+
function MPB.setconstrUB!(lpm::GLPKMathProgModel, rowub)
285267
lp = lpm.inner
286268
m = GLPK.get_num_rows(lp)
287269
if nonnull(rowub) && length(rowub) != m
@@ -316,7 +298,7 @@ function setconstrUB!(lpm::GLPKMathProgModel, rowub)
316298
GLPK.jl_set_preemptive_check(prev_preemptive_check)
317299
end
318300

319-
function getconstrmatrix(lpm::GLPKMathProgModel)
301+
function MPB.getconstrmatrix(lpm::GLPKMathProgModel)
320302
lp = lpm.inner
321303
m = GLPK.get_num_rows(lp)
322304
n = GLPK.get_num_cols(lp)
@@ -325,9 +307,9 @@ function getconstrmatrix(lpm::GLPKMathProgModel)
325307
for i in 1:n
326308
nnz += length(colwise[i][1])
327309
end
328-
colptr = Array{Int}(n+1)
329-
rowval = Array{Int}(nnz)
330-
nzval = Array{Float64}(nnz)
310+
colptr = Array{Int}(undef, n+1)
311+
rowval = Array{Int}(undef, nnz)
312+
nzval = Array{Float64}(undef, nnz)
331313
cur_nnz = 1
332314
for i in 1:n
333315
colptr[i] = cur_nnz
@@ -342,18 +324,13 @@ function getconstrmatrix(lpm::GLPKMathProgModel)
342324
end
343325

344326

345-
function getobj(lpm::GLPKMathProgModel)
327+
function MPB.getobj(lpm::GLPKMathProgModel)
346328
lp = lpm.inner
347329
n = GLPK.get_num_cols(lp)
348-
obj = Array{Float64}(n)
349-
for c = 1:n
350-
l = GLPK.get_obj_coef(lp, c)
351-
obj[c] = l
352-
end
353-
return obj
330+
return [GLPK.get_obj_coef(lp, i) for i in 1:n]
354331
end
355332

356-
function setobj!(lpm::GLPKMathProgModel, obj)
333+
function MPB.setobj!(lpm::GLPKMathProgModel, obj)
357334
lp = lpm.inner
358335
n = GLPK.get_num_cols(lp)
359336
if nonnull(obj) && length(obj) != n
@@ -368,7 +345,7 @@ function setobj!(lpm::GLPKMathProgModel, obj)
368345
end
369346
end
370347

371-
function addvar!(lpm::GLPKMathProgModel, rowidx::Vector, rowcoef::Vector, collb::Real, colub::Real, objcoef::Real)
348+
function MPB.addvar!(lpm::GLPKMathProgModel, rowidx::Vector, rowcoef::Vector, collb::Real, colub::Real, objcoef::Real)
372349
if length(rowidx) != length(rowcoef)
373350
error("rowidx and rowcoef have different legths")
374351
end
@@ -394,12 +371,12 @@ function addvar!(lpm::GLPKMathProgModel, rowidx::Vector, rowcoef::Vector, collb:
394371
return
395372
end
396373

397-
function delvars!(lpm::GLPKMathProgModel, idx::Vector)
374+
function MPB.delvars!(lpm::GLPKMathProgModel, idx::Vector)
398375
GLPK.std_basis(lpm.inner)
399376
GLPK.del_cols(lpm.inner, length(idx), idx)
400377
end
401378

402-
function addconstr!(lpm::GLPKMathProgModel, colidx::Vector, colcoef::Vector, rowlb::Real, rowub::Real)
379+
function MPB.addconstr!(lpm::GLPKMathProgModel, colidx::Vector, colcoef::Vector, rowlb::Real, rowub::Real)
403380
if length(colidx) != length(colcoef)
404381
error("colidx and colcoef have different legths")
405382
end
@@ -424,13 +401,13 @@ function addconstr!(lpm::GLPKMathProgModel, colidx::Vector, colcoef::Vector, row
424401
return
425402
end
426403

427-
function delconstrs!(lpm::GLPKMathProgModel, idx::Vector)
404+
function MPB.delconstrs!(lpm::GLPKMathProgModel, idx::Vector)
428405
GLPK.std_basis(lpm.inner)
429406
GLPK.del_rows(lpm.inner, length(idx), idx)
430407
end
431408

432409

433-
function setsense!(lpm::GLPKMathProgModel, sense)
410+
function MPB.setsense!(lpm::GLPKMathProgModel, sense)
434411
lp = lpm.inner
435412
if sense == :Min
436413
GLPK.set_obj_dir(lp, GLPK.MIN)
@@ -441,7 +418,7 @@ function setsense!(lpm::GLPKMathProgModel, sense)
441418
end
442419
end
443420

444-
function getsense(lpm::GLPKMathProgModel)
421+
function MPB.getsense(lpm::GLPKMathProgModel)
445422
lp = lpm.inner
446423
s = GLPK.get_obj_dir(lp)
447424
if s == GLPK.MIN
@@ -453,10 +430,9 @@ function getsense(lpm::GLPKMathProgModel)
453430
end
454431
end
455432

456-
numvar(lpm::GLPKMathProgModel) = GLPK.get_num_cols(lpm.inner)
457-
numconstr(lpm::GLPKMathProgModel) = GLPK.get_num_rows(lpm.inner)
433+
MPB.numvar(lpm::GLPKMathProgModel) = GLPK.get_num_cols(lpm.inner)
434+
MPB.numconstr(lpm::GLPKMathProgModel) = GLPK.get_num_rows(lpm.inner)
458435

459-
getrawsolver(lpm::GLPKMathProgModel) = lpm.inner
436+
MPB.getrawsolver(lpm::GLPKMathProgModel) = lpm.inner
460437

461438
end
462-

0 commit comments

Comments
 (0)