Skip to content

Commit

Permalink
Add transformed option to getVarDict
Browse files Browse the repository at this point in the history
  • Loading branch information
Joao-Dionisio committed Dec 9, 2024
1 parent 6cc9ccc commit 05df966
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Unreleased
### Added
- Added transformed option to getVarDict, updated test
- Added categorical data example
- Added printProblem to print problem to stdout
- Added stage checks to presolve, freereoptsolve, freetransform
Expand Down
9 changes: 7 additions & 2 deletions src/pyscipopt/scip.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -3458,17 +3458,22 @@ cdef class Model:
"""
return SCIPgetNContVars(self._scip)

def getVarDict(self):
def getVarDict(self, transformed=False):
"""
Gets dictionary with variables names as keys and current variable values as items.
Parameters
----------
transformed : bool, optional
Get transformed variables instead of original (Default value = False)
Returns
-------
dict of str to float
"""
var_dict = {}
for var in self.getVars():
for var in self.getVars(transformed=transformed):
var_dict[var.name] = self.getVal(var)
return var_dict

Expand Down
11 changes: 9 additions & 2 deletions tests/test_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,14 +244,21 @@ def test_getVarsDict():
x = {}
for i in range(5):
x[i] = model.addVar(lb = -i, ub = i, vtype="C")
for i in range(10,15):
for i in range(5,10):
x[i] = model.addVar(lb = -i, ub = i, vtype="I")
for i in range(20,25):
for i in range(10,15):
x[i] = model.addVar(vtype="B")

model.addConsIndicator(x[0] <= 4, x[10])

model.setPresolve(0)
model.hideOutput()
model.optimize()
var_dict = model.getVarDict()
var_dict_transformed = model.getVarDict(transformed=True)
assert len(var_dict) == model.getNVars(transformed=False)
assert len(var_dict_transformed) == model.getNVars(transformed=True)

for v in x.values():
assert v.name in var_dict
assert model.getVal(v) == var_dict[v.name]
Expand Down

0 comments on commit 05df966

Please sign in to comment.