Skip to content

Commit 4f95ebc

Browse files
committed
Improve Inheritance of Models
1 parent 7e04399 commit 4f95ebc

3 files changed

Lines changed: 9 additions & 24 deletions

File tree

flixopt/features.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
from .config import CONFIG
1313
from .core import NonTemporalData, Scalar, TemporalData, FlowSystemDimensions
1414
from .interface import InvestParameters, OnOffParameters, Piecewise, PiecewiseEffects
15-
from .structure import Submodel, FlowSystemModel, BaseFeatureModel
15+
from .structure import Submodel, FlowSystemModel
1616
from .modeling import ModelingUtilities, ModelingPrimitives, BoundingPatterns
1717

1818
logger = logging.getLogger('flixopt')
1919

2020

21-
class InvestmentModel(BaseFeatureModel):
21+
class InvestmentModel(Submodel):
2222
"""Investment model using factory patterns but keeping old interface"""
2323

2424
def __init__(
@@ -40,7 +40,8 @@ def __init__(
4040
4141
"""
4242
self.piecewise_effects: Optional[PiecewiseEffectsModel] = None
43-
super().__init__(model, label_of_element=label_of_element, parameters=parameters, label_of_model=label_of_model)
43+
self.parameters = parameters
44+
super().__init__(model, label_of_element=label_of_element, label_of_model=label_of_model)
4445

4546
def _do_modeling(self):
4647
super()._do_modeling()
@@ -123,7 +124,7 @@ def is_invested(self) -> Optional[linopy.Variable]:
123124
return self._variables['is_invested']
124125

125126

126-
class OnOffModel(BaseFeatureModel):
127+
class OnOffModel(Submodel):
127128
"""OnOff model using factory patterns"""
128129

129130
def __init__(
@@ -149,7 +150,8 @@ def __init__(
149150
"""
150151
self.on = on_variable
151152
self._previous_states = previous_states
152-
super().__init__(model, label_of_element, parameters=parameters, label_of_model=label_of_model)
153+
self.parameters = parameters
154+
super().__init__(model, label_of_element, label_of_model=label_of_model)
153155

154156
def _do_modeling(self):
155157
super()._do_modeling()

flixopt/modeling.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from .config import CONFIG
99
from .core import NonTemporalData, Scalar, TemporalData, FlowSystemDimensions
10-
from .structure import Submodel, FlowSystemModel, BaseFeatureModel
10+
from .structure import Submodel, FlowSystemModel
1111

1212
logger = logging.getLogger('flixopt')
1313

flixopt/structure.py

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -912,26 +912,9 @@ def hours_per_step(self):
912912
return self._model.hours_per_step
913913

914914
def _do_modeling(self):
915-
"""Template method"""
915+
"""Called at the end of initialization. Override in subclasses to create variables and constraints."""
916916
pass
917917

918-
919-
class BaseFeatureModel(Submodel):
920-
"""Minimal base class for feature models that use factory patterns"""
921-
922-
def __init__(self, model: FlowSystemModel, label_of_element: str, parameters, label_of_model: Optional[str] = None):
923-
"""Initialize the BaseFeatureModel.
924-
Args:
925-
model: The FlowSystemModel that is used to create the model.
926-
label_of_element: The label of the parent (Element). Used to create shares.
927-
label_of_model: The label of the model. Used as a prefix in all variables and constraints.
928-
Defaults to {label_of_element}|{self.__class__.__name__}
929-
parameters: The parameters of the feature model.
930-
"""
931-
self.parameters = parameters
932-
super().__init__(model, label_of_element, label_of_model or f'{label_of_element}|{self.__class__.__name__}')
933-
934-
935918
class ElementModel(Submodel):
936919
"""Stores the mathematical Variables and Constraints for Elements"""
937920

0 commit comments

Comments
 (0)