diff --git a/miplearn/__init__.py b/miplearn/__init__.py index 89075f6..5a9de67 100644 --- a/miplearn/__init__.py +++ b/miplearn/__init__.py @@ -3,10 +3,12 @@ # Written by Alinson S. Xavier -from .component import Component +from .components.component import Component +from .components.warmstart import (WarmStartComponent, + KnnWarmStartPredictor, + LogisticWarmStartPredictor) +from .components.branching import BranchPriorityComponent +from .extractors import UserFeaturesExtractor, SolutionExtractor +from .benchmark import BenchmarkRunner from .instance import Instance from .solvers import LearningSolver -from .benchmark import BenchmarkRunner -from .warmstart import WarmStartComponent, KnnWarmStartPredictor, LogisticWarmStartPredictor -from .branching import BranchPriorityComponent -from .extractors import UserFeaturesExtractor, SolutionExtractor \ No newline at end of file diff --git a/miplearn/components/__init__.py b/miplearn/components/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/miplearn/scripts/branchpriority.jl b/miplearn/components/branching.jl similarity index 100% rename from miplearn/scripts/branchpriority.jl rename to miplearn/components/branching.jl diff --git a/miplearn/branching.py b/miplearn/components/branching.py similarity index 96% rename from miplearn/branching.py rename to miplearn/components/branching.py index 70306be..be6c871 100644 --- a/miplearn/branching.py +++ b/miplearn/components/branching.py @@ -2,8 +2,8 @@ # Copyright (C) 2019-2020 Argonne National Laboratory. All rights reserved. # Written by Alinson S. Xavier -from . import Component -from .extractors import Extractor +from .component import Component +from ..extractors import Extractor from abc import ABC, abstractmethod from sklearn.neighbors import KNeighborsRegressor import numpy as np @@ -52,7 +52,7 @@ class BranchPriorityComponent(Component): src_dirname = os.path.dirname(os.path.realpath(__file__)) priority_file = tempfile.NamedTemporaryFile(mode="r") subprocess.run(["julia", - "%s/scripts/branchpriority.jl" % src_dirname, + "%s/branching.jl" % src_dirname, lp_file.name, priority_file.name, str(self.node_limit), diff --git a/miplearn/component.py b/miplearn/components/component.py similarity index 83% rename from miplearn/component.py rename to miplearn/components/component.py index 7ec99f2..1b3f0a8 100644 --- a/miplearn/component.py +++ b/miplearn/components/component.py @@ -6,9 +6,9 @@ from abc import ABC, abstractmethod class Component(ABC): - @abstractmethod - def fit(self, solver): - pass + """ + A Component is an object which adds functionality to a LearningSolver. + """ @abstractmethod def before_solve(self, solver, instance, model): @@ -20,4 +20,8 @@ class Component(ABC): @abstractmethod def merge(self, other): - pass \ No newline at end of file + pass + + @abstractmethod + def fit(self, solver): + pass diff --git a/miplearn/components/tests/__init__.py b/miplearn/components/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/miplearn/tests/test_branching.py b/miplearn/components/tests/test_branching.py similarity index 100% rename from miplearn/tests/test_branching.py rename to miplearn/components/tests/test_branching.py diff --git a/miplearn/tests/test_warmstart.py b/miplearn/components/tests/test_warmstart.py similarity index 100% rename from miplearn/tests/test_warmstart.py rename to miplearn/components/tests/test_warmstart.py diff --git a/miplearn/tests/test_warmstart_knn.py b/miplearn/components/tests/test_warmstart_knn.py similarity index 94% rename from miplearn/tests/test_warmstart_knn.py rename to miplearn/components/tests/test_warmstart_knn.py index a87ed42..0b44aad 100644 --- a/miplearn/tests/test_warmstart_knn.py +++ b/miplearn/components/tests/test_warmstart_knn.py @@ -2,7 +2,7 @@ # Copyright (C) 2019-2020 Argonne National Laboratory. All rights reserved. # Written by Alinson S. Xavier -from miplearn.warmstart import KnnWarmStartPredictor +from miplearn import KnnWarmStartPredictor from sklearn.metrics import accuracy_score, precision_score import numpy as np diff --git a/miplearn/tests/test_warmstart_logistic.py b/miplearn/components/tests/test_warmstart_logistic.py similarity index 97% rename from miplearn/tests/test_warmstart_logistic.py rename to miplearn/components/tests/test_warmstart_logistic.py index 047add0..3631c20 100644 --- a/miplearn/tests/test_warmstart_logistic.py +++ b/miplearn/components/tests/test_warmstart_logistic.py @@ -2,7 +2,7 @@ # Copyright (C) 2019-2020 Argonne National Laboratory. All rights reserved. # Written by Alinson S. Xavier -from miplearn.warmstart import LogisticWarmStartPredictor +from miplearn import LogisticWarmStartPredictor from sklearn.metrics import accuracy_score, precision_score import numpy as np diff --git a/miplearn/warmstart.py b/miplearn/components/warmstart.py similarity index 99% rename from miplearn/warmstart.py rename to miplearn/components/warmstart.py index 2666a33..25dc8b9 100644 --- a/miplearn/warmstart.py +++ b/miplearn/components/warmstart.py @@ -2,8 +2,8 @@ # Copyright (C) 2019-2020 Argonne National Laboratory. All rights reserved. # Written by Alinson S. Xavier -from . import Component -from .extractors import * +from .component import Component +from ..extractors import * from abc import ABC, abstractmethod from copy import deepcopy diff --git a/miplearn/solvers.py b/miplearn/solvers.py index a7e75bb..8ec7ca0 100644 --- a/miplearn/solvers.py +++ b/miplearn/solvers.py @@ -2,8 +2,7 @@ # Copyright (C) 2019-2020 Argonne National Laboratory. All rights reserved. # Written by Alinson S. Xavier -from .warmstart import WarmStartComponent -from .branching import BranchPriorityComponent +from . import WarmStartComponent, BranchPriorityComponent import pyomo.environ as pe import numpy as np from copy import deepcopy diff --git a/miplearn/tests/test_benchmark.py b/miplearn/tests/test_benchmark.py index 37964b5..37a3ed9 100644 --- a/miplearn/tests/test_benchmark.py +++ b/miplearn/tests/test_benchmark.py @@ -2,8 +2,7 @@ # Copyright (C) 2019-2020 Argonne National Laboratory. All rights reserved. # Written by Alinson S. Xavier -from miplearn import LearningSolver, BenchmarkRunner -from miplearn.warmstart import KnnWarmStartPredictor +from miplearn import LearningSolver, BenchmarkRunner, KnnWarmStartPredictor from miplearn.problems.stab import MaxWeightStableSetGenerator from scipy.stats import randint import numpy as np diff --git a/miplearn/tests/test_solver.py b/miplearn/tests/test_solver.py index 6810bcd..a2b7636 100644 --- a/miplearn/tests/test_solver.py +++ b/miplearn/tests/test_solver.py @@ -2,10 +2,8 @@ # Copyright (C) 2019-2020 Argonne National Laboratory. All rights reserved. # Written by Alinson S. Xavier -from miplearn import LearningSolver +from miplearn import LearningSolver, BranchPriorityComponent, WarmStartComponent from miplearn.problems.knapsack import KnapsackInstance -from miplearn.branching import BranchPriorityComponent -from miplearn.warmstart import WarmStartComponent import numpy as np