Skip to content

Commit cb4ea2b

Browse files
authored
Merge pull request #934 from scipopt/get-var-dict-transformed
Add transformed option to getVarDict
2 parents e7bf03c + eae28c6 commit cb4ea2b

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## Unreleased
44
### Added
5+
- Added transformed option to getVarDict, updated test
56
- Added categorical data example
67
- Added printProblem to print problem to stdout
78
- Added stage checks to presolve, freereoptsolve, freetransform

src/pyscipopt/scip.pxi

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3458,17 +3458,22 @@ cdef class Model:
34583458
"""
34593459
return SCIPgetNContVars(self._scip)
34603460

3461-
def getVarDict(self):
3461+
def getVarDict(self, transformed=False):
34623462
"""
34633463
Gets dictionary with variables names as keys and current variable values as items.
34643464
3465+
Parameters
3466+
----------
3467+
transformed : bool, optional
3468+
Get transformed variables instead of original (Default value = False)
3469+
34653470
Returns
34663471
-------
34673472
dict of str to float
34683473
34693474
"""
34703475
var_dict = {}
3471-
for var in self.getVars():
3476+
for var in self.getVars(transformed=transformed):
34723477
var_dict[var.name] = self.getVal(var)
34733478
return var_dict
34743479

tests/test_model.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,14 +244,21 @@ def test_getVarsDict():
244244
x = {}
245245
for i in range(5):
246246
x[i] = model.addVar(lb = -i, ub = i, vtype="C")
247-
for i in range(10,15):
247+
for i in range(5,10):
248248
x[i] = model.addVar(lb = -i, ub = i, vtype="I")
249-
for i in range(20,25):
249+
for i in range(10,15):
250250
x[i] = model.addVar(vtype="B")
251+
252+
model.addConsIndicator(x[0] <= 4, x[10])
251253

254+
model.setPresolve(0)
252255
model.hideOutput()
253256
model.optimize()
254257
var_dict = model.getVarDict()
258+
var_dict_transformed = model.getVarDict(transformed=True)
259+
assert len(var_dict) == model.getNVars(transformed=False)
260+
assert len(var_dict_transformed) == model.getNVars(transformed=True)
261+
255262
for v in x.values():
256263
assert v.name in var_dict
257264
assert model.getVal(v) == var_dict[v.name]

0 commit comments

Comments
 (0)