From 1c5ef0e11f246a8650e1c2e748c5a2180cfad42c Mon Sep 17 00:00:00 2001 From: Dimos Tsouros Date: Tue, 19 Sep 2023 13:11:51 +0200 Subject: [PATCH] use of flatlist --- cpmpy/solvers/exact.py | 10 ++++------ cpmpy/solvers/ortools.py | 10 +++------- cpmpy/solvers/pysat.py | 10 +++------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/cpmpy/solvers/exact.py b/cpmpy/solvers/exact.py index ad2e05207..46128cdd0 100644 --- a/cpmpy/solvers/exact.py +++ b/cpmpy/solvers/exact.py @@ -37,6 +37,8 @@ from ..transformations.normalize import toplevel_list from ..expressions.globalconstraints import DirectConstraint from ..exceptions import NotSupportedError +from ..expressions.utils import flatlist + import numpy as np import numbers @@ -589,13 +591,9 @@ def solution_hint(self, cpm_vars, vals): :param vals: list of (corresponding) values for the variables """ - if not hasattr(cpm_vars, "flat"): - cpm_vars = np.array(cpm_vars) - cpm_vars=cpm_vars.flat + cpm_vars = flatlist(cpm_vars) - if not hasattr(vals, "flat"): - vals = np.array(vals) - vals=vals.flat + vals = flatlist(vals) try: pkg_resources.require("exact>=1.1.5") diff --git a/cpmpy/solvers/ortools.py b/cpmpy/solvers/ortools.py index 77f5d9625..c30b7a99b 100644 --- a/cpmpy/solvers/ortools.py +++ b/cpmpy/solvers/ortools.py @@ -32,7 +32,7 @@ from ..expressions.globalconstraints import DirectConstraint from ..expressions.variables import _NumVarImpl, _IntVarImpl, _BoolVarImpl, NegBoolView, boolvar from ..expressions.globalconstraints import GlobalConstraint -from ..expressions.utils import is_num, is_any_list, eval_comparison +from ..expressions.utils import is_num, is_any_list, eval_comparison, flatlist from ..transformations.decompose_global import decompose_in_tree from ..transformations.get_variables import get_variables from ..transformations.flatten_model import flatten_constraint, flatten_objective @@ -521,13 +521,9 @@ def solution_hint(self, cpm_vars, vals): """ self.ort_model.ClearHints() # because add just appends - if not hasattr(cpm_vars, "flat"): - cpm_vars = np.array(cpm_vars) - cpm_vars=cpm_vars.flat + cpm_vars = flatlist(cpm_vars) - if not hasattr(vals, "flat"): - vals = np.array(vals) - vals=vals.flat + vals = flatlist(vals) assert (len(cpm_vars) == len(vals)), "Variables and values must have the same size for hinting" diff --git a/cpmpy/solvers/pysat.py b/cpmpy/solvers/pysat.py index e91975dc0..cc87882e9 100644 --- a/cpmpy/solvers/pysat.py +++ b/cpmpy/solvers/pysat.py @@ -34,7 +34,7 @@ from ..expressions.core import Expression, Comparison, Operator, BoolVal from ..expressions.variables import _BoolVarImpl, NegBoolView, boolvar from ..expressions.globalconstraints import DirectConstraint -from ..expressions.utils import is_any_list, is_int +from ..expressions.utils import is_any_list, is_int, flatlist from ..transformations.decompose_global import decompose_in_tree from ..transformations.get_variables import get_variables from ..transformations.flatten_model import flatten_constraint @@ -316,13 +316,9 @@ def solution_hint(self, cpm_vars, vals): :param vals: list of (corresponding) values for the variables """ - if not hasattr(cpm_vars, "flat"): - cpm_vars = np.array(cpm_vars) - cpm_vars=cpm_vars.flat + cpm_vars = flatlist(cpm_vars) - if not hasattr(vals, "flat"): - vals = np.array(vals) - vals=vals.flat + vals = flatlist(vals) literals = [] for (cpm_var, val) in zip(cpm_vars, vals):